Четверг, 09.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Тип данных Record - помогите разобраться
YuRaSДата: Вторник, 20.05.2008, 23:53 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 8
Репутация: 0
Замечания: 0%
Статус: Offline
Здравствуйте многоуважаемые посетители и модераторы этого форума предлагаю на ваш суд следующее условие задачи , в которой 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 дней. Напишите прогу, которая выводит на экран:
а) среднюю температуру
б)количество безветренных дней
в)день, когда была наиболее низкая температура
г)день, когда дул наиболее сильный ветер
д)направление, откуда чаще всего дул ветер
е)значение влажности в дни, когда ветер дул с востока

Не знаю можно ли здесь обойтись без подпрограмм , не знаю , но условие задачи так и не предполагает их использование. Может быть я тупой , и недопонимаю чего-то . Если кто-нибудь поможет разобраться, то я сильно заранее благодарю вас за ваш итак нелёгкий труд !!!


МУДРОСТЬЮ ЦАРИ ЦАРСТВУЮТ...
 
AlexanderДата: Среда, 21.05.2008, 04:18 | Сообщение # 2
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Code
napravlenie: (sever, yug, zapad, vostok, severozapad, severovostok, yugozapad, yugovostok);

Это обязательно? Может проще задать строкой, просто при вводе проверять, чтобы оно входило во множество. Или вообще вывести список:
Code
1) sever
2) yug
3) zapad
...

И считать номер пункта.
Quote
условие задачи так и не предполагает их использование.

Я не видел в условии строки типа "не использовать то-то и то-то". Как известно из нашего законодательства- что не запрещено, то разрешено.


Скажем дружно- нафиг нужно!
 
YuRaSДата: Среда, 21.05.2008, 06:06 | Сообщение # 3
Новичок
Группа: Пользователи
Сообщений: 8
Репутация: 0
Замечания: 0%
Статус: Offline
Дело в том , что само условие задачи задаёт мне шаблон , по которому , я и должен закончить написание алгоритма

Шаблон(начало программы уже задано условием ) :

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
 
AlexanderДата: Четверг, 22.05.2008, 02:14 | Сообщение # 4
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Тогда надо читать с клавы направление ветра(пофиг как), а затем присвоить множеству это направление. Например:
Code
repeat
    ReadLn(s);   {s- строка}
until s in napravlenie;
napravlenie:=(s);


Скажем дружно- нафиг нужно!
 
YuRaSДата: Четверг, 22.05.2008, 09:41 | Сообщение # 5
Новичок
Группа: Пользователи
Сообщений: 8
Репутация: 0
Замечания: 0%
Статус: Offline
Я конечно благодарен вам за столь умный подход, но я почемуто недопираю , как можно это множество отобразить в программе ? Спасибо вам ещё раз ...

МУДРОСТЬЮ ЦАРИ ЦАРСТВУЮТ...

Сообщение отредактировал YuRaS - Четверг, 22.05.2008, 23:00
 
AlexanderДата: Пятница, 23.05.2008, 04:53 | Сообщение # 6
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Что значит "множество отобразить в программе"?

Скажем дружно- нафиг нужно!
 
YuRaSДата: Пятница, 23.05.2008, 08:55 | Сообщение # 7
Новичок
Группа: Пользователи
Сообщений: 8
Репутация: 0
Замечания: 0%
Статус: Offline
да в принципе , задача уже решена ... и если вам интересно , то можете взглянуть ... а насчёт множества , не знаю каким образом мне его надо было задействовать в программе ...

Сама задача :
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.

Я учусь в Молдове , в Кишинёве , поэтому в проге могут встретиться молдавские слова , выражения , хотя я и пытался исправить на русский ... Спасибо вам за советы ! Ещё раз ...


МУДРОСТЬЮ ЦАРИ ЦАРСТВУЮТ...
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;