IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Одномерный массив вещественных чисел
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Мужской
Реальное имя: Иван

Репутация: -  0  +


Простите за беспокойство, не могли бы вы помоч решить задачу...

Одномерный массив вещественных чисел R75 содержит данные о росте группы студентов. Массив заполнить значениями путем ввода с клавиатуры. Вычислить средний рост студентов и разность в росте между самым высоким и самым низким студентом. На экран вывести рост всех студентов групы по 5 чисел на строку экрана и вычисленные значения среднего роста и разности в росте.

Заранее спасибо!!! rolleyes.gif

Использовать кампилятор turbo c

Кампилятор turbo c
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






А можно, я попробую? Пока Volvo нет... rolleyes.gif

#include <stdio.h>

/* Размерность массива */
#define SIZE 10

/* Основная функция, выполняющаяся при запуске программы */
int main() {

/*
Описываем массив r из SIZE элементов типа double
и переменные average(начальное значение 0), min(изначально 10) и max(изначально 0)

Почему min = 10: а что, Вы видели где-то студентов с ростом больше 10 метров?
Главное, чтобы min было заведомо больше любого элемента массива
*/
double r[SIZE], average = 0.0, min = 10.0, max = 0.0;
int i;

/* Все верно, в цикле от 0 до 9 делаем следующее: */
for(i = 0; i < SIZE; ++i) {
printf("r[%2d] = ", i); /* Печатаем приглашение пользователю, какой элемент надо ввести */
scanf("%lf", &r[i]); /* И читаем этот элемент с клавиатуры */

average += r[i]; /* Суммируем все элементы сразу после ввода */

/* Конструкция (a) ? b : c
аналогична такому фрагменту:
if(a) b; else c;

следовательно, то, что записано ниже, будет эквивалентно:
min = (if(r[i] < min) r[i]; else min);
или, если перевести это в понятную компилятору форму:
if(r[i] < min) min = r[i]; else min = min;

(если очередной элемент массива меньше минимума, то ЭТО уже не минимум,
его надо заменить, запоминаем НОВЫЙ минимум, иначе - ничего не делать;
на самом деле, если мы присвоим значение одной переменной ЭТОЙ же самой
переменной, то ничего не изменится...)
*/
min = (r[i] < min) ? r[i] : min;

/* Все, что было сказано выше для минимума, остается в силе и для максимума,
только проверяем на "больше" */
max = (r[i] > max) ? r[i] : max;
}

/* Вот теперь, когда мы уже нашли min/max в массиве, проходим по нему еще раз,
чтоб его распечатать... Для этого нужен еще один цикл... */
for(i = 0; i < SIZE; ++i)
printf("%6.3f%s", r[i], ((i + 1) % 5) ? " " : "\n");
/* Выше применяется такой же условный оператор, как и тот, что я описывала раньше...
То есть, по другому, эту же строчку можно было бы записать так:

printf("%6.3f%s", r[i], (if ((i + 1) % 5) " "; else "\n") );
или, переводя в доступную для C форму записи
(поскольку нельзя записывать if внутри выражений, его придется вынести наружу):
if((i + 1) % 5) printf("%6.3f%s", r[i], " ");
else printf("%6.3f%s", r[i], "\n");

что по-русски должно обозначать: если номер элемента, который мы сейчас распечатываем,
НЕ кратен 5 - что остаток от деления (%) номера на 5 ненулевой - то между числами печатать пробел,
иначе, если номер кратен 5, то перевести строку...

Как видим, форма записи с "?:" гораздо компактнее...
*/

/* Ну, а это уже совсем просто - напечатать разность max/min элементов и среднее значение */
printf("\nmax - min = %6.3f\naverage = %6.3f\n",
max - min, (double)(average / SIZE));

/* Эта строчка требуется по Стандарту языка С */
return 0;
}


smile.gif Вот и все... Что-то непонятно?
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 21:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name