Дано три страны. Напечатать списко стран в порядке спаданя
плотность населения, указать количесвто школ, больниць, ВУЗов которые
припадають на 1000 человек.
Как сделать условие что бы страны выводило в порядке спадание плотности населения ? И количесвто школ, больниць, ВУЗов которые припадають на 1000 человек?
Что я сделал.
<--->
shkoly/nas*1000 - колво школ на 1000 населения
а насчёт плотности - отсортируй массив. плотность=nas/plosh
Не совсем понял как в даном случае отсортировать массив....
Вот код но он работает:
<--->
for i:=1 to 3 do
begin
max:=masv[i];
l:=i;
while j>=3 do
begin
if max<masv[j] then
begin
max:=masv[j];
l:=j;
end;
j:=j+1;
end;
masv[l]:=masv[i];
masv[i]:=max;
end;
С сортировкой я уже разобрался. Но нде мне надо расположить нахождение площяди Plot:=nas/plosh; и в писать его в запись. Тоже самое с бальницами вузами и школами где мне расположить йх
mshk:=(shkoly/nas)*1000; mbol:=(bolnic/nas)*1000; mwuz:=(wuzy/nas)*1000; ???
writeln('Na 1000 chelovek shkol',b[i].mshk);
writeln('Na 1000 chelovek bolnic',b[i].mbol);
writeln('Na 1000 chelovek',b[i].mwuz);
<--->
plot:=nas/plosh;readln(b[i].plot);
b[i].plot:=b[i].nas/b[i].plosh;
procedure Input(var b : TBase);
var
plot: real;
nas:integer;
plosh:integer;
Я правильно понял сюда надо ставить нахождение плотности населения ?
И там же больницы вузы и школы на 1000 человек ?
Если так поставить b[i].plot:=b[i].nas/b[i].plosh; то пишет тип неверный ( Type mistmatch ).
procedure Input(var b : TBase);
var
i : byte;
begin
for i := 1 to n do begin
write('Vvedite nazv strani');readln(b[i].nazv);
write('Ploshad');readln(b[i].plosh);
write('Kolichestvo naseleniya');readln(b[i].nas);
write('Kolichestvo shkol');readln(b[i].shkoly);
write('Kolichestvo bolnic');readln(b[i].bol);
write('Kolichestvo WUZov');readln(b[i].wuzy);
b[i].plot:=b[i].nas/b[i].plosh;
writeln;
end;
end;
Вроде все работает только ответы минусовые, почему ?
Vivido posle sortirovki:
Nazvnie: StranaII
Ploshyad: 16960
Naselenie: -26368
Shkol: 4000
Bolnic: 5000
Wuzov: 100
Plotnost: -1.5547169811E+00
Na 1000 chelovek shkol-1.5169902913E+02
Na 1000 chelovek bolnic-1.8962378641E+02
Na 1000 chelovek-3.7924757282E+00
Nazvnie: StranaI
Ploshyad: 13568
Naselenie: -25536
Shkol: 2500
Bolnic: 4000
Wuzov: 1000
Plotnost: -1.8820754717E+00
Na 1000 chelovek shkol-9.7901002506E+01
Na 1000 chelovek bolnic-1.5664160401E+02
Na 1000 chelovek-3.9160401003E+01
uses crt;
const
n = 2;
type
TRec = record
nazv : string;
plosh,shkoly,bol,wuzy,nas:integer;
plot : real;
end;
TBase = array [1..n] of TRec;
procedure Input(var b : TBase);
var
i : byte;
begin
for i := 1 to n do begin
write('Vvedite nazv strani');readln(b[i].nazv);
write('Ploshad');readln(b[i].plosh);
write('Kolichestvo naseleniya');readln(b[i].nas);
write('Kolichestvo shkol');readln(b[i].shkoly);
write('Kolichestvo bolnic');readln(b[i].bol);
write('Kolichestvo WUZov');readln(b[i].wuzy);
b[i].plot:=b[i].nas/b[i].plosh;
b[i].mshk:=(b[i].shkoly/b[i].nas)*1000;
b[i].mbol:=(b[i].bolnic/b[i].nas)*1000;
b[i].mwuz:=(b[i].wuzy/b[i].nas)*1000;
writeln;
end;
end;
procedure Print(b : TBase);
var
i : byte;
begin
for i := 1 to n do begin
writeln('Nazvnie: ',b[i].nazv);
writeln('Ploshyad: ',b[i].plosh);
writeln('Naselenie: ',b[i].nas);
writeln('Shkol: ',b[i].shkoly);
writeln('Bolnic: ',b[i].bol);
writeln('Wuzov: ',b[i].wuzy);
writeln('Plotnost: ',b[i].plot);
writeln('Na 1000 chelovek shkol',b[i].mshk);
writeln('Na 1000 chelovek bolnic',b[i].mbol);
writeln('Na 1000 chelovek',b[i].mwuz);
end;
end;
procedure Sort(var b : TBase);
var
i : byte;
temp : TRec;
flag : boolean;
begin
repeat
flag := true;
for i := 1 to n - 1 do
if not (b[i].plot >= b[i+1].plot) then begin
temp := b[i];
b[i] := b[i + 1];
b[i + 1] := temp;
flag := false;
end;
until flag;
end;
var
base : TBase;
begin
clrscr;
writeln('Ввод данных : ');
Input(base);
clrscr;
writeln('Вывод до сортировки : ');
Print(base);
Sort(base);
writeln;
writeln('Вывод после соритровки : ');
Print(base);
readln;
end.
В первом площядь 600000
во втором площядь 1000000
в первом население было 32000000
во втором 80000000
население и площядь впринцепи не должно миняться.
------
Сделал LongINT стало все работать.
Nazvnie: Strana II
Ploshyad: 1000000
Naselenie: 80000000
Shkol: 2500
Bolnic: 4000
Wuzov: 1000
Plotnost: 8.0000000000E+01
Na 1000 chelovek shkol 3.1250000000E-02
Na 1000 chelovek bolnic 5.0000000000E-02
Na 1000 chelovek 1.2500000000E-02
Nazvnie: Strana I
Ploshyad: 600000
Naselenie: 32000000
Shkol: 4000
Bolnic: 5000
Wuzov: 100
Plotnost: 5.3333333333E+01
Na 1000 chelovek shkol 1.2500000000E-01
Na 1000 chelovek bolnic 1.5625000000E-01
Na 1000 chelovek 3.1250000000E-03
Большое всем спасибо !