Переписать в C из Pascal - C (СИ)
Формулировка задачи:
const n=6;
m=5;
var b,c:array[1..n] of integer;
a:array[1..m,1..n] of integer;
i,j,k,t:integer;
begin
clrscr;
randomize;
writeln('Massiv B:');
for i:=1 to n do
begin
b[i]:=i;
write(b[i],' ');
end;
writeln;
writeln;
writeln('Matrica A:');
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(15);
write(a[i,j]:4);
end;
writeln;
end;
i:=1; //берем очередное число из массмва В
repeat
t:=0;
for j:=1 to m do
for k:=1 to n do
if a[j,k]=b[i] then //если встречаем его в маирице
begin
inc(t); //считаем
c[t]:=j; //записываем в массив номер строки
end;
if (t>1)and(c[1]<>c[t])then writeln('Chislo ',b[i],' > 1 stroki');//если число более одного раза и номера строк в массиве разные, выводим сообщение
inc(i); //переходим к следующему числу
until i>n; //если массив закончился, завершаем
readln
end.Решение задачи: «Переписать в C из Pascal»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 6
#define M 5
int main(void)
{
int a[M][N], b[N], c[N];
int i, j, k, t;
srand((unsigned)time(NULL));
printf("Massiv B:\n");
for (i = 0; i < N; ++i)
{
b[i] = i;
printf("%d ", b[i]);
}
printf("\n\n");
printf("Matrica A:\n");
for (i = 0; i < N; ++i)
{
for (j = 0; j < M; ++j)
{
a[i][j] = rand() % 15;
printf("%4d", a[i][j]);
}
printf("\n");
}
i = 0;
do
{
t = -1;
for (j = 0; j < M; ++j)
for (k = 0; k < N; ++k)
if (a[j][k] == b[i])
{
++t;
c[t] = j;
}
if (t > 0 && c[0] != c[t])
printf("Chislo %d > 1 stroki\n", b[i]);
++i;
} while (i < N);
getchar();
return 0;
}
Объяснение кода листинга программы
- Объявлены массивы a[M][N], b[N], c[N] для хранения данных.
- Выполняется инициализация генератора случайных чисел.
- Значения массива b[N] заполняются числами от 0 до N-1.
- Значения матрицы a[N][M] заполняются случайными числами от 0 до 15.
- Цикл do-while используется для поиска количества вхождений каждого числа из массива b[N] в матрицу a[N][M].
- В каждой итерации цикла do-while происходит поиск первого вхождения числа i из массива b[N] в матрице a[N][M].
- Если число i встречается в матрице a[N][M] более одного раза, то выводится сообщение
Chislo i > 1 stroki. - После каждой итерации цикла do-while значение i увеличивается на единицу.
- В конце программы требуется ввод символа для завершения работы программы.
- Возвращается 0, что означает успешное завершение программы.