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

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

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

> Записи, Вывод
Desktop II
сообщение 28.03.2006 17:39
Сообщение #1


Новичок
*

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

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


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

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

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

Сообщение отредактировано: Desktop II - 29.03.2006 10:47
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 10)
FreeMan
сообщение 28.03.2006 17:45
Сообщение #2


-
****

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

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


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

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

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


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


Новичок
*

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

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


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

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

Сообщение отредактировано: Desktop II - 29.03.2006 8:34
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 28.03.2006 21:18
Сообщение #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 
 К началу страницы 
+ Ответить 
Desktop II
сообщение 29.03.2006 9:23
Сообщение #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 - 29.03.2006 10:46
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 29.03.2006 9:42
Сообщение #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 - 5.11.2006 19:23


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Desktop II
сообщение 29.03.2006 10:05
Сообщение #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 
 К началу страницы 
+ Ответить 
F.I.A.T.
сообщение 29.03.2006 10:13
Сообщение #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...
 К началу страницы 
+ Ответить 
Desktop II
сообщение 29.03.2006 10:45
Сообщение #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 - 5.11.2006 19:24
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
F.I.A.T.
сообщение 29.03.2006 10:54
Сообщение #10


Гость






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

Используй более емкий тип: LongInt, например.
 К началу страницы 
+ Ответить 
Desktop II
сообщение 29.03.2006 10:57
Сообщение #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 - 29.03.2006 11:04
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 20.06.2025 0:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"