Поиск строки с заданным параметром - 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++;
}

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

В данном коде выполняется поиск строки с заданным параметром. Вот список действий, которые происходят в коде:

  1. Переменная i инициализируется значением 0.
  2. Переменная ok инициализируется значением true.
  3. Первый вложенный цикл начинается. Он будет выполняться до тех пор, пока значение переменной j меньше значения переменной m и значение переменной ok равно true.
  4. Второй вложенный цикл начинается. Он будет выполняться до тех пор, пока значение переменной j2 больше или равно 0 и значение переменной ok равно true.
  5. Значение переменной ok устанавливается равным результату сравнения элементов массива arr[i][j] и arr[i][j2].
  6. Если значение переменной ok равно true, то переменная k увеличивается на 1.
  7. После завершения второго вложенного цикла, значение переменной ok устанавливается равным true.
  8. После завершения первого вложенного цикла, значение переменной i увеличивается на 1.
  9. Цикл начинается снова с шага 3. В итоге, после выполнения всех итераций, в переменной k будет храниться количество строк, которые содержат заданный параметр.

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


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

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

11   голосов , оценка 3.909 из 5
Похожие ответы