Помогите решить задачу на Pascal

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Помогите решить задачу на Pascal

Re: Помогите решить задачу на Pascal

Djarx » 09 апр 2008, 13:51

Всем большое спасибо! Разобрался, программа работает.

Re: Помогите решить задачу на Pascal

somewhere » 09 апр 2008, 13:02

&quot писал(а):Если я пишу тип F: text; то выдаёт ошибку и если задаю файл как тип запись F: file of city; тоже.
По идее конечно File of city - но предварительно этот файл должен существовать на диске и должным образом оформлен. Т.к. вы явно с двоичным кодом не дружите, то для создания такого файла потребуется отдельная программа, на том же Паскале, например - или она должна быть предоставлена преподом в качестве исходных данных. Посколько в задании
&quot писал(а):Файл состоит из записей
явно говорится, что файл существует на данный момент - то вам его должны предоставить.

Re: Помогите решить задачу на Pascal

Djarx » 09 апр 2008, 11:49

Какой тип файла написать?
Если я пишу тип F: text; то выдаёт ошибку и если задаю файл как тип запись F: file of city; тоже.

Re: Помогите решить задачу на Pascal

Хыиуду » 09 апр 2008, 11:09

Ой, ужас... извините...
Во-первых, зачем вам naselenie: real? Я думаю, для задачи не принципиально наличие в городе инвалидов и сиамских близнецов. Давайте все-таки longint. Все равно города с населением больше двух миллиардов человек нету.
Во-вторых, зачем вам весь код, связанный с нахождением МИНИМУМА, если в программе спрашивается только МАКСИМУМ?
В-третьих, нахождение максимума в массиве есть в разделе "Алгоритмы".
В-четвертых, я думаю, ваш преподаватель подразумевал, что вы должны считать все города в один массив. Ну да ладно, не хотите - как хотите. Можно и без этого.

Код: Выделить всё

{Здесь описание типа city, описание файла}
var max,current: city;
begin
max.ploshad:=1;
max.naselenie:=0;
{Здесь открытие файла на чтение}
repeat
  readln(f, current.name);
  readln(f, current.ploshad);
  readln(f, current.naselenie);
  if current.naselenie/current.ploshad>max.naselenie/max.ploshad then max:=current;
until eof(f);
writeln(max.name);

Re: Помогите решить задачу на Pascal

Djarx » 08 апр 2008, 22:39

Вот что получилось:

Код: Выделить всё

uses crt;
type
City = record
Name: string [15];
Ploshad: real;
Naselenie: real
end;
var
max, min : City;
mn, mx: real;
i,s,j,k: integer;
F: text;
m: string[100];
begin
i:=0;
s:=3;
max.Name:='';
max.Ploshad:=0;
max.Naselenie:=1;
Assign(F, 'F:\1.txt');
Reset(F);
while not EOF(F) do
begin
Readln(F,m[i]);
if m[i] =';' then
begin
   k:=i;
   while j>16 do
    begin
       min.Name[j-1]:=m[k-s];
       j:=j-1;
       s:=s+1;
    end;
    min.Ploshad := m[k-2];
    min.Naselenie := m[k-1];
    mn := min.Ploshad/min.Naselenie;
    mx := max.Ploshad/max.Naselenie;
    if mn < mx tnen
    max:=min;
    end;
    k:=i;
  end;
 else
i:=i+1;
 end;
close(F);
end;
writeln ('Gorod s samoi visokoi plotnostiu',max.Name);
writeln ('Ploshad',max.Ploshad);
writeln ('Naselenie',max.Naselenie);
readln;
end.

Re: Помогите решить задачу на Pascal

Djarx » 08 апр 2008, 22:00

Вот что у меня получилось:
uses crt;
type
City = record
Name: array [0..14] of Char;
Ploshad: real;
Naselenie: real
end;
var
max, min : City;
mn, mx: real;
i,n,j,k: integer;
F: text;
m: string [100];
begin
i:=0;
n:=0;
max.Ploshad:=0;
max.Naselenie:=0;
Assign(F, 'F:\1.txt');
Reset(F);
while not EOF(F) do
begin
Readln(F,m);
if m =';' then
begin
k:=i;
while j>16 do
begin
min.Name[j-1]:=m[k-1];
j:=j-1;
end;
min.Ploshad := m[k-2];
min.Naselenie := m[k-1];
mn := min.Ploshad/min.Naselenie;
mx := max.Ploshad/max.Naselenie;
if mn < mx tnen
max:=min;
end;
k:=i;
end;
else
i:=i+1;
end;
close(F);
end;
writeln ('Gorod s samoi visokoi plotnostiu',min.Name);
writeln ('Ploshad',min.Ploshad);
writeln ('Naselenie',min.Naselenie);
readln;
end.

Re: Помогите решить задачу на Pascal

MOTOCoder » 08 апр 2008, 21:50

А Вы покажите, что получилось у вас, и вам обязательно помогут.

Помогите решить задачу на Pascal

Djarx » 08 апр 2008, 21:14

Помогите пожалуйста решить задачку на Pascal. Готовлюсь к гос. экзаменам. Сам пробывал ничего не получается.
Условие задачи:
Файл состоит из записей, содержащих следующие сведения о столицах государств:
название (15 символов);
площадь (вещественное число);
количество жителей(вещественное число).
Вывести на экран сведения о городе с самой высокой плотностью населения.

Вернуться к началу