Помощь - Поиск - Пользователи - Календарь
Полная версия: Записи
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Student91
Задача:
Составить структуру, содержащую информацию о студентах факультета: указав фамилию и год рождения, а также, если это мужчина, то сообщить, военнообязанный ли он, а если это женщина, то указать, замужем ли она, городские, иногородние, имеющие жилплощадь, нуждающиеся в общежитии. Определить количество студентов нуждающихся в общежитии.Я запутался как описать "да, нет" , "город , село" и как правельно вводить . Но все остальное вроде написал вот :

program laba ;
Type pol=(m,w);
people=record
fam:string[20];
imya:string[20];
godro:1900..2011;
mesto:gorod,selo; (вот тут как правельно описать "gorod,selo" и ниже тот же вопрос про да \нет)
obwejitie: da,net;
grupp: 101..103
case mw:pol of
m: ( voen: boolean);
w: ( merry: boolean);
end;

end;
var student: array [1..100] of people;
i,m,n: integer;
begin
writeln ('vvedite kol-vo studentov');
readln (n);
for i:=1 to n do
with people[i];
begin
writeln ('vvedite svediniya o', I , '-m studente');
writeln ('vvedite familiy');
readln тут незнаю как ввести правельно.
...

end;
writeln ('vvod zakonchen');
writeln ;
Выбираем тех кому нужна общага
for i:=1 to n do
if student[i].obwejitie=da then
m:=m+1;
writeln(' obwejitie nyshno: ',m);
end.

Зарание спасибо за помощь , реально не понимаю sad.gif
volvo
Смотри:
program laba ;
type
// Сначала описываешь все типы, которые будешь использовать
// Можно и без этого обойтись, но нежелательно, потом будут проблемы
// с приведением типов.
pol = (m, f);
place = (gorod, selo);
yes_no = (da, net);

// Теперь твоя запись
people =
record
fam: string[20];
imya: string[20];
godro: 1900..2011;
mesto: place;
obwejitie: yes_no;
grupp: 101..103;
case mw:pol of
m: (voen: boolean);
f: (merry: boolean);
end; // Здесь достаточно только одного End, он закроет и Case и Record

var
student: array [1..100] of people;
i, n, count: integer; // Счетчик нельзя называть M, такое имя уже есть в описании pol
ans : integer;

begin
writeln ('vvedite kol-vo studentov');
readln (n);
for i:=1 to n do
with student[i] do // Идем по массиву student
begin
writeln ('vvedite svediniya o', I , '-m studente');
writeln ('vvedite familiy'); readln(fam);

// Место рождения: просим ввести число, обозначающее нужное место
// Потом это число преобразуем к типу Place
writeln ('mesto : (0 = gorod; 1 = selo)');
readln(ans); mesto := place(ans);

// Таким же образом вводим и информацию, нужно ли общежитие
// ... попробуй сделать это сам ...

// Все остальные поля
end;
writeln ('vvod zakonchen');
writeln ;

count := 0;
for i:=1 to n do
if student[i].obwejitie = da then count := count + 1;

writeln(' obwejitie nyshno: ', count);
end.
Форматируй код сразу, это поможет в дальнейшем не ошибаться кое-где, где без форматирования "лесенкой" ошибки будут наверняка...
Student91
Вот что вышло, но выдает ошибку на "case"

program laba ;
type

pol = (m, f);
place = (gorod, selo);
yes_no = (da, net);
people = record
fam: string[20];
imya: string[20];
godro: 1900..2011;
mesto: place;
obwejitie: yes_no;
grupp: 101..103;
case mw:pol of
m: (voen: boolean);
f: (merry: boolean);
end;

var
student: array [1..100] of people;
i, n, count: integer;
ans : integer;

begin
writeln ('vvedite kol-vo studentov');
readln (n);
for i:=1 to n do
with student[i] do
begin
writeln ('vvedite svediniya o', I , '-m studente');
writeln ('vvedite familiy');
readln(fam);
writeln ('vvedite imya');
readln(imya);
writeln ('vvedite god rozdeniya (1900-2011)');
readln(godro);
writeln ('mesto : (0 = gorod; 1 = selo)');
readln(ans); mesto := place(ans);
writeln ('obwejitie : (0 = nado; 1 = nenado)');
readln(ans);
obwejitie := yes_no(ans);
writeln ('pol : (0 = male; 1 = female)');
readln(ans);
obwejitie := pol(ans);
writeln ('vvedite group');
readln(grupp);
end;
writeln ('vvod zakonchen');
writeln ;

count := 0;
for i:=1 to n do
if student[i].obwejitie = da then count := count + 1;

writeln(' obwejitie nyshno: ', count);
end.
volvo
Не на Case у тебя ошибку должно выдавать. А на

Цитата
      writeln ('pol : (0 = male; 1 = female)');
readln(ans);
obwejitie := pol(ans); // Вот эту строку
writeln ('vvedite group');
readln(grupp);
Поле, где хранится пол студента, как называется у тебя: MW? Вот и пиши:

      mw := pol(ans); // Вот так вот
, тогда ошибок не будет...
Student91
Не понял sad.gif
Student91
Цитата(volvo @ 21.02.2011 13:37) *

Не на Case у тебя ошибку должно выдавать. А на

Поле, где хранится пол студента, как называется у тебя: MW? Вот и пиши:

      mw := pol(ans); // Вот так вот
, тогда ошибок не будет...

не могли бы вы подробнее обьснить пожалуйсто?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.