Посчитать сколько отрицательных чисел получится в данной последовательности - C (СИ)

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

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

Добрый вечер. Помогите с программой на динамические массивы, заранее спасибо. Даны действительные числа a1, а2, ..., аn.(n<50). Получить такую последовательность b1, b2, ..., bn, где b1=a1, b2=a1+a2, bn=a1+a2+...+an. Посчитать сколько отрицательных чисел получится в данной последовательности.

Решение задачи: «Посчитать сколько отрицательных чисел получится в данной последовательности»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char* argv[])
{
   int *a;
   int *b;
   int arr_sz;
   int neg_count = 0;
   int i;
 
   srand(time(NULL));
 
   printf("Ââåäèòå Г°Г*çìåð Г¬Г*ññèâîâ: ");
   scanf("%i", &arr_sz);
 
   a = malloc(arr_sz*sizeof(int));
   b = malloc(arr_sz*sizeof(int));
 
   printf("ГЊГ*Г±Г±ГЁГў a:\n");
   for (i = 0; i < arr_sz; i++)
   {
      a[i] = rand() % 100 - 50;
      printf("%4i ", a[i]);
   }
 
   printf("\n\nГЊГ*Г±Г±ГЁГў b:\n");
   b[0] = a[0];
 
   if (b[0] < 0)
      neg_count++;
 
   printf("%4i ", b[0]);
   for (i = 1; i < arr_sz; i++)
   {
      b[i] = a[i] + b[i-1];
      printf("%4i ", b[i]);
      if (b[0] < 0)
         neg_count++;
   }
 
   printf("\n\nÊîëè÷åñòâî îòðèöГ*òåëüГ*ûõ ýëåìåГ*òîâ Гў Г¬Г*Г±Г±ГЁГўГҐ b: %i\n", neg_count);
 
   free(a);
   free(b);
 
   return 0;
}

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

В данном коде на языке C выполняется следующая последовательность действий:

  1. Связывание переменных:
    • Переменная a объявляется как указатель на целочисленный массив размером arr_sz.
    • Переменная b объявляется как указатель на целочисленный массив размером arr_sz.
    • Переменная arr_sz инициализируется значением, введенным пользователем через функцию scanf().
    • Переменная neg_count инициализируется нулевым значением и будет использоваться для подсчета количества отрицательных чисел в массиве b.
    • Переменная i используется как счетчик в циклах.
    • Функция srand() инициализирует генератор случайных чисел текущим временем.
  2. Заполнение массива a случайными числами:
    • Цикл for заполняет массив a arr_sz случайными целыми числами от -50 до 50 с шагом 1.
    • Каждое сгенерированное число присваивается элементу массива a[i] и выводится на экран с помощью функции printf().
  3. Заполнение массива b:
    • Первый элемент массива b инициализируется значением первого элемента массива a.
    • Если первый элемент массива b отрицательный, то переменная neg_count увеличивается на 1.
    • Цикл for заполняет оставшиеся элементы массива b путем добавления к каждому элементу значения соответствующего элемента массива a.
    • После заполнения массива b, выводится на экран значение переменной neg_count, которая показывает количество отрицательных чисел в массиве b.
  4. Освобождение памяти:
    • Функции free() освобождают память, выделенную под массивы a и b.
  5. Возврат значения 0:
    • В конце программы возвращается значение 0, что означает успешное выполнение программы.

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


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

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

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