Найти номер первого минимального элемента среди положительных элементов, размещенных правее первого 0 - C (СИ)

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

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

Найти номер первого минимального элемента среди положительных элементом размещених правее первого элемента равного нулю. Никак не получается найти именно после нуля. Так нахожу минимальный среди положительных
#include <stdio.h>
#include <conio.h>
 
int main()
{
    int min, max, A[10],i, i_min;
 
    printf("Enter the 10 natural numbers:\n");
    for ( i = 0; i < 10; i++)
    {
        printf("Enter% i", i + 1);
        printf(" element: ");
        scanf("%i", &A[i]);
    }

    for ( i = 0; i < 10; i++)
    {
        if (A[i] < min && A[i] > 0)
        min = A[i];
    }
    for ( i = 0; i < 10; i++)
        {
        if (min == A[i])
                printf ("Nomer of the minimum element among the positive:%i\n", i+1);
 
         }
    printf("The minimum element among the positive: %i", min) ;

    getch();
    return 0;
}
А вот это попытка после нуля
#include <stdio.h>
#include <conio.h>

int main()
{
    int min, max, A[10],i,k;
 
    printf("Enter the 10 natural numbers:\n");
    for ( i = 0; i < 10; i++)
    {
        printf("Enter% i", i + 1);
        printf(" element: ");
        scanf("%i", &A[i]);
    }
 
    for ( i = 0; i < 10; i++)
        {
                if(A[i] == 0)
                i = k;
        }
    for ( i = k+1; i < 10; i++)
    {
        if (A[i] < min && A[i] > 0 )
        min = A[i];
    }
    for ( i = k+1; i < 10; i++)
        {
        if (min == A[i])
                printf ("Number of the minimum element among the positive:%i\n", i+1);
         }
    printf("The minimum element among the positive: %i", min) ;
 
    getch();
    return 0;
}
Выводит минимальный но до нуля и номер го не выводит вовсе. В чем ошибка?Заранее спасибо

Решение задачи: «Найти номер первого минимального элемента среди положительных элементов, размещенных правее первого 0»

textual
Листинг программы
    int min=9999999, max, A[10]={1,2,3,0,54,5,6,7,8,9},i, i_min,iZero=-1;
 
    printf("Enter the 10 natural numbers:\n");
    for ( i = 0; i < 10; i++)
    {
        printf(" %i", A[i]);
        if(iZero<0 && A[i]==0) iZero=i;
    }
 if(iZero<0) printf("No No No..."); else {
    for ( i = iZero+1; i < 10; i++)
    {
        if (A[i] < min && A[i] > 0)
        min = A[i];
    }
 
    printf("\nThe minimum element among the positive: %i", min) ;
 }

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

  1. Ввод массива A с помощью цикла for. Значения массива выводятся на экран с помощью функции printf.
  2. Переменная iZero инициализируется значением -1. Она используется для хранения индекса первого вхождения 0 в массив A.
  3. Цикл for используется для поиска первого вхождения 0 в массив A. Если 0 найден, то индекс этого элемента сохраняется в переменной iZero.
  4. Если после прохода по всем элементам массива iZero остается равным -1, то выводится сообщение No No No....
  5. В противном случае, начинается поиск первого положительного элемента, меньшего чем текущее значение переменной min.
  6. Если такой элемент найден, то его значение присваивается переменной min.
  7. После прохода по всем элементам массива, выводится сообщение с найденным значением переменной min.

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


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

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

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