ПОМОГИТЕ ПОЖАЛУЙСТА!!РЕШИТЬ 2 ЗАДАЧКИ (ТИП-ЗАПИСИ)
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
1 ЗАДАЧА)Известны вес и пол каждого из 20 человек. Найти:
а) общую массу мужчин;
б) средний вес женщин.
2 ЗАДАЧА)Написать программу, в которой хранится информация об учениках музыкальной школы. Организовать меню для работы с программой, реализующее следующие пункты:
1- вывод всей информации в табличной форме;
2- вывод сведений о тех, кто играет на скрипке;
3- выход из программы.
а) общую массу мужчин;
б) средний вес женщин.
2 ЗАДАЧА)Написать программу, в которой хранится информация об учениках музыкальной школы. Организовать меню для работы с программой, реализующее следующие пункты:
1- вывод всей информации в табличной форме;
2- вывод сведений о тех, кто играет на скрипке;
3- выход из программы.
вот ервая со второй пока не розобрался
Код: Выделить всё
uses crt;
type tab = record
ves:real;
pol:string;
end;
const n=20;
var tabl:array [1..n] of tab;
sred:real;
obsh,obsh1,k:real;
i:byte;
BEGIN
clrscr;
for i:=1 to n do
begin
writeln('Vedite dani N',i,':');
write('ves(kg):');readln(tabl[i].ves);
write('Pol(Man/Wyman)');readln(tabl[i].pol);
writeln(' ');
end;
for i:=1 to n do
begin
if tabl[i].pol = 'man'
then obsh:=tabl[i].ves;
end;
writeln('Obshiu ves vyshin:',obsh:20:2);
for i:=1 to n do
begin
if tabl[i].pol = 'wyman'
then begin
obsh1:=tabl[i].ves;
k:=k+1;
end;
end;
sred:=obsh1/k;
writeln('Srenee vsex )I(enchin:',sred:20:2);
readln;
END.
Спасибо большое очень выручил___вот только без 2ой я не смогу здать----помогите
-
- Сообщения: 296
- Зарегистрирован: 13 фев 2008, 20:10
- Откуда: Беларусь. Орша
- Контактная информация:
Вот как вариант второй
[syntax=Delphi]
Const
w=100;
Type
Rec =record
Sname:string[25];
Name: string[18];
Cl:byte;
Instr:string[20];
end;
Var
R:array[1..w] of Rec;
n,i,k:integer;
esc:char;
Procedure Input;
Begin
Writeln('Введите общее количество записей');
Readln(n);
Writeln('Введите данные учеников ');
For k:=1 to n do begin
Writeln('номер записи ',K);
Writeln;
Write('Введите фамилию ученика ');
Readln(R[k].Sname);
Write('Введите имя ученика ');
Readln(R[k].Name);
Write('Введите класс (от 0 до 7) ');
Readln(R[k].Cl);
Write('Введите инструмент ');
Readln(R[k].Instr);
end;
End;
Procedure OutPut;
begin
For k:=1 to n do begin
with R[k] do begin
Writeln(Sname:25,'|':4, Name:18,'|':4,Cl:4,'|':4,Instr:20,'|':4);
end;
end;
end;
Procedure Scripka;
var s,s1:string;
Begin
S:='Скрипка';
S1:='скрипка';
k:=1;
While k<=n do begin
if (R[k].Instr=S) or (R[k].Instr=S1) then begin
with R[k] do begin
Writeln(Sname:25,'|':4, Name:18,'|':4,Cl:4,'|':4,Instr:20,'|':4);
end;inc(k);
end
else inc(k);
end;
End;
Procedure Go_Out;
Begin
Writeln('Произведен выход из программы.');
Writeln('Для выхода в предыдущее меню, нажмите RESET');
Writeln('Press any key');
readln;
Halt;
end;
Begin
Input;
Writeln;
Repeat
Writeln('Для вывода всей информации на экран, нажмите 1');
Writeln('Для вывода данных, о тех кто играет на скрипке, нажмите 2');
Writeln('Для выхода из программы, нажмите 3');
Readln(i);
Case i of
1:OutPut;
2:Scripka;
3:Go_Out;
end;
Writeln('Press any key');
Until esc=#27;
End.
[/syntax]
[syntax=Delphi]
Const
w=100;
Type
Rec =record
Sname:string[25];
Name: string[18];
Cl:byte;
Instr:string[20];
end;
Var
R:array[1..w] of Rec;
n,i,k:integer;
esc:char;
Procedure Input;
Begin
Writeln('Введите общее количество записей');
Readln(n);
Writeln('Введите данные учеников ');
For k:=1 to n do begin
Writeln('номер записи ',K);
Writeln;
Write('Введите фамилию ученика ');
Readln(R[k].Sname);
Write('Введите имя ученика ');
Readln(R[k].Name);
Write('Введите класс (от 0 до 7) ');
Readln(R[k].Cl);
Write('Введите инструмент ');
Readln(R[k].Instr);
end;
End;
Procedure OutPut;
begin
For k:=1 to n do begin
with R[k] do begin
Writeln(Sname:25,'|':4, Name:18,'|':4,Cl:4,'|':4,Instr:20,'|':4);
end;
end;
end;
Procedure Scripka;
var s,s1:string;
Begin
S:='Скрипка';
S1:='скрипка';
k:=1;
While k<=n do begin
if (R[k].Instr=S) or (R[k].Instr=S1) then begin
with R[k] do begin
Writeln(Sname:25,'|':4, Name:18,'|':4,Cl:4,'|':4,Instr:20,'|':4);
end;inc(k);
end
else inc(k);
end;
End;
Procedure Go_Out;
Begin
Writeln('Произведен выход из программы.');
Writeln('Для выхода в предыдущее меню, нажмите RESET');
Writeln('Press any key');
readln;
Halt;
end;
Begin
Input;
Writeln;
Repeat
Writeln('Для вывода всей информации на экран, нажмите 1');
Writeln('Для вывода данных, о тех кто играет на скрипке, нажмите 2');
Writeln('Для выхода из программы, нажмите 3');
Readln(i);
Case i of
1:OutPut;
2:Scripka;
3:Go_Out;
end;
Writeln('Press any key');
Until esc=#27;
End.
[/syntax]
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
всем большое спасибо и respect!!!!
Vovchik, немного советов по оптимизации
pol:string; - лучше не надо. Лучше все-таки boolean. Потому что, во-первых, "женщина" пишется как "woman", во-вторых, пользователь может ошибиться при наборе. У вас уже в программе глюк: предлагаете ввести Man/Wyman, а проверяете man/wyman - совпадения не будет никогда, потому что регистр символов имеет значение при проверке строковых констант. Одна проблема, исключительно морального характера - какой пол считать true, а какой false.
for i:=1 to n do
begin
if tabl.pol = 'man'
then obsh:=tabl.ves;
end;
Так мы найдем не общую массу мужчин, а массу последнего. Меняем obsh:=tabl.ves; на inc(obsh,tabl.ves)
pol:string; - лучше не надо. Лучше все-таки boolean. Потому что, во-первых, "женщина" пишется как "woman", во-вторых, пользователь может ошибиться при наборе. У вас уже в программе глюк: предлагаете ввести Man/Wyman, а проверяете man/wyman - совпадения не будет никогда, потому что регистр символов имеет значение при проверке строковых констант. Одна проблема, исключительно морального характера - какой пол считать true, а какой false.
for i:=1 to n do
begin
if tabl.pol = 'man'
then obsh:=tabl.ves;
end;
Так мы найдем не общую массу мужчин, а массу последнего. Меняем obsh:=tabl.ves; на inc(obsh,tabl.ves)
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Хыиуду писал(а):Vovchik,
for i:=1 to n do
begin
if tabl.pol = 'man'
then obsh:=tabl.ves;
end;
Так мы найдем не общую массу мужчин, а массу последнего. Меняем obsh:=tabl.ves; на inc(obsh,tabl.ves)
просто я хотел написать obsh:=obsh+tabl.ves та чучуть не дописал

А на шёт boolean спосибо я както упустил из вида (( так что приму ко вниманию !!!
Хыиуду, только у меня один вопрос как ето примерно будет выглядеть а то я сижу парю мозги но без стринга не как не получаеца, просто как ввести "женшины/Мужчины" без стринга ???
-
- Сообщения: 296
- Зарегистрирован: 13 фев 2008, 20:10
- Откуда: Беларусь. Орша
- Контактная информация:
Vovchik
Ввод через множества можно. т.к. в наборе пользователь может допустить ну максимум 2-3 ошибки, поэтому если через множества, то
Женшины:'Ж' 'ж' 'Е' 'е' 'Н' 'н' 'Щ' 'щ' и т.д + транслит. если из 7 букв 5-6 находиться во множестве, значит правильно.
Это исключительно как вариант, ну что бы уже совсем без String
Ввод через множества можно. т.к. в наборе пользователь может допустить ну максимум 2-3 ошибки, поэтому если через множества, то
Женшины:'Ж' 'ж' 'Е' 'е' 'Н' 'н' 'Щ' 'щ' и т.д + транслит. если из 7 букв 5-6 находиться во множестве, значит правильно.
Это исключительно как вариант, ну что бы уже совсем без String
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.