Помощь - Поиск - Пользователи - Календарь
Полная версия: задачка с массивами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
фатальность
Пожжжалуйста!!! Помогите! Задачка не сложная, просто я не совсем хорошо разбираюсь.
Пусть в массиве содержатся результаты измерений температуры воздуха, которые проводились ежедневно в течение декабря месяца. Определить:
- сколько дней в декабре температура была выше средней;
- день, когда температуа была ближе всего к средней температуре в декабре;
- минимальную температуру тех дней декабря, которые следуют после последнего из самых теплых дней в этом месяце.
фатальность
Так никто и не поможет? Ну хоть что думаете, подскажите как определить среднюю температуру?
Айра
Цитата
Ну хоть что думаете, подскажите как определить среднюю температуру?

Складываешь все элементы массива и делишь на их количество, то бишь на количество дней))
фатальность
Цитата(Айра @ 6.06.2007 21:38) *

Складываешь все элементы массива и делишь на их количество, то бишь на количество дней))

и на этом спасибо, только как в паскаль засунуть?
Айра
Вроде так:
var sr: real;
t: array[1..31] of real;
...
for i:=1 to 31 do
begin
sr:=sr+t[i]/31;
end;
...
фатальность
Спасибо огромное!!! Попробую. Буду думать. Но если кто поможет в решении указанных задач, буду безмерно благодарна.
Айра
Давай разложим по пунктам:
1. Ты находишь среднюю температуру, как это сделать, ты уже знаешь.
2. Чтобы узнать количество более теплых дней, чем среднее, ты пробегаешь по всему массиву. Если температура больше (t[i]>sr) значит увеличиваешь количество дней (inc(kol), изначально kol:=0).
3. Наиболее близкий по температуре к среднему день я предлагаю искать так: опять идем по массиву, отнимаем от элемента среднее, вычисляем абсолютное значение полученного числа (модуль, стандартная функция abs(razn), razn: real), присваиваем ее min (минимальная разница), а значение i становится номером-nom. Дальше делаем тоже самое, но если модуль новой разницы меньше min, то присваиваем min значение нового модуля (if abs(razn)<min then min:=abs(razn)); nom:=i;). Когда пройдем по всему массиву у нас останется самая маленькая разница и номер такого дня.
4. еще не знаю как сделать wink.gif, если смотреть просто после самого теплого дня, то понятно, но это не совсем по заданию.
В общем, вот мои мысли по решению этой задачи, немного путанно, но попробуй, думаю у тебя получится smile.gif
мисс_граффити
4. В процессе поиска среднего параллельно ищем максимум. Запоминаем его.
Потом идем с конца массива, пока не найдем первый самый теплый день. Запоминаем индекс.
Теперь идем от этого индекса до конца и ищем минимум
Айра
А последний самый теплый день, это же будет максимум или последний день теплее среднего? я все никак не пойму wink.gif
фатальность
Цитата(Айра @ 7.06.2007 8:12) *

А последний самый теплый день, это же будет максимум или последний день теплее среднего? я все никак не пойму wink.gif

Я понимаю что надо найти самый теплый день, а потом из последующих 3-5 дней найти минимальную температуру. Может я заблуждаюсь...
мисс_граффити
я так понимаю, что последний день с температурой равной максимуму.
ну как-то так:
1 7 1 8 13 19 3 19 2 1 7 19 3 4 2
Айра
Цитата
я так понимаю, что последний день с температурой равной максимуму.

Или немного меньшей чем максимум, например на 1-2 градуса:
1 7 1 8 13 19 3 19 2 18 1 7 3 4 2
Но так мороки больше... наверно, твой вариант правильнее.
фатальность, а нельзя ли это как-то уточнить у того, кто дал задание?
фатальность
Задание из книги. С афтором думаю сложно будет связаться)) А препод молчит как партизан.
мисс_граффити
Цитата
- минимальную температуру тех дней декабря, которые следуют после последнего из самых теплых дней в этом месяце.
фатальность
А можно еще вопрос? Вот мне необходимо найти минимальную температуру второй декады декабря. Минимальную температуру нашла без проблем, а как указать что второй декады?
Айра
Ну декада, насколько я помню, это 10 суток. Сколько дней в декабре нам известно, значит цикл поиска минимума, наверно, должен быть таким: for i:=11 to 20 do.
фатальность
Цитата(Айра @ 7.06.2007 16:04) *

Ну декада, насколько я помню, это 10 суток. Сколько дней в декабре нам известно, значит цикл поиска минимума, наверно, должен быть таким: for i:=11 to 20 do.

точно, спасибо!!!
Вот только у меня ничего не получается с последним заданием(
Айра
Вот программка, которая это делает:
uses wincrt;
var t: array[1..31] of real;
max,min: real;
i,j: integer;
begin
randomize;
max:=0;
min:=1000;
for i:=1 to 31 do
begin
t[i]:=(random(21))/2;
write('',t[i]:6:2,' ');
if t[i]>=max then
begin
max:=t[i];
j:=i;
end;
end;
writeln;
for i:=j to 31 do
if t[i]<min then min:=t[i];
writeln('минимальная температура после самого теплого дня равна: ',min:6:2,'');
end.

Что непонятно, спрашивай, объясню smile.gif
Артемий
Айра,массив сделай real.
Айра
Цитата
массив сделай real.

Он real, я сразу сама исправила, ты не заметил smile.gif
фатальность
Спасибо!!!!!!!!!!!!!!! Премного благодарна!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.