• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Pascal ABC, помогите доделать

Ильгиза

Новые
Регистрация
8 Окт 2011
Сообщения
49
Реакции
0
Баллы
0
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);
writeln('список учеников:');
writeln('n фио пол дата рождения ');
for i:=1 to n do begin write (i:2,'.');
p2(mas);
writeln('введите оценки ');
for i:=2 to m do write ();
end;
writeln;
i:=1;
while(mas.p<>'м') and (i<n) do i:=i+1;
if (mas.p='м' ) and (pupil.ot =2)
then begin k:=k+1;
write(k:2,'.');
p1(mas);
end;
writeln('юноша с двойками');
end.
 
Ильгиза, еще раз и медленно - я готов Вам помочь, если Вы составите сам список студентов и их оценок. Кстати, в этом случае можно сделать ввод данных о студентах из файла, что удобнее, чем с клавиатуры. Если же нужно непременно с клавиатуры - напишите. Но в любом случае составьте и выложите список для отладки. Я этим заниматься точно не буду.
 
мне составлять сведения о 10 студентах???
 
если можно тогда просто подскажите алгоритм определения студента с 2-мя двойками!
 
Извините меня пожалуйста, но я просто не поняла. Просто необходимо ввести к примеру1) Иванова Ирина Ивановна пол Ж дата рождения 18 03 1992 и оценки по 4 предметам к примеру 4 5 4 5.
2) Иванов Вадим Петрович пол М дата рождения 22 10 1989 и оценки по 4 предметам
2 2 2 5 .
Иванов получил более 2-х двоек,информацию о нем и надо вывести.
 
Помогите пожалуйста хотя бы с этой задачей, а потом я разберусь. Не думала, что тип записи такой сложный. (((
 
Помогите пожалуйста хотя бы с этой задачей, а потом я разберусь. Не думала, что тип записи такой сложный. (((
Сегодня, увы, не получится - если только завтра.
P.S. Да ничего сложного в этих записях нет!
 
Ладно, держите:
Код:
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.
 
Спасибо большое!!!!!Спасибо за понимание!!!
 
Назад
Сверху