Занесите информацию о десяти странах мира в массивы NAME (название страны), K (численность населения), S (площадь страны). Напишите программу, выводящую названия стран в порядке возрастания плотности их населения.
Плотность населения страны равна численности населения, делённой на площадь: NAME[i], K[i], S[i] связаны общим индексом. Если менять порядок стран, нужно переставлять все три значения вместе: иначе название окажется рядом с данными другой страны.
Пример заполнения массивов округлёнными данными. Население здесь записано в миллионах человек, площадь — в тысячах км²; при таком вводе плотность равна
| NAME | K, млн человек | S, тыс. км² |
|---|---|---|
| Австралия | ||
| Бразилия | ||
| Канада | ||
| Россия | ||
| Китай | ||
| Индия | ||
| США | ||
| Германия | ||
| Франция | ||
| Япония |
Программа читает десять строк в виде «название», затем «население площадь» (при вводе вещественных чисел Паскаль использует точку). После чтения двух вложенных циклов сравниваются соседние по выбору пары. Если плотность страны j меньше плотности страны i, меняем местами элементы во всех трёх массивах. Площадь должна быть положительной, чтобы деление было определено.
program CountryDensity;
var
NAME: array[ .. ] of string;
K, S: array[ .. ] of real;
i, j: integer;
tempName: string;
tempNumber: real;
begin
for i := to do
begin
write('Страна ', i, ': ');
readln(NAME[i]);
repeat
write('Население (млн), площадь (тыс. км ): ');
readln(K[i], S[i]);
until S[i] > ;
end;
for i := to do
for j := i + to do
if K[j] / S[j] < K[i] / S[i] then
begin
tempName := NAME[i]; NAME[i] := NAME[j];
NAME[j] := tempName;
tempNumber := K[i]; K[i] := K[j];
K[j] := tempNumber;
tempNumber := S[i]; S[i] := S[j];
S[j] := tempNumber;
end;
for i := to do
writeln(NAME[i], ': ', * K[i] / S[i]: : ,
' чел./км ');
end.
Покажем отдельные вычисления для проверки порядка: Австралия —
Для данных примера: Австралия, Канада, Россия, Бразилия, США, Франция, Китай, Германия, Япония, Индия — по возрастанию плотности населения.
