Страница 1 из 2
ПОМОГИТЕ ПОЖАЛУЙСТА!!РЕШИТЬ 2 ЗАДАЧКИ (ТИП-ЗАПИСИ)
Добавлено: 26 мар 2008, 17:59
ромка)
1 ЗАДАЧА)Известны вес и пол каждого из 20 человек. Найти:
а) общую массу мужчин;
б) средний вес женщин.
2 ЗАДАЧА)Написать программу, в которой хранится информация об учениках музыкальной школы. Организовать меню для работы с программой, реализующее следующие пункты:
1- вывод всей информации в табличной форме;
2- вывод сведений о тех, кто играет на скрипке;
3- выход из программы.
Re: ПОМОГИТЕ ПОЖАЛУЙСТА!!РЕШИТЬ 2 ЗАДАЧКИ (ТИП-ЗАПИСИ)
Добавлено: 26 мар 2008, 21:01
Vovchik
вот ервая со второй пока не розобрался
Код: Выделить всё
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.
Re: ПОМОГИТЕ ПОЖАЛУЙСТА!!РЕШИТЬ 2 ЗАДАЧКИ (ТИП-ЗАПИСИ)
Добавлено: 26 мар 2008, 22:11
ромка)
Спасибо большое очень выручил___вот только без 2ой я не смогу здать----помогите
Re: ПОМОГИТЕ ПОЖАЛУЙСТА!!РЕШИТЬ 2 ЗАДАЧКИ (ТИП-ЗАПИСИ)
Добавлено: 26 мар 2008, 22:26
C_O_D_E
Вот как вариант второй
[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]
Re: ПОМОГИТЕ ПОЖАЛУЙСТА!!РЕШИТЬ 2 ЗАДАЧКИ (ТИП-ЗАПИСИ)
Добавлено: 26 мар 2008, 22:54
ромка)
всем большое спасибо и respect!!!!
Re: ПОМОГИТЕ ПОЖАЛУЙСТА!!РЕШИТЬ 2 ЗАДАЧКИ (ТИП-ЗАПИСИ)
Добавлено: 27 мар 2008, 11:34
Хыиуду
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)
Re: ПОМОГИТЕ ПОЖАЛУЙСТА!!РЕШИТЬ 2 ЗАДАЧКИ (ТИП-ЗАПИСИ)
Добавлено: 27 мар 2008, 21:24
Vovchik
Хыиуду писал(а):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 та чучуть не дописал
надо исправиться !!!
Re: ПОМОГИТЕ ПОЖАЛУЙСТА!!РЕШИТЬ 2 ЗАДАЧКИ (ТИП-ЗАПИСИ)
Добавлено: 27 мар 2008, 21:25
Vovchik
А на шёт boolean спосибо я както упустил из вида (( так что приму ко вниманию !!!
Re: ПОМОГИТЕ ПОЖАЛУЙСТА!!РЕШИТЬ 2 ЗАДАЧКИ (ТИП-ЗАПИСИ)
Добавлено: 27 мар 2008, 21:42
Vovchik
Хыиуду, только у меня один вопрос как ето примерно будет выглядеть а то я сижу парю мозги но без стринга не как не получаеца, просто как ввести "женшины/Мужчины" без стринга ???
Re: ПОМОГИТЕ ПОЖАЛУЙСТА!!РЕШИТЬ 2 ЗАДАЧКИ (ТИП-ЗАПИСИ)
Добавлено: 27 мар 2008, 21:48
C_O_D_E
Vovchik
Ввод через множества можно. т.к. в наборе пользователь может допустить ну максимум 2-3 ошибки, поэтому если через множества, то
Женшины:'Ж' 'ж' 'Е' 'е' 'Н' 'н' 'Щ' 'щ' и т.д + транслит. если из 7 букв 5-6 находиться во множестве, значит правильно.
Это исключительно как вариант, ну что бы уже совсем без String