Вывести номер предпоследнего положительного элемента из одномерного массива - C (СИ)
Формулировка задачи:
Нада вывести номер предпоследнего положительного элемента из одномерного массива
Решение задачи: «Вывести номер предпоследнего положительного элемента из одномерного массива»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int *arr, N, count = 0;
printf ("N = ");
scanf ("%d", &N);
arr = (int *) malloc (N * sizeof (int));
printf ("Array: ");
for (int i = 0; i < N; i ++)
{
arr [i] = -5 + rand () % 10;
printf ("%d ", arr [i]);
}
for (i = N - 1; i > -1; i --)
if (arr [i] > 0)
{
count ++;
if (count == 2)
{
printf ("\nIndex: %d\n", i);
break;
}
}
if (count < 2)
printf ("\nNo two positive elements\n");
free (arr);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
N- для хранения количества элементов в массиве;arr- для хранения адреса начала массива;count- для подсчета количества положительных элементов.
- Задается размер массива
Nс помощью функцииscanf(). - Выделяется память под массив с помощью функции
malloc(). - В цикле
forзаполняется массив случайными значениями от -5 до 5 с шагом 1. - В цикле
forначиная с предпоследнего элемента проверяется, является ли элемент положительным. - Если элемент положительный, увеличивается счетчик
count. - При достижении значения
countравного 2, выводится индекс последнего положительного элемента и из цикла выходится с помощью оператораbreak. - Если после прохода по всем элементам массива значение
countменьше 2, выводится сообщение об отсутствии двух положительных элементов. - Выполняется функция
free(), освобождающая память, выделенную под массив. - Возвращается 0, что означает успешное выполнение программы.