13.12.2011, 21:59 | #1 (permalink) |
Member
Регистрация: 08.10.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Pascal ABC, помогите доделать
пробую делать, но не получается. program upr1; const n=10; m=5; type date=record day:1..31; month:1..12; year:integer; end; predmet=record ot:integer; end; pupil=record fam,name:string[15]; p:char; bd:date; ch:predmet; end; procedure p1( var a:pupil); begin with a do begin write('фамилия'); readln(fam); write('имя'); readln(name); write('пол'); readln(p); write('дата рождения'); readln(bd.day,bd.month,bd.year); write('оценки'); readln(ch.ot); end; end; procedure p2( a:pupil); begin with a do begin write(fam,'':15-length(fam)); write(name,'':10-length(name)); with bd do begin if day<10 then write ('0'); write(day,'.'); if month<10 then write ('0'); write(month,'.'); write(year); end; end; end; var mas:array[1..n] of pupil; i,k:integer; begin writeln('введите информацию об ',n,'учениках'); for i:=1 to n do p1(mas[i]); writeln('список учеников:'); writeln('n фио пол дата рождения '); for i:=1 to n do begin write (i:2,'.'); p2(mas[i]); writeln('введите оценки '); for i:=2 to m do write ([i]); end; writeln; i:=1; while(mas[i].p<>'м') and (i<n) do i:=i+1; if (mas[i].p='м' ) and (pupil.ot =2) then begin k:=k+1; write(k:2,'.'); p1(mas[i]); end; writeln('юноша с двойками'); end. |
13.12.2011, 21:59 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Рекомендую посмотреть на аналогичные топики, там вы можете найти содержательные ответы по вашему запросу Помогите с массивами в Pascal Помогите, две задачки по Pascal |
14.12.2011, 10:19 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ильгиза, еще раз и медленно - я готов Вам помочь, если Вы составите сам список студентов и их оценок. Кстати, в этом случае можно сделать ввод данных о студентах из файла, что удобнее, чем с клавиатуры. Если же нужно непременно с клавиатуры - напишите. Но в любом случае составьте и выложите список для отладки. Я этим заниматься точно не буду.
|
14.12.2011, 19:03 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
14.12.2011, 19:28 | #6 (permalink) |
Member
Регистрация: 08.10.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Извините меня пожалуйста, но я просто не поняла. Просто необходимо ввести к примеру1) Иванова Ирина Ивановна пол Ж дата рождения 18 03 1992 и оценки по 4 предметам к примеру 4 5 4 5.
2) Иванов Вадим Петрович пол М дата рождения 22 10 1989 и оценки по 4 предметам 2 2 2 5 . Иванов получил более 2-х двоек,информацию о нем и надо вывести. |
15.12.2011, 11:11 | #9 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ладно, держите:
Код:
const N=10; Sci:Array[1..4] of String=('Mathematics','Physics', 'English','Informatics'); type ses=record fam:String; date:String; mark:Array [1..4] of Byte; end; var Stud: Array[1..N] of ses; i,j,q,n2: integer; Procedure Outp(k:Integer; Std:ses); var m:Integer; begin with Std do begin Write(k:2,'. '+fam); For m:=Length(fam)+1 to 25 do write(' '); Write(date); for m:=1 to 4 do Write(Mark[m]:5); Writeln; end; end; BEGIN For i:=1 to N do with Stud[i] do begin Write(i:2,'. Name (e.g Antarov Feofilakt): '); Readln(fam); Write('Birth date (dd.mm.yyyy, e.g 03.09.1994): '); Readln(date); for j:=1 to 4 do begin Write('Mark on '+Sci[j]+': '); Readln(mark[j]); end; Writeln; end; Writeln; Writeln('Complete data:'); For i:=1 to N do Outp(i,Stud[i]); Writeln; Writeln('Students having more then one "2" mark:'); q:=0; For i:=1 to N do begin n2:=0; For j:=1 to 4 do If Stud[i].Mark[j]=2 then Inc(n2); If n2>1 then begin Inc(q); Outp(q,Stud[i]); end; end; Readln END. |
15.12.2011, 15:37 | #10 (permalink) |
Member
Регистрация: 08.10.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо большое!!!!!Спасибо за понимание!!!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|