• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

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

arefdiman

Ученик
Регистрация
5 Май 2011
Сообщения
2
Реакции
0
Баллы
0
Вывести страну с наибольшей площадью

Условие задачи:
Дан список стран (во входном файле). Вывести страну с наибольшей площадью в выходной файл, и в ходе программы добавить еще 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[i].pl:=g.pl ;
max:=a[1].pl;
repeat
readln(inp,g.gos,g.pl,g.st);
for i:=1 to 9 do
   if max<a[i].pl then
   max:=a[i].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
 
Помогите, пожалуйста, в задачи найти ошибку. Почему у меня не правильно находит страну с наибольшей площадью.
Да, пришлось-таки повозиться. Ошибок очень много. Ниже идет исправленный код, Вы уж сверку сделайте сами. И учтите: здесь КАЖДОЕ исправление - принципиально, косметикой я не занимался и старался максимально соблюсти исходный стиль программы, хотя... ну да ладно. В таком виде - работает. ВАЖНО! В исходном файле-перечне маркер должен обязательно стоять на начале первой после текста пустой строки, а не в конце последней строки. Проследите!
Код:
Program a9;
Uses crt;
type geo=record
     gos:string[16];
     pl:Word;
     st:string;
     end;
Var
 a:array[1..16] of geo;
 inp,out:text;
 g:geo;
 k:1..5;
 LG:1..16;
 i:1..16;
 max:Word;
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);
   writeln(inp,g.gos,g.pl,' ',g.st);
  end;
 close(inp);
 reset(inp);
 i:=1;
 max:=0;
 repeat
  readln(inp,a[i].gos,a[i].pl,a[i].st);
  if max<a[i].pl then
   begin
    max:=a[i].pl;
    g:=a[i];
   end;
  Inc(i);
 until eof(inp);
 assign(out,'C:\111.out');
 rewrite(out);
 writeln(out,'strana');
 writeln(out,'naibolwaya po plowadi ',g.gos,' ',max,' ',g.st);
 close(inp);
 close(out)
end.
 
Спасибо огромное, за помощь
 
Назад
Сверху