Переписать в C из Pascal - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. const n=6;
  2. m=5;
  3. var b,c:array[1..n] of integer;
  4. a:array[1..m,1..n] of integer;
  5. i,j,k,t:integer;
  6. begin
  7. clrscr;
  8. randomize;
  9. writeln('Massiv B:');
  10. for i:=1 to n do
  11. begin
  12. b[i]:=i;
  13. write(b[i],' ');
  14. end;
  15. writeln;
  16. writeln;
  17. writeln('Matrica A:');
  18. for i:=1 to m do
  19. begin
  20. for j:=1 to n do
  21. begin
  22. a[i,j]:=random(15);
  23. write(a[i,j]:4);
  24. end;
  25. writeln;
  26. end;
  27. i:=1; //берем очередное число из массмва В
  28. repeat
  29. t:=0;
  30. for j:=1 to m do
  31. for k:=1 to n do
  32. if a[j,k]=b[i] then //если встречаем его в маирице
  33. begin
  34. inc(t); //считаем
  35. c[t]:=j; //записываем в массив номер строки
  36. end;
  37. if (t>1)and(c[1]<>c[t])then writeln('Chislo ',b[i],' > 1 stroki');//если число более одного раза и номера строк в массиве разные, выводим сообщение
  38. inc(i); //переходим к следующему числу
  39. until i>n; //если массив закончился, завершаем
  40. readln
  41. end.

Решение задачи: «Переписать в C из Pascal»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define N 6
  6. #define M 5
  7.  
  8. int main(void)
  9. {
  10.     int a[M][N], b[N], c[N];
  11.     int i, j, k, t;
  12.    
  13.     srand((unsigned)time(NULL));
  14.     printf("Massiv B:\n");
  15.     for (i = 0; i < N; ++i)
  16.     {
  17.         b[i] = i;
  18.         printf("%d ", b[i]);
  19.     }
  20.     printf("\n\n");
  21.     printf("Matrica A:\n");
  22.     for (i = 0; i < N; ++i)
  23.     {
  24.         for (j = 0; j < M; ++j)
  25.         {
  26.             a[i][j] = rand() % 15;
  27.             printf("%4d", a[i][j]);
  28.         }
  29.         printf("\n");
  30.     }
  31.     i = 0;
  32.     do
  33.     {
  34.         t = -1;
  35.         for (j = 0; j < M; ++j)
  36.             for (k = 0; k < N; ++k)
  37.                 if (a[j][k] == b[i])
  38.                 {
  39.                     ++t;
  40.                     c[t] = j;
  41.                 }
  42.         if (t > 0 && c[0] != c[t])
  43.             printf("Chislo %d > 1 stroki\n", b[i]);
  44.         ++i;
  45.     } while (i < N);
  46.     getchar();
  47.    
  48.     return 0;
  49. }

Объяснение кода листинга программы

  1. Объявлены массивы a[M][N], b[N], c[N] для хранения данных.
  2. Выполняется инициализация генератора случайных чисел.
  3. Значения массива b[N] заполняются числами от 0 до N-1.
  4. Значения матрицы a[N][M] заполняются случайными числами от 0 до 15.
  5. Цикл do-while используется для поиска количества вхождений каждого числа из массива b[N] в матрицу a[N][M].
  6. В каждой итерации цикла do-while происходит поиск первого вхождения числа i из массива b[N] в матрице a[N][M].
  7. Если число i встречается в матрице a[N][M] более одного раза, то выводится сообщение Chislo i > 1 stroki.
  8. После каждой итерации цикла do-while значение i увеличивается на единицу.
  9. В конце программы требуется ввод символа для завершения работы программы.
  10. Возвращается 0, что означает успешное завершение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут