Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вывести страну с наибольшей площадью в выходной файл

70K
04 мая 2011 года
arefdiman
1 / / 04.05.2011
Помогите найти ошибку в задачи.

Условие задачи:
Дан список стран (во входном файле). Вывести страну с наибольшей площадью в выходной файл, и в ходе программы добавить еще 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.


Входной файл с государствами
 
Код:
Avstriya        84  Vena
    Belgiya         31  Brussel
    Velikobritaniya 244 London
    Germaniya       357 Berlin
    Franciya        544 Paris
    Italiya         301 Rim
    Greciya         132 Afinu
316
05 мая 2011 года
Alm3n
889 / / 29.05.2009
 
Код:
a.pl:=g.pl ;
    max:=a[1].pl;

чем инициализирована 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);

читаешь в g, но потом никак ее не используешь.
не помню как в паскале сравниваются строки с числами, но, по-моему, было бы лучше переводить строки в integer через val, а потом сравнивать. почитай про with. было бы лучше не открывать файл, как текстовый, а открывать, как бестиповый и писать структурами. тогда можно было бы поле площади заменить со строки на число.
 
Код:
a:array[0..16] of geo;

зачем целый массив? что мешает завести переменную, например max_g, занести в нее первую страну из файла, а все остальные страны читать в g и сравнивать поля g с max_g?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог