Здравствуйте многоуважаемые посетители и модераторы этого форума предлагаю на ваш суд следующее условие задачи , в которой 6 подпунктов, но я не могу закончить ввод данных с клавы , а соответственно и дальнейшее решение:
Погоду на день можно рассматривать как данные следующего типа : Прогу я начал писать ... но вот зациклился
Program lab6n22; uses crt; type Pogoda=record temperatura:integer; vlajnosti:integer; case veter:boolean of true:(napravlenie: (sever, yug, zapad, vostok, severozapad, severovostok, yugozapad, yugovostok); skorosti:integer); false:(); end; var i:byte; y,n:boolean; a:char; vet,v,t:Pogoda; Begin clrscr; for i:=1 to 10 do begin writeln('Vvedite dannie pogodi na deni ',i); write('Temperatura, gradusi : '); readln(t.temperatura); write('Vlajnosti, % : '); readln(v.vlajnosti); y:=true; n:=false; write('Veter y/n: '); readln(a); case a of 'y': write('Napravlenie vetra: '); <<<<<<<<<<<<<<<<<<<<<<{что тут дальше писать, не пойму} 'n': write('Vetra net'); end; end;
продолжение условия : С клавиатуры считываются данные о погоде на 10 дней. Напишите прогу, которая выводит на экран: а) среднюю температуру б)количество безветренных дней в)день, когда была наиболее низкая температура г)день, когда дул наиболее сильный ветер д)направление, откуда чаще всего дул ветер е)значение влажности в дни, когда ветер дул с востока
Не знаю можно ли здесь обойтись без подпрограмм , не знаю , но условие задачи так и не предполагает их использование. Может быть я тупой , и недопонимаю чего-то . Если кто-нибудь поможет разобраться, то я сильно заранее благодарю вас за ваш итак нелёгкий труд !!!
Это обязательно? Может проще задать строкой, просто при вводе проверять, чтобы оно входило во множество. Или вообще вывести список:
Code
1) sever 2) yug 3) zapad ...
И считать номер пункта.
Quote
условие задачи так и не предполагает их использование.
Я не видел в условии строки типа "не использовать то-то и то-то". Как известно из нашего законодательства- что не запрещено, то разрешено. Скажем дружно- нафиг нужно!
Дело в том , что само условие задачи задаёт мне шаблон , по которому , я и должен закончить написание алгоритма
Шаблон(начало программы уже задано условием ) :
Program ааа; uses crt; type Pogoda=record temperatura:integer; vlajnosti:integer; case veter:boolean of true:(napravlenie: (sever, yug, zapad, vostok, severozapad, severovostok, yugozapad, yugovostok); skorosti:integer); false:(); end;
Дело не в том, что можно было бы сделать проще ... но это условие задачи, которому я вынужден подчиняться... И насчёт подпрограмм , я поправлюсь, что их действительно использовать нельзя(по условию задачи).
МУДРОСТЬЮ ЦАРИ ЦАРСТВУЮТ...
Сообщение отредактировал YuRaS - Среда, 21.05.2008, 06:08
Я конечно благодарен вам за столь умный подход, но я почемуто недопираю , как можно это множество отобразить в программе ? Спасибо вам ещё раз ... МУДРОСТЬЮ ЦАРИ ЦАРСТВУЮТ...
Сообщение отредактировал YuRaS - Четверг, 22.05.2008, 23:00
да в принципе , задача уже решена ... и если вам интересно , то можете взглянуть ... а насчёт множества , не знаю каким образом мне его надо было задействовать в программе ...
Сама задача : type Timp=record temperatura:integer; umiditatea:integer; {влажность} case vint:boolean of {ветер} true: (directie: (nord, sud, est, vest, nordest, sudest, nordvest, sudvest); { напраление } viteza:integer); {скорость } false:(); end; var anotimp:array [1..10] of Timp; i,j,tsum,bvnum,m:integer; dir:array [1..8] of integer; directie:string; begin {initializatia peremennih} tsum:=0; bvnum:=0; m:=1; for i:=1 to 8 do dir[i]:=0; {vvod dannih} for i:=1 to 10 do begin writeln('deni ',i,':'); write(' temperatura: ');read(j); anotimp[i].temperatura:=j; if j<anotimp[m].temperatura then m:=j; inc(tsum,j); write(' umiditatea: ');read(j); anotimp[i].umiditatea:=j; write('Какое направление было у ветра (0 - для безветренного дня): ');read(j); write('vint',j); {bil veter ili net} if j=0 then begin anotimp[i].vint:=false; inc(bvnum); end else begin {esli veter bil, to uznaiom otkuda on bil} anotimp[i].vint:=true; anotimp[i].viteza:=j; write('В каком направлении дул ветер ? (n,s,v,e,se,nv,sv,ne): ');readln;read(directie); if directie='n' then begin anotimp[i].directie:=nord;inc(dir[1]);end else if directie='e' then begin anotimp[i].directie:=est;inc(dir[2]);end else if directie='s' then begin anotimp[i].directie:=sud;inc(dir[3]);end else if directie='v' then begin anotimp[i].directie:=vest;inc(dir[4]);end else if directie='ne' then begin anotimp[i].directie:=nordest;inc(dir[5]);end else if directie='nv' then begin anotimp[i].directie:=nordvest;inc(dir[6]);end else if directie='se' then begin anotimp[i].directie:=sudest;inc(dir[7]);end else if directie='sv' then begin anotimp[i].directie:=sudvest;inc(dir[8]);end; end; end; {vivodim rezulitati po o4eredi} {a} writeln('sredneaia temperatura ', (tsum/10.0):1:2); {b} writeln('bilo ', bvnum,' bezvetrennih dnei'); {v} writeln('holodnee vsego bilo v ',m,'-i deni, bilo ',anotimp[m].temperatura); {g} m:=0; for i:=1 to 10 do if anotimp[i].vint then begin if m=0 then m:=i else begin if anotimp[i].viteza>anotimp[m].viteza then m:=i; end; end; if m=0 then writeln('vetrenih dnei ne bilo') else writeln('samii silnii veter dul v ',m,'-i deni'); {d} m:=1; for i:=2 to 8 do begin if dir[i]>dir[m] then m:=i; end; if dir[m]=0 then writeln('vetrenih dnei ne bilo') else begin write('4a6e vsego veter dul s '); case m of 1:writeln('nord'); 2:writeln('est'); 3:writeln('sud'); 4:writeln('vest'); 5:writeln('nordest'); 6:writeln('nordvest'); 7:writeln('sudest'); 8:writeln('sudvest'); end; end; {e} for i:=1 to 10 do begin if anotimp[i].vint and (anotimp[i].directie=est) then writeln('deni ', i,' vlajnosti ', anotimp[i].umiditatea); end; {vih}writeln('press enter to exit.'); readln;readln; end.
Я учусь в Молдове , в Кишинёве , поэтому в проге могут встретиться молдавские слова , выражения , хотя я и пытался исправить на русский ... Спасибо вам за советы ! Ещё раз ...