Получить последовательность по правилу - C (СИ) (79167)
Формулировка задачи:
Даны натуральное число n, действительные числа x(1),.....x(n). Получить (1+r)/(1+s), где r - сумма всех тех членов последовательности x(1),.....x(n), которые не превосходят 1, а s - сумма членов, больших 1.
Решение задачи: «Получить последовательность по правилу»
textual
Листинг программы
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
srand((unsigned)time(NULL));
int n,r=0,s=0;
int *arr;
float rez;
printf("Enter n: ");
scanf("%d",&n);
arr = (int*)malloc(n*sizeof(int));
printf("\nNumbers: ");
for(int i=0; i<n; i++)
{
arr[i]=rand()%9-2;
printf("%d ",arr[i]);
(arr[i]>1) ? s+=arr[i] : r+=arr[i];
}
rez=(float)(1+r)/(1+s);
printf("Result: %.4f",rez);
free(arr);
getch();
return 0;
}
Объяснение кода листинга программы
Предполагается, что задача программы - вычислить среднее арифметическое элементов массива целых чисел, причем элементы массива должны быть случайными целыми числами от -2 до 7 (включительно). Список действий, которые выполняются в коде:
- Инициализация генератора случайных чисел с помощью функции srand() и входных данных пользователя с помощью функции scanf().
- Выделение памяти под массив целых чисел с помощью функции malloc().
- Инициализация переменных r и s, которые используются для хранения суммы положительных и отрицательных чисел соответственно.
- Заполнение массива случайными целыми числами с помощью цикла for и функции rand().
- Вывод значений массива с помощью функции printf().
- Обновление переменных r и s в зависимости от знака числа в массиве.
- Вычисление результата - среднего арифметического - с помощью формулы (1+r)/(1+s) и приведения к типу float с помощью функции (float).
- Вывод результата на экран с помощью функции printf().
- Освобождение памяти, выделенной под массив, с помощью функции free().
- Ожидание нажатия клавиши с помощью функции getch().
- Возврат 0, что означает успешное завершение программы.