Найти сумму элементов массива, расположенных между первым и вторым отрицательным элементом - 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();
}

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

  1. Объявление переменных:
    • arr - массив из 10 целых чисел;
    • sum - переменная для хранения суммы;
    • i - счетчик для внешнего цикла;
    • d - счетчик для внутреннего цикла;
    • p1 и p2 - индексы для хранения отрицательных чисел.
  2. Инициализация массива: С помощью функции rand() генерируются случайные числа от -50 до 50 и записываются в массив arr.
  3. Поиск первого и второго отрицательных чисел: Внутренний цикл проходит по всем элементам массива. Если элемент отрицательный, увеличивает счетчик d и сохраняет индекс в p1 при первом отрицательном числе и в p2 при втором.
  4. Вывод массива: Внешний цикл выводит все элементы массива.
  5. Поиск суммы элементов между первым и вторым отрицательными числами: Внутренний цикл проходит по элементам массива. Если элемент находится между p1 и p2, его значение добавляется к sum.
  6. Вывод результата: Выводится значение переменной sum.

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


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

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

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