Найти сумму элементов массива, расположенных между первым и вторым отрицательным элементом - C (СИ)
Формулировка задачи:
Массив динамический. Пользователь сам задаёт размерность. Все элементы массива вещественные числа.
Написал вот такую программку. Увы не доконца. Не могу понять как сделать 2 и 3 пункт.
Задание следующие:
1.Найти номер минимального элемента массива (это я сделал)
2.Найти сумму эллементов массива, расположенных между первым и вторым отрицательным элементом.
3.Преобразовать массив таким образом, чтобы сначала рсполагались все элементы, модуль которых не превышает 1, а потом - все остальные.
Помогите пожалуйста. И если не сложно прицепите к коду коментарии.)
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main ()
{
int n=0;
printf("Please input the size of the array:\n");
scanf("%i",&n);
float *a=new float[n];
printf("Please input the ellements of the array as natural numbers:\n");
for(int i=0;i<n;i++)
{
scanf("%f",&a[i]);
}
printf("Array ellements by input order:\n");
for(int i=0;i<n;i++)
{
printf("___%f___\n", a[i]);
}
float min=a[0];
int minnum=0;
for (int i=0;i<n;i++)
{
if (min>a[i])
{
min=a[i];
minnum=i;
}
}
printf("The smallest array ellement is:\n___%f___", min);
printf("\nThe number of this ellement is:\n___%i___", minnum);
getch();
return 0;
}Решение задачи: «Найти сумму элементов массива, расположенных между первым и вторым отрицательным элементом»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
main()
{
int arr[10], sum = 0, i, d, p1, p2;
system("cls");
srand(time(NULL));
printf("Sformurovanui massuv: \n");
for(i = 0; i < 10; i++)
{
arr[i] = rand () % 100 - 50;
printf("%d ",arr[i]);
}
d = 0;
for(i = 0; i < 10; i++)
{
if(arr[i] < 0)
{
d = d + 1;
if (d == 1)
p1 = i;
if (d == 2)
p2 = i;
}
}
printf("\n");
system("pause");
for(i = 0; i < 10; i++)
{
if((i > p1) && (i < p2))
sum = sum + arr[i];
}
printf("Sum = %d", sum);
getch();
}
Объяснение кода листинга программы
- Объявление переменных:
arr- массив из 10 целых чисел;sum- переменная для хранения суммы;i- счетчик для внешнего цикла;d- счетчик для внутреннего цикла;p1иp2- индексы для хранения отрицательных чисел.
- Инициализация массива:
С помощью функции
rand()генерируются случайные числа от -50 до 50 и записываются в массивarr. - Поиск первого и второго отрицательных чисел:
Внутренний цикл проходит по всем элементам массива. Если элемент отрицательный, увеличивает счетчик
dи сохраняет индекс вp1при первом отрицательном числе и вp2при втором. - Вывод массива: Внешний цикл выводит все элементы массива.
- Поиск суммы элементов между первым и вторым отрицательными числами:
Внутренний цикл проходит по элементам массива. Если элемент находится между
p1иp2, его значение добавляется кsum. - Вывод результата:
Выводится значение переменной
sum.