C - Работа с массивами - C (СИ)
Формулировка задачи:
Задать случайным образом одномерный массив размерности N из целочисленных элементов, принадлежащих отрезку [-20;20]. Выполнить задание своего варианта. N вводится с клавиатуры.Само условие варианта: Составить программу для вычисления
Y =(U+T)*(S+2)
S - произведение элементов массива с нечетными номерами;
T - наибольший элемент массива;
U - сумма отрицательных элементов массива.
Полученные значения элементов S,T,U,Y вывести на печать.
Решение задачи: «C - Работа с массивами»
textual
Листинг программы
#include <stdio.h>
#include <time.h>
#include <math.h>
int main()
{
srand(time(NULL));
int N = 0, S = 1, T = 0, U = 0, i = 0, *mas = NULL;
double Y;
scanf("%d", &N);
mas = malloc(sizeof(int)*N);
//Input mas and print
for (i = 0; i < N; i++)
{
mas[i] = (int)pow(-1.0, rand() % 2)*(rand() % 21);//Randomize [-20; 20]
printf("%d ", mas[i]);//Print mas
}
//Find S, T, U
T = mas[0];
for (i = 0; i < N; i++)
{
if (mas[i] % 2 != 0) S *= mas[i]; //Произведение нечетных
if (mas[i] > T) T = mas[i]; //Макс
if (mas[i] < 0) U += mas[i]; //Сумма отрицательных
}
Y = (U + T)*(S + 2);//Наша основная формула
//Здесь будет какой-то вывод. printf(char* format, arg1)
free(mas);//Освобождаем массив
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
stdio.hдля работы с функциями ввода-выводаtime.hдля работы со временемmath.hдля работы с математическими функциями
- Определяем переменные:
N- количество элементов в массиве (от 0 до 20)S- переменная для хранения произведения нечетных чиселT- переменная для хранения максимального элемента массиваU- переменная для хранения суммы отрицательных чиселi- счетчик для итераций по массивуmas- указатель на начало массива (после вызоваmallocбудет содержать адрес первого элемента)Y- переменная для хранения результата вычислений
- Считываем значение N:
- Используем функцию
scanfдля считывания значения N
- Используем функцию
- Выделяем память под массив:
- Используем функцию
mallocдля выделения памяти под массив. Обязательно освобождаем память в конце программы с помощьюfree(mas);
- Используем функцию
- Заполняем массив случайными числами:
- Используем цикл
forдля заполнения массива случайными числами от -20 до 20 - Используем функцию
powдля получения значения в указанной степени - Используем функцию
randдля получения случайного числа - Выводим значения массива с помощью
printf
- Используем цикл
- Находим S, T, U:
- Используем цикл
forдля прохождения по всем элементам массива - Для S: проверяем, является ли число нечетным, и если да, то умножаем его на текущее значение S
- Для T: находим максимальное значение в массиве и сохраняем его в переменной T
- Для U: суммируем все отрицательные числа в массиве и сохраняем сумму в переменной U
- Используем цикл
- Вычисляем Y:
- Используем формулу: Y = (U + T)*(S + 2)
- Освобождаем память:
- Используем функцию
freeдля освобождения памяти, выделенной под массив
- Используем функцию
- Возвращаем 0:
- В конце программы возвращаем 0, что означает успешное выполнение программы