Консультация № 138023
27.05.2008, 10:41
0.00 руб.
0 2 2
Добрый день..Помогите,пожалуйста,решить задачу..Заранее огромная вам благодарность..
Дано 100 вещественных чисел. Написать программу вычисления разности между максимальным и минимальным из них.

Обсуждение

Неизвестный
27.05.2008, 14:15
общий
это ответ
Здравствуйте, Хорост Андрей Викторович!
Задача в приложении.
Все числа хранятся в массиве <i>а</i>. Размер массива хранится в константе <i>N</i>. Сначало с помощью цикла <b>For</b> перебирается весь массив и заполняется случайными числами с помощью функции <b>random</b>. Потом инициализируем максимальное и минимальное число значением первого элемента массива. Потом опят с помощью <b>For</b> перебираем весь массив и во время каждого прохода сравниваем текущий элемент с максимальным и минимальным, если максимальное меньше текущего, то изменяем значение максимального числа. В конце вычисляем и выводим разность.
Удачи!!!

Приложение:
const N=100;var a: array [1..N] of real; i: integer; max, min: real;begin randomize; for i:=1 to N do begin a[i]:=random(100)-50+random; write(a[i]:8:3); end; max:=a[1]; min:=a[1]; for i:=1 to N do if a[i]>max then max:=a[i] else if a[i] < min then min:=a[i]; WriteLn; Write(‘max-min=‘, max-min:8:3); readln;end.
Неизвестный
27.05.2008, 17:13
общий
это ответ
Здравствуйте, Хорост Андрей Викторович!

Вот вариант решения, где используется только один цикл. Здесь запоминаются не сами значения (максимальное и минимальное), а их индексы. Это даёт возможность сразу (до заполнения массива) дать стартовые значения индексам и проверять новые элементы уже по ходу их внесения.

Приложение:
Program Pr138023; Uses CRT; Const N = 100; Var Arr: Array[1..N] of Real; i, Min, Max: Integer;Begin ClrScr; Randomize; { Min и Max - индексы минимального и максимального элементов массива } Min := 1; Max := 1; WriteLn(‘Исходный случайно заполненный массив:‘); for i := 1 to N do begin { Вносим в массив числа от 0 до 100 } Arr[i] := 100 * Random; Write(Arr[i]:9:4); if Arr[i] < Arr[Min] then Min := i; if Arr[i] > Arr[Max] then Max := i; { После каждого 8-го числа переходим на новую строку } if i mod 8 = 0 then WriteLn; end; WriteLn; WriteLn; WriteLn(‘Разница между минимальным и максимальным‘); WriteLn(‘элементами равна ‘, (Arr[Max] - Arr[Min]):9:3); ReadLn;End.
Форма ответа