Тема: Знайти суму ряда чисел.
Дано 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
Для відправлення відповіді ви повинні увійти або зареєструватися