Тема: Знайти суму ряда чисел.
Дано Type IM=(Анна, Володимир, Тетяна, Юрій, Микола, Володимир);
gr=record
стать=(чол, жін);
зріст: 140..160;
end;
Описати функцію, яка визначає середній зріст жінок у групі. Допоможіть будьласка!
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Pascal/Delphi → Знайти суму ряда чисел.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Дано Type IM=(Анна, Володимир, Тетяна, Юрій, Микола, Володимир);
gr=record
стать=(чол, жін);
зріст: 140..160;
end;
Описати функцію, яка визначає середній зріст жінок у групі. Допоможіть будьласка!
Ви щось уже пробували робити? На чому спіткнулися?
Не пробував... Мені крім цього завдання ще 7 потрібно зробити на завтра, ось и прошу допомоги....
program lab;
Const
N = 2;
Type
TGender = (MAN, WOOMAN);
TAge = 140..160;
TRecord = record
name: String;
gender: TGender;
age: TAge;
end;
Var
i: integer;
sum, count: integer;
records: array [1..N] of TRecord;
begin
for i := 1 to N do
begin
writeln('Record ', i);
writeln('Name[', i, ']:');
readln(records[i].name);
writeln('Gender[', i, '] (Man or Wooman):');
readln(records[i].gender);
writeln('Age[', i, '] (From 140 to 160):');
readln(records[i].age);
end;
sum := 0;
count := 0;
for i := 1 to N do
begin
if records[i].gender = WOOMAN then
begin
sum := sum + records[i].age;
inc(count);
end;
end;
if count = 0 then
writeln('No woomen in records')
else
writeln('Avg age = ', (sum / count):2:1);
end.
Error 64: Cannot Read or Write variables of this type.
readln(records[i].gender);
Що це??
Error 64: Cannot Read or Write variables of this type.
readln(records[i].gender);
Що це??
Це помилка
Неможливо зчитати та записати у змінну цього типу.
Це під час компіляції чи під час вводу даних?
Думаю що під час вводу, оскільки юзер міг ввести не ті дані, ну а оскільки перевірки на правильність немає, тому програма і вилітає з помилкою.
howlvolcano
Ну помилка, ну так виправте її! Зробіть щоб ввід символу "w" означав WOOMAN, а "m" - MAN. Впораєтеся?
Перевірив на Geany, компілюється успішно:
fpc "безіменний.pas" (у теці: /home/vpn) Free Pascal Compiler version 2.6.0-6 [2012/10/05] for x86_64 Copyright (c) 1993-2011 by Florian Klaempfl and others Target OS: Linux for x86-64 Compiling безіменний.pas Linking безіменний /usr/bin/ld: попередження: link.res містить розділи виведення даних; не забули параметр -T? 44 lines compiled, 0.4 sec Компіляція була успішною.
У мене теж fpc, тому все скомпілювалось і працює.
Аналогічно попробував у себе на fpc, теж працює.
Compilation finished successfully.
А от на Turbo Pascal помилка.
Судячи з опису завдання, тут взагалі PascalABC може бути.
Автор, то чим ви користуєтеся?
Тепер на Turbo Pascal компілюється.
program lab;
Const
N = 2;
Type
TGender = (MAN, WOOMAN);
TAge = 140..160;
TRecord = record
name: String;
gender: TGender;
age: TAge;
end;
Var
sex: string; {для тих хто не знає, sex - від анг стать}
i: integer;
sum, count: integer;
records: array [1..N] of TRecord;
begin
for i := 1 to N do
begin
writeln('Record ', i);
writeln('Name[', i, ']:');
readln(records[i].name);
writeln('Gender[', i, '] (Man or Wooman):');
readln(sex);
if(sex = 'MAN')
then
records[i].gender:=MAN
else
records[i].gender:=WOOMAN;
writeln('Age[', i, '] (From 140 to 160):');
readln(records[i].age);
end;
sum := 0;
count := 0;
for i := 1 to N do
begin
if records[i].gender = WOOMAN then
begin
sum := sum + records[i].age;
inc(count);
end;
end;
if count = 0 then
writeln('No woomen in records')
else
writeln('Avg age = ', (sum / count):2:1);
end.
P.S: ідея Torbins.
P.P.S: на форматування не дивіться, це ctrl+c , ctrl+v
Користуюсь Турбо, но вже перейду на АБЦ. Люди, хто ще зможе допомгти з цим дурним паскалем - в пм будь ласка. А то до екзамену не допустять.... Можу навіть якось віддячити
Програма від Хантера працює.
Чесно кажучи я в паскалі повний нуль.... Так, що, друзі, потрібна ваша допомога....
Запустив - працює начебто. Але можу задавати умову тільки для двух людей Анни и Валентини, а по умові потрібно 6 людей. І ось цей рядок "writeln('No woomen in records')" не видає коли пишу 2 чоловіків
Replace написав:Програма від Хантера працює.
Чесно кажучи я в паскалі повний нуль.... Так, що, друзі, потрібна ваша допомога....
Запустив - працює начебто. Але можу задавати умову тільки для двух людей Анни и Валентини, а по умові потрібно 6 людей. І ось цей рядок "writeln('No woomen in records')" не видає коли пишу 2 чоловіків
А якщо так:
program lab;
Const
N = 6;
Type
TGender = (MAN, WOOMAN);
TAge = 140..160;
TRecord = record
name: String;
gender: TGender;
age: TAge;
end;
Var
sex: string; {для тих хто не знає, sex - від анг стать}
i: integer;
sum, count: integer;
records: array [1..N] of TRecord;
begin
for i := 1 to N do
begin
writeln('Record ', i);
writeln('Name[', i, ']:');
readln(records[i].name);
writeln('Gender[', i, '] (Man or Wooman):');
readln(sex);
if(sex = 'MAN')
then
records[i].gender:=MAN
else
records[i].gender:=WOOMAN;
writeln('Age[', i, '] (From 140 to 160):');
readln(records[i].age);
end;
sum := 0;
count := 0;
for i := 1 to N do
begin
if records[i].gender = WOOMAN then
begin
sum := sum + records[i].age;
inc(count);
end;
end;
if count = 0 then
writeln('No woomen in records')
else
writeln('Avg age = ', (sum / count):2:1);
end.
howlvolcano написав:Replace написав:Програма від Хантера працює.
Чесно кажучи я в паскалі повний нуль.... Так, що, друзі, потрібна ваша допомога....
Запустив - працює начебто. Але можу задавати умову тільки для двух людей Анни и Валентини, а по умові потрібно 6 людей. І ось цей рядок "writeln('No woomen in records')" не видає коли пишу 2 чоловіківА якщо так:
program lab; Const N = 6; Type TGender = (MAN, WOOMAN); TAge = 140..160; TRecord = record name: String; gender: TGender; age: TAge; end; Var sex: string; {для тих хто не знає, sex - від анг стать} i: integer; sum, count: integer; records: array [1..N] of TRecord; begin for i := 1 to N do begin writeln('Record ', i); writeln('Name[', i, ']:'); readln(records[i].name); writeln('Gender[', i, '] (Man or Wooman):'); readln(sex); if(sex = 'MAN') then records[i].gender:=MAN else records[i].gender:=WOOMAN; writeln('Age[', i, '] (From 140 to 160):'); readln(records[i].age); end; sum := 0; count := 0; for i := 1 to N do begin if records[i].gender = WOOMAN then begin sum := sum + records[i].age; inc(count); end; end; if count = 0 then writeln('No woomen in records') else writeln('Avg age = ', (sum / count):2:1); end.
Оце воно! Дякую)
З.І: Є питання, в пм відпишу.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися