Найти самый маленький элемент в массиве, где ошибка? - C (СИ)

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

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

Найти самый маленький элемент в массиве Х не входящий в массив У
#include <stdio.h>
#include <conio.h>
int main()
{
    int i,n,j,m,k=0,min;
    int x[100],y[100],c[100];
    scanf("%d",&n);
    scanf("%d",&m);
    for (i=0;i<n;i++)
    scanf("%d",&x[i]);
    for (j=0;j<m;j++)
    scanf("%d",&y[j]);
    for (i=0;i<n;i++)
    {
        for (j=0;j<m;j++)
        {
            if (x[i]!=y[j])
            {
            c[k]=x[i];
            k++;
            }
         }
    }
    min=c[0];
    for (k=0;k<3;k++)
    {
        if (min>c[k])
        min=c[k];
    }
    printf("%d",min);
    getch();
    return 0;
}

Решение задачи: «Найти самый маленький элемент в массиве, где ошибка?»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
 
int main()
{
        int i,n,j,m,k=0;
        int min=32767;
        int finded;
        int x[100],y[100],c[100];
        printf("\n == Razmernost massivov ==");
        printf("\nN=");  scanf("%d",&n);
        printf("\nM=");  scanf("%d",&m);
        
        printf("\n == Massiv X ==");
        for (i=0;i<n;i++) {
        printf("\nEl # %d=",i);  scanf("%d",&x[i]);
        }
        
        printf("\n == Massiv Y =="); 
        for (j=0;j<m;j++){
        printf("\nEl # %d=",i);  scanf("%d",&y[j]);
        }
        
       int p=0; 
        
        for (i=0;i<n;i++) 
          if (x[i]<min) 
          {
           finded=0;        
           for (j=0;j<m;j++) if (y[j]==x[i]) finded=1;
           if (finded==0) {min=x[i]; p=1;} 
          }
          
      
        
       if (!p) printf("Net min!");
       else printf("min = %d",min);
       getch();
    
        return 0;
}

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

  1. Предполагаемая ошибка в коде: Возможно, в коде есть ошибка в условии проверки нахождения минимального элемента в массиве. Причина может быть в неправильном определении переменной finded перед циклом, которая должна быть инициализирована как 1, а не 0. Это может привести к тому, что код не будет находить минимальный элемент, если он присутствует в массиве y.
  2. Пояснение к коду:
    • Строки 1-14: Ввод размеров массивов n и m с помощью функции scanf().
    • Строки 15-28: Ввод элементов массива x с помощью функции scanf().
    • Строки 29-42: Ввод элементов массива y с помощью функции scanf().
    • Строки 43-62: Поиск минимального элемента в массиве x. Если элемент x[i] меньше текущего минимального значения min, то проверяется, есть ли такой же элемент в массиве y. Если такого элемента нет, то min обновляется, и finded устанавливается в 1. Если finded остается 0, значит, минимальный элемент найден.
    • Строки 63-66: Проверка, был ли найден минимальный элемент. Если нет, выводится сообщение Net min!. В противном случае выводится значение min.
    • Строка 67: Использование функции getch() для приостановки выполнения программы до тех пор, пока пользователь не нажмет клавишу.
    • Строка 68: Возврат значения 0, что означает успешное завершение программы.

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


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

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

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