Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.12.2009, 17:24
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию Записной тип данных...

Помогите понять почему прога не выводит имя государства с наибольшим количеством городов???
Код:
{$APPTYPE CONSOLE}

uses
  SysUtils;

const n=3;
type gos =record
             name:string;
             s,ch,col:integer;
            end;
     mas=array[1..n] of gos;
var i,k,k1,k2,m1,m2:integer;
   sr, pl,col,max:real;
    a,b:string;
    m:mas;
begin
 for i:=1 to n do
  begin
   writeln('Enter name');
   readln(m[i].name);
   writeln('Enter s,ch,col ');
   readln(m[i].s,m[i].ch,m[i].col);
end;
 sr:=0;
 max:=0;
 for i:=1 to n do
  begin
   if (m[i].s<>0) and (m[i].ch<>0) then sr:=m[i].ch/m[i].s;
   writeln(m[i].name,' ',sr:0:2);
   if col>max then
    begin
     max:=col;
     k:=i;
    end;
  end;
 writeln('Max. colichestvo gorodov v gosudarstve ',m[k].name);
writeln('Enter name1');
 readln(a);
 writeln('Enter name2');
 readln(b);
 k1:=0;
 k2:=0;
 for i:=1 to n do
   if a=m[i].name then
 begin
     m1:=m[i].s;
     k1:=1;
 end;
       for i:=1 to n do
        if b=m[i].name then
     begin
     m2:=m[i].s;
     k2:=1;
     end;
 if (k1=0) or (k2=0) then writeln('No this gos ')
 else
 if m1=m2 then writeln('Odinakovo')
 else
 if m1<m2 then writeln('Ploschad ',b,' bolshe plo ',a,' na ',m2-m1)
 else writeln('Plochad ',a,' bolshe pl ',b,' na ',m1-m2);
readln;
end.

Последний раз редактировалось Asira, 27.12.2009 в 18:12.
Ответить с цитированием
  #2  
Старый 23.12.2009, 03:09
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Разбей программу на отдельные процедуры - читать же невозможно!!!
Ответить с цитированием
  #3  
Старый 23.12.2009, 03:46
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

2. Давай имена переменным более осмысленные) читать программу станет легче.
Ответить с цитированием
  #4  
Старый 23.12.2009, 13:24
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Как уже сказали, читать такой код трудно. Вот какое подозрение закралось:
Код:
for i:=1 to n do
  begin
   if (m[i].s<>0) and (m[i].ch<>0) then sr:=m[i].ch/m[i].s;
   writeln(m[i].name,' ',sr:0:2);
   if col>max then
    begin
     max:=col;
     k:=i;
    end;
  end;
Видимо в этом блоке должно быть не Col а m[i].col
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 23.12.2009, 18:50
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию

Спасибки!!!!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:18.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025