Решение задач с одномерными массивами Задание
Подготовить (для отладки программы) на диске файл In.txt, содержащий 12 вещественных или целых (в вариантах с I) чисел, среди которых должны быть отрицательные, положительные и равные нулю; для целых четные и нечетные.
Составить программу, которая:
вводит из файла In.txt числа в массив и выводит этот массив в результирующий файл Out.txt;
дополнительные параметры, если они упоминаются в тексте задания, ввести с клавиатуры и так же вывести в результирующий файл Out.txt;
вычисляет значения всех вещественных и целых переменных, которые входят в состав вещественного выражения, и значение самого вещественного выражения;
выводит значения всех вычисленных переменных и выражения с пояснениями;
оформляет результаты, используя форматный вывод с управлением редактирования данных.
Отчет
Отчет по лабораторной работе должен содержать в указанном порядке:
название работы;
номер варианта;
фамилию, имя, отчество и номер группы студента, выполнившего работу;
текст задания;
текст варианта задания;
распечатку программы и результатов;
вопросы к заданию с правильными ответами.
Справочная информация
Средние значения действительных чисел а1, а2, а3, …, аn.
Среднее арифметическое |
|
Среднее геометрическое |
|
Среднее квадратичное |
|
Среднее гармоническое |
|
Примечание: вычисление среднего геометрического и среднего гармонического должно производиться только для ненулевых элементов массива.
Пример
Вычислить А+В, где
B – номер минимального элемента из элементов, что имеют нечетные номера;
A – среднее арифметическое отрицательных элементов массива, больших D (D < 0 ввести с клавиатуры).
Программа
//«Вычисления с одномерными массивами (пример без ввода из файла)», вариант №
//студент группы № Дуопроцессоров П. К.
#include <stdio.h>
#include <iso646.h>
#define N 12
#define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
//#define stdout Out// для отладки вывод на экран
int main (void)
{
int i, n;
double b, d, mid;
double m[N] = { -5, 5, -2, 2, 3, -3, 4, 0, 9, -9, 8, -8}; // для отладки без ввода
//FILE *Out;// для отладки вывод на экран
//Out = fopen("Out.txt", "w");// для отладки вывод на экран
printf("d_negative="); scanf("%lf",&d);
fprintf(stdout,"d=%.2f\n",d); // вывод для контроля
for(i=0; i<N; i++)
fprintf(stdout,"%.2f\t",m[i]); // поэлементный вывод для контроля
fprintf(stdout,"\n");
// поиск минимального с номером 1, 3, 5, ....
b = m[1]; // минимальный - один из элементов
for (i=3; i<N; i+=2)
b = MIN( b, m[i] );
fprintf(stdout,"min=%.2f\n",b); // вывод min
// средн арифм
for(n=0, mid = 0.0, i=0; i<N; i++)
if( d < m[i] and m[i] < 0.0)
{ n++; mid += m[i]; }
if ( n != 0)
fprintf(stdout,"mida > %.2f = %.3f c=%.3f\n",d,mid/n, b + mid/n); // вывод mid
else
fprintf(stdout,"mida > %.2f c=%.2f\n",d,b ); // вывод mid
return 0;
}
Вопросы к заданию
Что в программировании называют массивом?
Перечислите свойства массива.
Как в программе ссылаются на элемент массива.
Что в программе объявляет оператор float A[7];
В программе объявлены массивы A и B из 12 элементов (double A[12], B[12];) и в каждый из них введены значения, что произойдет при выполнении оператора scanf("%lf",&A[12]);
В программе объявлены массивы A и B из 12 элементов (double A[12], B[12];) и в каждый из них введены значения, что произойдет при выполнении оператора printf("%f",A[12]);
В программе объявлен массив A из 12 элементов, что означает запись в программе A[K]
Как вводят и выводят массивы в программе.