Простите за беспокойство, не могли бы вы помоч решить задачу...
Одномерный массив вещественных чисел R75 содержит данные о росте группы студентов. Массив заполнить значениями путем ввода с клавиатуры. Вычислить средний рост студентов и разность в росте между самым высоким и самым низким студентом. На экран вывести рост всех студентов групы по 5 чисел на строку экрана и вычисленные значения среднего роста и разности в росте.
Заранее спасибо!!!
Использовать кампилятор turbo c
Кампилятор turbo c
Evernes
27.10.2006 11:46
Я только начал изучать turbo c и ничего не могу понять... Помогите кто нибудь плиз...
volvo
27.10.2006 16:26
#include <stdio.h>
#define SIZE 10
int main() {
double r[SIZE], average = 0.0, min = 10.0, max = 0.0; int i;
average += r[i]; min = (r[i] < min) ? r[i] : min; max = (r[i] > max) ? r[i] : max; } for(i = 0; i < SIZE; ++i) printf("%6.3f%s", r[i], ((i + 1) % 5) ? " " : "\n"); printf("\nmax - min = %6.3f\naverage = %6.3f\n", max - min, (double)(average / SIZE));
return 0;
}
Размер массива поставь, какой нужно...
Evernes
27.10.2006 17:26
Спасибо большое Volvo!!!!! Еще вопросик... конечно понимаю что это глупо, но где сдесь прописывать размер массива? Я раньше только с Турбо Паскалем и с Делфи работал, поэтому в turbo c я пока дуб дубом...=)
volvo
27.10.2006 17:32
Измени в
#define SIZE
число 10 на то значение, которое тебе нужно...
Evernes
27.10.2006 17:34
Спасибо!=)
Evernes
9.11.2006 23:13
Да, немогли бы вы написать описание программы... Пожалуйста! А то я что то разобраться до конца не могу...
#include <stdio.h> - это открытие библиотеки
#define SIZE 10 -задание массива
int main() { -? и начало
double r[SIZE], average = 0.0, min = 10.0, max = 0.0; -это, я так понял, объявление переменных, но почему min = 10.0, max = 0.0 и что такое double r[SIZE] я не понял...(
int i;
for(i = 0; i < SIZE; ++i) - цикл от 0 и пока i < 10, i увеличиваем на 1 { printf("r[%2d] = ", i); -? scanf("%lf", &r[i]); -?
average += r[i]; -? min = (r[i] < min) ? r[i] : min; -? max = (r[i] > max) ? r[i] : max; -? } for(i = 0; i < SIZE; ++i) - цикл от 0 и пока i < 10, i увеличиваем на 1... только зачем второй раз я тоже не понял...
Если не трудно можете за место "?" напишите пожалуйста коментарии и справте если я что то не то написал...
Заранее большое спасибо!!!
Алена
10.11.2006 0:19
А можно, я попробую? Пока Volvo нет...
#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; }
Вот и все... Что-то непонятно?
Evernes
10.11.2006 0:22
Спасибо, Алена, ты меня спасла!=) Тебе респект!
Гость
13.12.2011 1:09
Помогите Помогите Помогите.....
В текстовом файле a.dat задан массив из 65 вещественных чисел. Найти наименьший элемент массива.
заранее спасибо!)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.