IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Записи, Вывод
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской

Репутация: -  0  +


Дано три страны. Напечатать списко стран в порядке спаданя
плотность населения, указать количесвто школ, больниць, ВУЗов которые
припадають на 1000 человек.

Как сделать условие что бы страны выводило в порядке спадание плотности населения ? И количесвто школ, больниць, ВУЗов которые припадають на 1000 человек?

Что я сделал.
<--->

Сообщение отредактировано: Desktop II -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


shkoly/nas*1000 - колво школ на 1000 населения

а насчёт плотности - отсортируй массив. плотность=nas/plosh

Сообщение отредактировано: FreeMan -


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской

Репутация: -  0  +


Не совсем понял как в даном случае отсортировать массив....

Вот код но он работает:
<--->

Сообщение отредактировано: Desktop II -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Цитата(Desktop II @ 28.03.2006 18:25) *
Не совсем понял как в даном случае отсортировать массив....
Вот код но он работает

мм?
так пугает работающий код?
если серьезно - глюк здесь.
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;

тебе же надо сортировать по плотности?
вот и сравнивай плотности! то есть не masv[i], а masv[i].plot


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской

Репутация: -  0  +


С сортировкой я уже разобрался. Но нде мне надо расположить нахождение площяди 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);
<--->

Сообщение отредактировано: Desktop II -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


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;

тебе вообще зачем?

Сообщение отредактировано: volvo -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской

Репутация: -  0  +


Я правильно понял сюда надо ставить нахождение плотности населения ?
И там же больницы вузы и школы на 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;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата(Desktop II @ 29.03.2006 10:05)
Если так поставить b[i].plot:=b[i].nas/b[i].plosh; то пишет тип неверный ( Type mistmatch ).

Type Mismatch - это несоответствие типов. Кстати, совершенно правильно пишет: тип Byte не может хранить данные вещественного типа... Используй Trunc, если тебе достаточно целой части, или меняй тип поля plot на real...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской

Репутация: -  0  +


Вроде все работает только ответы минусовые, почему ?
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.


Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата
Вроде все работает только ответы минусовые, почему ?
То-есть, нам предлагается телепатически определить, какие ты данные вводил? Или ты все-таки приведешь их САМ? Есть идея, что было введено "Население" больше 32767, произошло переполнение, результат ушел в минус.

Используй более емкий тип: LongInt, например.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской

Репутация: -  0  +


В первом площядь 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

Большое всем спасибо !

Сообщение отредактировано: Desktop II -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 10.11.2024 9:14
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name