Поиск строки с заданным параметром - C (СИ)
Формулировка задачи:
Помогите найти ошибку в коде.
задание описано ниже.
Код вроде неплох, но работает не всегда (
#include <stdio.h> #include <stdlib.h> #include <windows.h> #include <time.h> /** Дана целочисленная матрица размера M * N. Найти количество ее строк, все элементы которых различны. **/ int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); srand(time(NULL)); int n,m,i,j,k,t,z; printf("Введи количество строк матрицы : "); scanf("%d",&m); printf("Введи количество столбцов матрицы : "); scanf("%d",&n); int arr[m][n]; k=0; t=0; printf("Исходная матрица размером %d*%d :\n",m,n); for (i=0;i<m;i++) { for (j=0;j<n;j++) { arr[i][j]=1+rand()%9; printf("%d ",arr[i][j]); } printf("\n"); } for (i=0;i<m;i++) { for (j=0;j<n-1;j++) { for (z=n-1;z>j;z--) { if (arr[i][j] == arr[i][j+z]) {k++;} } } if (k==0) { t++; } //printf("\n"); //printf("%d ",k); k=0; } printf("Количество строк матрицы все элементы которой различны : %d ",t); return 0; }
Решение задачи: «Поиск строки с заданным параметром»
textual
Листинг программы
for(i=0;i<m;i++){ bool ok=true; for(j=1;j<m && ok;j++) for(int j2=j-1;j2>=0;j2--) ok=(arr[i][j]==arr[i][j2]); if(ok) k++; }
Объяснение кода листинга программы
В данном коде выполняется поиск строки с заданным параметром. Вот список действий, которые происходят в коде:
- Переменная
i
инициализируется значением 0. - Переменная
ok
инициализируется значением true. - Первый вложенный цикл начинается. Он будет выполняться до тех пор, пока значение переменной
j
меньше значения переменнойm
и значение переменнойok
равно true. - Второй вложенный цикл начинается. Он будет выполняться до тех пор, пока значение переменной
j2
больше или равно 0 и значение переменнойok
равно true. - Значение переменной
ok
устанавливается равным результату сравнения элементов массиваarr[i][j]
иarr[i][j2]
. - Если значение переменной
ok
равно true, то переменнаяk
увеличивается на 1. - После завершения второго вложенного цикла, значение переменной
ok
устанавливается равным true. - После завершения первого вложенного цикла, значение переменной
i
увеличивается на 1. - Цикл начинается снова с шага 3.
В итоге, после выполнения всех итераций, в переменной
k
будет храниться количество строк, которые содержат заданный параметр.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д