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

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

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

 
 Ответить  Открыть новую тему 
> Перечисляемый тип
DD
сообщение 5.05.2005 16:55
Сообщение #1


Гость






Помогите пожалуйста. Не могу прогу дописать. sad.gif Что-то уже не соображаю. Не правильно считает "Средний рост женщин". Вот код:

Код


Program laba1;
uses crt;
type name=(V, G, Ge, K, M, N, S, T, F, Sh); {Валя, Гена, Женя, Коля, Маша, Нина, Саша, Таня, Федя, Шура}
var Pol: array [name] of (Man,Woman); {мужской, женский}
   Rost: array [name] of 140..200;
   o,i,j:integer;
   z,r:real;
   c:name;


begin
clrscr;
r:=0;
o:=0;
z:=0;

Writeln ('Введите пол (1:Man, 2:Woman): ');
for c:=V to Sh do
begin
Case C of
V:write ('Валя: ');
G:write ('Гена: ');
Ge:write ('Женя: ');
K:write ('Коля: ');
M:write ('Маша: ');
N:write ('Нина: ');
S:write ('Саша: ');
T:write ('Таня: ');
F:write ('Федор: ');
Sh:write ('Шура: ')
end;
readln (i);
end;
Case i of
1:pol[c]:=Man;
2:pol[c]:=Woman;
end;

Writeln ('Введите рост (от 140 до 200): ');
For c:=V to Sh do
begin
case c of
V:write ('Валя: ');
G:write ('Гена: ');
Ge:write ('Женя: ');
K:write ('Коля: ');
M:write ('Маша: ');
N:write ('Нина: ');
S:write ('Саша: ');
T:write ('Таня: ');
F:write ('Федор: ');
Sh:write ('Шура: ')
end;
readln (j);
If pol[c]=Woman then
begin
r:=r+j;
o:=o+1;
end;
end;

If o=0 then writeln ('Невозможно вычислить средний рост женщин!') else
begin
z:=r/o;
Writeln;
Writeln ('Средний рост женщин: ',z:8:3);
end
end.


 К началу страницы 
+ Ответить 
volvo
сообщение 5.05.2005 17:19
Сообщение #2


Гость






DD, а что, обязательно каждый раз использовать Case для распечатки имен? Есть же способ гораздо лучше: использовать типизированные константы...

Кроме этого - используйте "говорящие" имена переменных. Вот, сравните:


Program laba1;
uses crt;
type
name=(V, G, Ge, K, M, N, S, T, F, Sh);
gender = (Man, Woman);

const
people: array[name] of string = (
'Валя', 'Гена', 'Женя', 'Коля', 'Маша',
'Нина', 'Саша', 'Таня', 'Федя', 'Шура');

var
Pol: array [name] of gender; {мужской, женский}
total, count, i, j:integer;
human:name;

begin
clrscr;
total:=0;
count:=0;

Writeln ('Введите пол (1:Man, 2:Woman): ');
for human := low(name) to high(name) do begin
write(people[human], ' '); readln(i);
pol[human] := gender(pred(i));
end;

writeln('Введите рост (от 140 до 200): ');
for human := low(name) to high(name) do begin
write(people[human], ' '); readln(j);
if pol[human] = Woman then begin
total := total + j; inc(count);
end;
end;

If count=0 then writeln ('Невозможно вычислить средний рост женщин!')
else begin
Writeln;
Writeln ('Средний рост женщин: ',total/count:8:3);
end
end.
 К началу страницы 
+ Ответить 
DD
сообщение 5.05.2005 19:11
Сообщение #3


Гость






Цитата(volvo @ 5.05.05 17:19)
DD, а что, обязательно каждый раз использовать Case для распечатки имен? Есть же способ гораздо лучше: использовать типизированные константы...



Да. Это в условии. Если не сложно, помогите пожалуйста мою программу сделать рабочей.
 К началу страницы 
+ Ответить 
volvo
сообщение 6.05.2005 11:13
Сообщение #4


Гость






Цитата(DD @ 5.05.05 19:11)
Если не сложно, помогите пожалуйста мою программу сделать рабочей.

Ну тогда, может быть просто
Case i of
1:pol[c]:=Man;
2:pol[c]:=Woman;
end;

внести внутрь цикла?
Writeln ('Введите пол (1:Man, 2:Woman): ');
for c:=V to Sh do { <--- Вот этого цикла... }


Сейчас это почему-то снаружи, следовательно все считаются лицами мужского пола, и счетчик женщин = 0... А на ноль делить нельзя... smile.gif
 К началу страницы 
+ Ответить 

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

 



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