Консультация № 139451
07.06.2008, 15:14
0.00 руб.
0 1 1
Помогите решить задачку, пожалуйста:
Информация о средней суточной температуре воздуха за месяц задана в воде массива. Определить температура скольких дней была ниже среднемесячной(Код этой программы есть но, он не правельно считает, не могу понять по чему)

Приложение:
program PR10Z1;{$APPTYPE CONSOLE}uses SysUtils;Var a:array[1..30] of integer; s,n,i,p:integer; sm:real;beginrandomize; Writeln(‘ ------------------------------------ ‘); Writeln(‘| Sredn. sutochnaya temp-ra za Aprel |‘); Writeln(‘ ------------------------------------ ‘); Writeln; n:=1;For i:=1 to 30 do a[i]:=random(15)-5; For i:=1 to 30-9 do begin While n<=9 do begin a[i]:=random(15)-5; Writeln(‘0‘,n,‘ Aprelya: ‘,a[i]); n:=n+1; end; Writeln(n,‘ Aprelya: ‘,a[i]); n:=n+1; end;s:=0; For i:=1 to 30 do s:=s+a[i]; sm:=s/30; Writeln; Writeln(‘Summa za mecyac:‘,s); Writeln(‘Sredne mesyachnaya temp-ra: ‘,sm:2:0); Writeln;For i:=1 to 30 do If a[i]<sm then Writeln(n,‘ Aprelya‘);readln;end.

Обсуждение

Неизвестный
07.06.2008, 17:58
общий
это ответ
Здравствуйте, Proks!
У Вас несколько ошибок:
Правильнее будет не так: Writeln(\‘ ------------------------------------ \‘), а так Writeln(‘\ ------------------------------------ \‘)
Вы ввели символ ‘\‘ не в кавычках в нескольких местах программы.

Вы пишете:
 <b>For</b> i:=1 <b>to</b> 30 <b>do</b>
  <b>If</b> a[i] < sm <b>then</b> Writeln(<FONT COLOR=BLUE>n</font>,‘\ Aprelya\‘);
И соответственно у Вас всегда выводится:

<font color=green>
31 \ Aprelya\
31 \ Aprelya\
31 \ Aprelya\
...
</font>

Это потому что вы выводите переменную n, которая хранит не число месяца, она используется при выводе массива.
Вам надо вывести число месяца, а его хранит переменная i, которая используется при сравнении температур со среднемесячной. Вот правильный вариант:

 <b>For</b> i:=1 <b>to</b> 30 <b>do</b>
  <b>If</b> a[i] < sm <b>then</b> Writeln(i,‘\ Aprelya\‘);

Я рискнул заново сделать вашу задачу, она с объяснениями в приложении.
Удачи!!!

Приложение:
program PR10Z1;{$APPTYPE CONSOLE}Var {массив температур} a: array [1..30] of integer; {i-счетчик для For, sum-сумма температур, count-кол-во дней когда температура была ниже средней} i, sum, count: integer; {Средняя температура} sr: real;begin {Инициализируем генератор случайных чисел} randomize; {Обнуляем сумму и кол-во} sum:=0; count:=0; {В цикле перебираем весь массив и...} for i:=1 to 30 do begin {...Заполняем его сл. числами} a[i]:=random(15)-5; {Выводим температуру} Writeln(‘April ‘, i:2, ‘: ‘, a[i]:2); {Прибавляем к сумме для выч. средней температуры} sum:= sum + a[i]; end; {Вычисляем среднюю} sr:=sum/30; {Выводим сумму температур и среднюю температуру} WriteLn(‘Summa T: ‘, sum); WriteLn(‘Srednaa T: ‘, sr:6:3); {В цикле проверяем,} for i:=1 to 30 do {ниже ли температура среднемесячной} if a[i] < sr then begin {Если да, то выводи её} WriteLn(‘April ‘, i, ‘: ‘, a[i]:2); {И увеличиваем на 1 счетчик} inc(count); end; {Выводим кол-во дней когда температура была ниже среднемесячной} WriteLn(‘Temperature of ‘, count, ‘ days was under ‘, sr:6:3); readln;end.
Форма ответа