Массивы, найти сумму четных и сумму нечетных элементов - C (СИ)
Формулировка задачи:
Доброго времени суток! Снова нуждаюсь в помощи. Есть массив, четные и нечетные элементы. Нужно найти сумму четных и соответственно нечетных. Как сделать так, чтобы выводилась на экран конечная сумма выбранных(четных) элементов, а не каждый шаг сложения?
Решение задачи: «Массивы, найти сумму четных и сумму нечетных элементов»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> void main() { int n, sum[2]={0,0}, i=0, *mas; srand(time(0)); printf("Введите n: "); scanf("%d", &n); mas = malloc(n*sizeof(int)); for(;i<n;i++) { mas[i]=(rand() % 100); sum[(mas[i] & 1)]+=mas[i]; // printf("%d \n\r",mas[i]); } printf("Сумма четных: %d \n",sum[0]); printf("Сумма нечетных: %d \n",sum[1]); }
Объяснение кода листинга программы
В этом коде:
- Сначала подключаются необходимые библиотеки (стандартные функции) для работы с массивами, вводом/выводом и генерацией случайных чисел.
- Затем объявляются переменные:
n
- вводное значение от пользователя, обозначающее размер массива;sum
- массив из двух элементов, инициализированный нулями, для хранения суммы четных и нечетных чисел;i
- счётчик для цикла;mas
- указатель на начало выделяемой памяти под массив.
- После этого производится инициализация генератора случайных чисел и выводится приглашение для ввода значения
n
. - Полученное от пользователя значение сохраняется в переменной
n
. - Осуществляется выделение памяти под массив с помощью функции
malloc
, размер которой равенn
. - Затем в цикле:
- Сначала в массив
mas
записывается случайное число от 0 до 99 (используется операция модуля%
для получения остатка от деления на 2, который и будет указывать на чётность числа). - Затем сумма четных или нечетных чисел (в зависимости от чётности числа) увеличивается на значение текущего элемента массива
mas
.
- Сначала в массив
- После завершения цикла выводятся на экран сумма четных и нечетных чисел. Возможные проблемы при выполнении кода:
- Ошибка: если пользователь введёт отрицательное значение для
n
, то произойдет ошибка выхода за границы массива при выделении памяти с помощьюmalloc
. - Ошибка: если пользователь введёт ноль для
n
, то программа выдаст ошибку, так как нельзя выделить память под массив, размер которого равен нулю. - Ошибка: если на момент вызова функции
srand(time(0))
ещё не был вызван ввод значенияn
, то генератор случайных чисел будет инициализирован некорректно, что может привести к одинаковым случайным числам при каждом запуске программы. - Ошибка: если на момент вызова функции
printf
для вывода суммы четных или нечетных чисел значение переменнойsum
будет равно нулю, то программа выдаст ошибку, так как невозможно выполнить операцию деления на ноль.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д