a.pl:=g.pl ;
max:=a[1].pl;
Вывести страну с наибольшей площадью в выходной файл
Условие задачи:
Дан список стран (во входном файле). Вывести страну с наибольшей площадью в выходной файл, и в ходе программы добавить еще 2 страны с клавиатуры.
Сама программа
Код:
Program a9;
Uses crt;
type geo=record
gos:string[16];
pl:string[5];
st:string[7];
end;
Var
a:array[0..16] of geo;
inp,out:text;
g:geo;
k:1..5;
LG:1..16;
LS:1..7;
LP:1..5;
i:1..16;
max:string;
begin
clrscr;
assign(inp,'C:\111.in');append(inp);
for k:=1 to 2 do
begin
writeln('vvedite gosydarstvo');
readln(g.gos);
writeln('vvedite plowad');
readln(g.pl);
writeln('vvedite stolicy');
readln(g.st);
LG:=length(g.gos);
if LG<16 then
for i:=LG+1 to 16 do insert(' ',g.gos,i);
LS:=length(g.st);
if LS<7 then
for i:=LS+1 to 7 do insert(' ',g.st,i);
write(inp,g.gos,g.pl,g.st);
end;
close(inp);
reset(inp);
assign(out,'C:\111.out');
rewrite(out);
writeln(out,'strana');
a.pl:=g.pl ;
max:=a[1].pl;
repeat
readln(inp,g.gos,g.pl,g.st);
if max<a.pl then
for i:=1 to 9 do
max:=a.pl;
until eof(inp);
writeln(out,'naibolwaya po plowadi',g.gos,max,g.st);
close(inp);
close(out)
end.
Uses crt;
type geo=record
gos:string[16];
pl:string[5];
st:string[7];
end;
Var
a:array[0..16] of geo;
inp,out:text;
g:geo;
k:1..5;
LG:1..16;
LS:1..7;
LP:1..5;
i:1..16;
max:string;
begin
clrscr;
assign(inp,'C:\111.in');append(inp);
for k:=1 to 2 do
begin
writeln('vvedite gosydarstvo');
readln(g.gos);
writeln('vvedite plowad');
readln(g.pl);
writeln('vvedite stolicy');
readln(g.st);
LG:=length(g.gos);
if LG<16 then
for i:=LG+1 to 16 do insert(' ',g.gos,i);
LS:=length(g.st);
if LS<7 then
for i:=LS+1 to 7 do insert(' ',g.st,i);
write(inp,g.gos,g.pl,g.st);
end;
close(inp);
reset(inp);
assign(out,'C:\111.out');
rewrite(out);
writeln(out,'strana');
a.pl:=g.pl ;
max:=a[1].pl;
repeat
readln(inp,g.gos,g.pl,g.st);
if max<a.pl then
for i:=1 to 9 do
max:=a.pl;
until eof(inp);
writeln(out,'naibolwaya po plowadi',g.gos,max,g.st);
close(inp);
close(out)
end.
Входной файл с государствами
Код:
Avstriya 84 Vena
Belgiya 31 Brussel
Velikobritaniya 244 London
Germaniya 357 Berlin
Franciya 544 Paris
Italiya 301 Rim
Greciya 132 Afinu
Belgiya 31 Brussel
Velikobritaniya 244 London
Germaniya 357 Berlin
Franciya 544 Paris
Italiya 301 Rim
Greciya 132 Afinu
Код:
чем инициализирована i с этого момента?
еще не добавляется пробел между площадью и столицей при вводе, и на новую строчку они не переводятся. к тому же
Код:
Avstriya 84 Vena
между 8 и V меньше 5 символов, так что V добавится к строке площади.
Код:
repeat
readln(inp,g.gos,g.pl,g.st);
if max<a.pl then
for i:=1 to 9 do
max:=a.pl;
until eof(inp);
readln(inp,g.gos,g.pl,g.st);
if max<a.pl then
for i:=1 to 9 do
max:=a.pl;
until eof(inp);
читаешь в g, но потом никак ее не используешь.
не помню как в паскале сравниваются строки с числами, но, по-моему, было бы лучше переводить строки в integer через val, а потом сравнивать. почитай про with. было бы лучше не открывать файл, как текстовый, а открывать, как бестиповый и писать структурами. тогда можно было бы поле площади заменить со строки на число.
Код:
a:array[0..16] of geo;
зачем целый массив? что мешает завести переменную, например max_g, занести в нее первую страну из файла, а все остальные страны читать в g и сравнивать поля g с max_g?