Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Записи

Автор: snopy 28.11.2007 20:46

Помогите исправить эту программу пожайлуста.
2.Определена запись:

Record
name:array [1..m] of char; {название государства}
sqr : real; {площадь территории}
peop, sch, hosp, inst: word{численность населения, число школ, больниц, вузов}
end;
Используя предложенную структуру записи, составить программу, которая для указанных государств СНГ вводит информацию и печатает название государства, удовлетворяющего требованиям, указанным в варианте и соответствующие характеристики.
Россия, Молдова, Армения. Cписок государств в порядке убывания плотности населения.

Program CNG;
const
m=3;
type
gosydarstvo=record
name:array[1..m] of char;
sqr:real;
sch:1..5000;
hosp:1..5000;
inst:1..5000;
sgr:1..50000;
treb:record
peop,sch,hosp,inst,sqr:1..5;
s:real;
end;
end;
var
Group:array[1..m] of gosydarstvo;
i:byte;
buf:gosydarstvo;
BEGIN
writeln;
for i:=1 to m do
with group[i].treb do
begin
writeln('Vvedite danye',i,'po gosydarstvy');
write('Vvedite gosydarstvo: '); readln;
write('Vvedite chislenost naselenia, chislo shkol, bolnich, vyzov, ploshad');
readln(peop, sch, hosp, inst, sqr)
end; end.
for i: to n do begin
with group[i].treb do
s=peop/sqr;
for i:=1 to n-1 do
for j=i+1 to n do
if group[i].treb.s<group[j].treb.s then
begin
buf:=group[i];
group[i]:=group[j];
group[j]:=buf;
end
END.


Автор: snopy 29.11.2007 0:06

пожайлуста помогите

Автор: мисс_граффити 29.11.2007 1:29

поиск для кого сделан?
http://forum.pascal.net.ru/index.php?showtopic=10014&hl=%EF%EB%EE%F2%ED%EE%F1%F2%FC++%ED%E0%F1%E5%EB%E5%ED*
а вот то же самое - на списках:
http://forum.pascal.net.ru/index.php?showtopic=20035&hl=%EF%EB%EE%F2%ED*++%ED%E0%F1%E5%EB%E5%ED*

Автор: snopy 29.11.2007 1:47

спасибо за эти ссылки но я не понял как мне исправить эту программу

Автор: snopy 29.11.2007 4:10

помогите пожайлуста мне эта задача очень нужна

Автор: мисс_граффити 29.11.2007 4:36

что это такое?

     treb:record
peop,sch,hosp,inst,sqr:1..5;

Зачем оно нужно и откуда взялось?

И вообще, запись по заданию должна быть задана иначе, насколько я вижу...

Автор: snopy 29.11.2007 14:07

это то что мне надо вводить а вместо 1..5 надо ставить 1.20000000 это диапозон возможных значений

Автор: Lapp 29.11.2007 14:18

Цитата(snopy @ 29.11.2007 10:07) *

это то что мне надо вводить а вместо 1..5 надо ставить 1.20000000 это диапозон возможных значений

Но зачем ты дублируешь? запись в записи.. У тебя же уже есть это все!
Разве не нужно просто взять ту запись, которая дана уже?

Автор: volvo 29.11.2007 14:26

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

const
m = 3;
type
gosydarstvo = record
name: string[10];
peop, sch, hosp, inst, sqr: longint;
s:real;
end;

const
Group: array[1 .. m] of gosydarstvo = (
(name: 'russia'; peop:150000000; sch:0; hosp:0; inst:0; sqr:17000000),
(name:'moldova'; peop: 3340000; sch:0; hosp:0; inst:0; sqr:33700),
(name:'armenia'; peop: 3213000; sch:0; hosp:0; inst:0; sqr:30000)
);

var
i, j: byte;
buf:gosydarstvo;

BEGIN
writeln;
(*
for i := 1 to m do
with group[i].treb do begin
writeln('Vvedite danye',i,'po gosydarstvy');
write('Vvedite gosydarstvo: '); readln;
write('Vvedite chislenost naselenia, chislo shkol, bolnich, vyzov, ploshad');
readln(peop, sch, hosp, inst, sqr)
end; end.
*)
for i := 1 to m do
group[i].s := group[i].peop / group[i].sqr;

for i := 1 to m do
for j := m downto i + 1 do
with group[i] do
if group[j - 1].s < group[j].s then begin
buf := group[j - 1]; group[j - 1] := group[j]; group[j] := buf;
end;

for i := 1 to m do
with group[i] do begin
writeln(name:10, s:10:5);
end;
END.


Автор: snopy 29.11.2007 14:45

Большое спасибо