Студентам с лабораторными сюда (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 20 Jun 2007.

Thread Status:
Not open for further replies.
  1. elusive.light

    elusive.light New Member

    Joined:
    29 Nov 2009
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    3. В киоске продается растворимый кофе, предлагается ассортимент из трех известных кофейных торговых марок (названия на ваш выбор), а также варианты приготовления – полный стакан / половина стакана, от 0 до 2 ложек сахара. Сделайте объявление структуры данных, моделирующей заказ кофе. При этом для кода торговой марки обязательно применить конструкцию enum, а информацию о количестве воды и ложек сахара следует запаковать при помощи битовых полей в один байт. Нужно составить тестовую программу, использующую такую структуру. :confused:
     
  2. elusive.light

    elusive.light New Member

    Joined:
    29 Nov 2009
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Есть еще прога, но она не из лёгких, и я заранее благодорю любого, кто хоть чем-то поможет ;)

    Имеется структура данных DynamicArray для динамического массива целых чисел.
    Code:
    struct DynamicArray 
    { /* Память для хранения значений массива */ 
          int* m_ArrayData;  
       /* Объем выделенной памяти (в ячейках массива) */ 
          int m_ArrayCapacity; 
       /* Количество ячеек фактически занятых массивом */                                                    
          int m_ArrayCurrentSize; 
    };
    
    Динамический массив – это структура данных для хранения элементов в последовательности нефиксированного размера, которая самостоятельно следит за объемом выделенной памяти по мере добавления элементов. Динамический массив выделяет память с небольшим запасом для будущих элементов. Если места в массиве больше нет, а пользователь продолжает добавлять элементы в массив, то структура данных автоматически выделяет вдвое больший блок, чем было выделено ранее. Подобная идея лежит в основе популярного контейнера std::vector в C++. Разработайте следующие вспомогательные функции, а также тестовую программу, использующую функции (сначала идет прототип функции, а потом ее предназначение):
    Code:
    void DynamicArrayInit ( struct DynamicArray* _pArray, int _initialSize );
    Инициализирует динамический массив – выделяет необходимый объем памяти. устанавливает занятый начальный размер, который не может быть отрицательным

    Code:
    void DynamicArrayDestroy ( struct DynamicArray* _pArray );
    Освобождает память, занятую массивом

    Code:
    int DynamicArrayGetCellValue ( const struct DynamicArray* _pArray, int _cellIndex );
    Возвращает текущее значение в интересующей ячейке. Индекс не может быть вне интервала [0 : m_ArrayCurrentSize - 1)

    Code:
    void DynamicArraySetCellValue ( struct DynamicArray* _pArray, int _cellIndex, int _newValue );
    Устанавливает текущее значение в интересующей ячейке. Индекс не может быть вне интервала [0 : m_ArrayCurrentSize - 1)
    Code:
    void DynamicArrayPushBackValue ( struct DynamicArray* _pArray, int _newValue );
    Добавляет новое значение в конец массива. Если зарезервированная память еще осталась, использует ее для хранения нового данного. Если больше резервов нет, выделяет вдвое больший блок, мигрирует данные из старого блока, освобождает старый блок, а новое значение дописывает в ячейке сразу после старых

    Code:
    void DynamicArrayPopBackValue ( struct DynamicArray* _pArray );
    Освобождает массив от последнего записанного данного. Не допускается, чтобы массив был пуст на момент вызова операции

    Code:
    int DynamicArrayBack ( const struct DynamicArray* _pArray );
    Возвращает последнее хранимое в массиве значение. Не допускается, чтобы массив был пуст на момент вызова операции

    Code:
    void DynamicArrayResize ( struct DynamicArray* _pArray, int _newSize );
    Изменяет число занятых элементов в массиве. Если новый размер меньше или равен старому, изменение влияет лишь на счетчик внутри массива. Если же новый размер больше старого, потребуется выделение памяти аналогично алгоритму в функции DynamicArrayPushBackValue

    Code:
    void DynamicArrayReserve ( struct DynamicArray* _pArray, int _newCapacity );
    Выполняет принудительное резервирование памяти для будущих элементов. Если новый размер резерва меньше или равен старому, вызов функции игнорируется. Если новый размер резерва больше старого, необходимо повторное выделение блока аналогично DynamicArrayPushBackValue
     
  3. tester_on

    tester_on New Member

    Joined:
    4 Dec 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Помогите решить задачку из лабараторной по C++

    Вычислить f=cos(2 в квадрате)x на отрезке [-2; 5] с шагом 0,15. Найти сумму всех f > a*2
     
    #2043 tester_on, 24 Dec 2009
    Last edited: 24 Dec 2009
  4. Wesley

    Wesley New Member

    Joined:
    15 Dec 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    помогите плиииз! написать программу на паскале:
    упорядочить матрицу А[6,6] по элементам третьей строки.
     
  5. Alexey2

    Alexey2 New Member

    Joined:
    30 May 2009
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Помогите исправить ошибки..Нужно инвертировать матрицу относительно побочной диагонали... Язык c.
    Code:
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define RND (rand()%100-50)
    
    int vvod_hand(int strok, int stolb,int massiv[50][50])
    {int i; int j;char buffer[100];
    {for(i=1; i<=strok; i++)
    {for(j=1; j<=stolb; j++) 
    {printf("massiv[%d][%d]= ",i,j);
    fgets(buffer,10,stdin);
    massiv[i][j]=atoi(buffer);         
    }}} 
    }
    
    int vvod_rand(int strok, int stolb,int massiv[50][50])
    {int i; int j;
    {for(i=1; i<=strok; i++)
    for(j=1; j<=stolb; j++) 
    massiv[i][j]=rand()%50;          
    }    
    }
    
    int vivod(int strok, int stolb,int massiv[50][50])
    {int i; int j;
        {for(i=1; i<=strok; i++)
    {
    {for(j=1; j<=stolb; j++) 
    printf("%d ",massiv[i][j]);
    }
    printf("\n");}
    }
    }
    
    main(int argc, char*argv[])
    {int  a, b, i, x, kol_vo, strok, stolb, j, p;
     int massiv[50][50];
    char buffer[100]; 
    
    srand (time (NULL));
    
    if (argc<3) 
    {puts("programma vvivodit massiv");
    puts("vvedite ./labor4 kol_vo strok kol_vo stolbcov sposob vvoda <klava/rand>");
    }
    
    strok=atoi(argv[1]);
    if (strok<1 || strok>50) 
    {puts("kol-vo strok >1 no <100");
    getchar(); exit(0);}
    
    stolb=atoi(argv[2]); 
    if (stolb<1 || stolb>50) 
    {puts("kol-vo stolbcov >1 no <100");
    getchar(); exit(0);}
    
    if(strcmp(argv[3], "klava")==0)
    vvod_hand(strok,stolb,massiv);       
           
    else                 
    vvod_rand(strok,stolb,massiv);
    
    printf("\n");
    printf("Massiv: \n");
    vivod(strok,stolb,massiv);
    
    
    
        //invertirovanie
        for(i=1;i<=strok/2;i++)
        {
            for(j=1;j<=stolb/2;j++)
            {
                if(j<stolb-i-1)//tolko elementy nad pobochnoy diagonalyu
                            
                   
                    massiv[i][j] = massiv[strok][stolb-j];//i menyaem
                  
                
            }
        }
        //vyvodim na ekran
        printf("Inverted matrix: \n");
        for(i=1;i<=strok;i++)
        {
            for(j=1;j<=stolb;j++)
            {
                printf("%i  ",massiv[i][j]);
            }
            printf("\n");
        }
           
    getchar();
    exit(0);
          } 
    
     
  6. Nelson17

    Nelson17 New Member

    Joined:
    3 Dec 2008
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Дана целочисленная матрица размера m на n. Размер матрицы задается динамически во время выполнения программы. Для хранения элементов матрицы использовать динамическое выделение памяти. Матрица заполняется случайными числами в диапазоне от -50 до 50. Используя алгоритм пузырьковой сортировки отсортировать элементы каждой четной строки по возрастанию, а нечетную - по убыванию. Заполнение матрицы случайными числами, сортировку элементов строк матрицы и вывод матрицы на экран организовать в виде функции.
    Задание вроде не сильное с первого взгляда, но написать не могу. Помогите по-возможности. С++

    Точно в С++! Создать два файла сpp и заголовочный файл. Написать отдельную функцию, которая сортирует.
    Пожалуйста помогите, уже просто срок совсем поджал! Заранее благодарен
     
  7. P.A.U.L

    P.A.U.L New Member

    Joined:
    12 Aug 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    [PASCAL]

    Помогите плз доделать лабу...

    В коде чего то не хватает для нормальной работы программы, но только понять не могу чего...

    Здача:
    Составить функцию, которая возвращает значение 0, если в последовательности целых чисел а1,а2,...аn отсутствуют три соседних нечетных числа, или номер первого числа встретившейся тройки таких чисел...

    Код:

    Code:
    program proverka;
    uses crt;
    const n=10;
    var c,i:integer;
    
    function proverk (var a:array of integer):integer;
      var i,j:integer;
      begin
        for i:=1 to n-2 do
          if b[i] mod 2 <> 0 then
    	if b[i+1] mod 2 <> 0 then
    	  if b[i+2] mod 2 <> 0 then
    	    begin
    	     proverk:=i;
    	     exit;
    	    end;
          proverk:=0;
      end;
    begin
     clrscr;
      for i:= 1 to n do begin
      readln(a[i]);
      c:=proverk(a[i]);
      write('   ',c);
      writeln;
      end;
    end.
     
  8. n1ghtstalker

    n1ghtstalker Elder - Старейшина

    Joined:
    28 Sep 2008
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0
    во первых зачем тебе n? если она у тебя константового типа и =10 .
    во вторых откуда взялся массив b?
    при том надо прописать случай else.
    при том в основном варе не объявлен массив , то что он присутсвует в функции это не значит
    что он будет в основной программе.

    ps мне интересно каким образом ты эту программу компилировал и таких косяков не нашёл?
     
    #2048 n1ghtstalker, 24 Dec 2009
    Last edited: 24 Dec 2009
  9. P.A.U.L

    P.A.U.L New Member

    Joined:
    12 Aug 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    n1ghtstalker, ой сорь, чтот я затупил с кодом, видать не сохранил переделанную, а скинул код совсем сырой...

    Функция данной задачи должна вроде выглядеть так, а как ее впихнуть в саму программу чет не догоняю, не оч дружу с функциями.
    Если тебе не сложно помоги доделать ее по условию задачи... :)

    Code:
    function proverk (a:array[1..n] of integer):integer;
      var
        i,j:integer;
      begin
        for i:=1 to n-2 do
          if a[i] mod 2 <> 0 then
            if a[i+1] mod 2 <> 0 then
              if a[i+2] mod 2 <> 0 then
                begin
                  proverk:=i;
                  exit;
                end;
          proverk:=0;
      end;
     
  10. n1ghtstalker

    n1ghtstalker Elder - Старейшина

    Joined:
    28 Sep 2008
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0
    ты читал мои комментарии? где случай else??
    у тебя после всех проверок сначала присваивается значение i , а в конце концов 0 .

    + номер первого числа встретившейся тройки таких чисел... ??? WTF?
    скинь всё условие.
    при том соседними для к примеру для 4 являются 1,2,3 так и 5,6,7.
     
    #2050 n1ghtstalker, 24 Dec 2009
    Last edited: 24 Dec 2009
  11. Algol

    Algol New Member

    Joined:
    29 May 2002
    Messages:
    1,759
    Likes Received:
    4
    Reputations:
    0
    P.A.U.L, просто ради интереса, ты на каком факультете учишся ?
     
  12. Algol

    Algol New Member

    Joined:
    29 May 2002
    Messages:
    1,759
    Likes Received:
    4
    Reputations:
    0
    Да не, в функции у него все относительно нормально :)
     
  13. n1ghtstalker

    n1ghtstalker Elder - Старейшина

    Joined:
    28 Sep 2008
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0
    ну ты посмотри по шагам, оно и выходит относительно. оно значения i элемента не даст.а вернёт 0. после всех циклов допустим proverk=5;
    потом ей же значение 0....
    мож это эконом какой нибудь?)
     
  14. Algol

    Algol New Member

    Joined:
    29 May 2002
    Messages:
    1,759
    Likes Received:
    4
    Reputations:
    0
    В паскале exit это выход из процедуры. Ты видимо путаешь с break в си :)
     
  15. P.A.U.L

    P.A.U.L New Member

    Joined:
    12 Aug 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Если поможете буду оч признателен...
     
    #2055 P.A.U.L, 24 Dec 2009
    Last edited: 25 Dec 2009
  16. Retimiled

    Retimiled Banned

    Joined:
    23 Dec 2009
    Messages:
    110
    Likes Received:
    17
    Reputations:
    0
    да и судя по задаче ...препод хотел увидеть рекурсию... ИМХО!


    .... for-ы могут оказаться на трояк!
     
  17. Algol

    Algol New Member

    Joined:
    29 May 2002
    Messages:
    1,759
    Likes Received:
    4
    Reputations:
    0
    Зачем там рекурсия? Там итеративно решить можно, я даж недавно тут пример где-то приводил...
     
  18. Retimiled

    Retimiled Banned

    Joined:
    23 Dec 2009
    Messages:
    110
    Likes Received:
    17
    Reputations:
    0
    int check(int *a,int n) // взорви моск препода
    {
    for(i=0;i<n-2;i++)
    if((a & 1)+(a[i+1] & 1)+(a[i+2] & 1)==3)
    return a;
    return 0;
    }
     
  19. tester_on

    tester_on New Member

    Joined:
    4 Dec 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Не кто?
     
  20. Retimiled

    Retimiled Banned

    Joined:
    23 Dec 2009
    Messages:
    110
    Likes Received:
    17
    Reputations:
    0
    ... задачки слишком простые для пользователя АНТИЧАТА! (подумайте об этом)

    Code:
    #include <stdio.h>
    #include <math.h>
    int main()
    {
      float i,f,a;
      float sum;
      printf("\r\nВведите а:");
      scanf("%f",&a);
      for(i=-2,sum=0;i<5;i+=0.15)
      {
        f=fcos(i)^2;
        if(f>a*2)
          sum+=f;
       }
     printf(\r\nРезультат:%f",sum);
     return 0;
    }
     
    #2060 Retimiled, 25 Dec 2009
    Last edited: 25 Dec 2009
Thread Status:
Not open for further replies.