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