Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 13.12.2011, 21:59   #1 (permalink)
Ильгиза
Member
 
Регистрация: 08.10.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Pascal ABC, помогите доделать

написать программу , которая вводит все данные об n (n=10) студентах ,и выводит всю информацию на экран в табличном виде. А именно список юношей получивших в сессию более двух двоек. оценки ставятся за четыре экзамена( математика,физика, английский и информатика)


пробую делать, но не получается.

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
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Рекомендую посмотреть на аналогичные топики, там вы можете найти содержательные ответы по вашему запросу

Помогите с массивами в Pascal
Помогите, две задачки по Pascal

Старый 14.12.2011, 10:19   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ильгиза, еще раз и медленно - я готов Вам помочь, если Вы составите сам список студентов и их оценок. Кстати, в этом случае можно сделать ввод данных о студентах из файла, что удобнее, чем с клавиатуры. Если же нужно непременно с клавиатуры - напишите. Но в любом случае составьте и выложите список для отладки. Я этим заниматься точно не буду.
Vladimir_S вне форума   Ответить с цитированием
Старый 14.12.2011, 18:30   #3 (permalink)
Ильгиза
Member
 
Регистрация: 08.10.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

мне составлять сведения о 10 студентах???
Ильгиза вне форума   Ответить с цитированием
Старый 14.12.2011, 18:31   #4 (permalink)
Ильгиза
Member
 
Регистрация: 08.10.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

если можно тогда просто подскажите алгоритм определения студента с 2-мя двойками!
Ильгиза вне форума   Ответить с цитированием
Старый 14.12.2011, 19:03   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Ильгиза Посмотреть сообщение
мне составлять сведения о 10 студентах???
Ох, простите, Ваше Величество, забылся...
Vladimir_S вне форума   Ответить с цитированием
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-х двоек,информацию о нем и надо вывести.
Ильгиза вне форума   Ответить с цитированием
Старый 14.12.2011, 19:29   #7 (permalink)
Ильгиза
Member
 
Регистрация: 08.10.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Помогите пожалуйста хотя бы с этой задачей, а потом я разберусь. Не думала, что тип записи такой сложный. (((
Ильгиза вне форума   Ответить с цитированием
Старый 14.12.2011, 20:39   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Ильгиза Посмотреть сообщение
Помогите пожалуйста хотя бы с этой задачей, а потом я разберусь. Не думала, что тип записи такой сложный. (((
Сегодня, увы, не получится - если только завтра.
P.S. Да ничего сложного в этих записях нет!
Vladimir_S вне форума   Ответить с цитированием
Старый 15.12.2011, 11:11   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 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.
Vladimir_S вне форума   Ответить с цитированием
Старый 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
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 15:17.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.