Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2011, 14:36   #1
Alex20
 
Регистрация: 05.11.2011
Сообщений: 7
Вопрос Паскаль.Записи (RECORD).

Помогите решить. Для студентов некоторой группы задана следующая информация: порядковый номер, ФИО, дата рождения, курс, год поступления, и оценки на последней сессии. Составить программу, которая обеспечивает вывод студентов, которые получают стипендию в виде таблицы,её распечатку.
Безымянный.jpg

исправьте если можно ошибки. Спасибо.

Код:
program ch1;
uses crt;
type
 studlib = record
  FIO:string;
  Birth_Date:string;
  Course:Byte;
  Year:word;
  Marks:Array[1..3] of Byte;
  Mmark:Real;
 end;


var
 stud:Array[1..100] of studlib;
 i,N:Byte;

Procedure Out_Date(std:Studlib);
var j:byte;
begin
 with std do
  begin
   write(FIO);
   for j:=Length(FIO)+1 to 30 do write(' ');
   write(Birth_Date);
   write(Course:3);
   write(Year:5);
   for j:=1 to 3 do
    write(Marks[j]:4);
   writeln(Mmark:7:2);
  end;
end;

BEGIN
 clrscr;
 N:=0;
 writeln('Vvodite dannie o studentax');
 repeat
  Inc(N);
  with stud[N] do
   begin
    write('FIO: ');
    readln(FIO);
    write('Birth Date (dd.mm.yyyy): ');
    readln(Birth_Date);
    write('Course: ');
    readln(Course);
    write('Year of entry: ');
    readln(Year);
    Mmark:=0;
    for i:=1 to 3 do
     begin
      write('Mark ',i,' = ');
      readln(Marks[i]);
      Mmark:=Mmark+Marks[i]/3;
     end;
   end;
  clrscr;
  writeln ('ENTER-continue, ESC-quit');
 until (readkey=#27) or (N=100);

 clrscr;

 writeln('Student list:');
 for i:=1 to N do
  Out_Date(stud[i]);
 writeln;

 writeln('Press "Enter" to continue');
 readln;
 clrscr;

 writeln('Granted students:');
 for i:=1 to N do
  if stud[i].Mmark>=7.0 then
   Out_Date(stud[i]);

 readkey;
END.
пишет ошибку- формат вывода: n не пременим к данным типа word



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 07.11.2011 в 10:22.
Alex20 вне форума Ответить с цитированием
Старый 07.11.2011, 10:39   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) проверил Вашу программу в TurboPascal
всё работает, никаких ошибок не выдаётся. Рассказывайте, что Вы делаете, чтобы получить такую ошибку?

2) весьма и весьма странно у Вас вводятся отметки... Можно ввести и 2 и 3 и 5 и 99...
и почему стипендию получаются студенты со средним балом выше 7 ? Это на какие отметки они учатся?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.11.2011, 10:52   #3
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

действительно интересно

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
весьма и весьма странно у Вас вводятся отметки... Можно ввести и 2 и 3 и 5 и 99...
и почему стипендию получаются студенты со средним балом выше 7 ? Это на какие отметки они учатся?
по 100-балльной системе они видимо учатся

Последний раз редактировалось Stilet; 08.11.2011 в 08:59.
Camaro Chevelle вне форума Ответить с цитированием
Старый 07.11.2011, 11:31   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
по 100-балльной системе они видимо учатся
да нет, исходя из того, что автор программы считает, что стипендию получают студенты со средним балом 7 и выше, то, скорее всего, учатся они по 10-бальной системе...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.11.2011, 22:10   #5
Alex20
 
Регистрация: 05.11.2011
Сообщений: 7
Счастье

спасибо за комментарии. Учатся студенты действительно по 10-бальной системе. Но получается что ввод оценок надо ограничить 10 баллами, чтобы не получалось 99 и выше. Помогите исправить пожалуйста. А ошибку выдавало на Паскаль ABC. Спасибо.
Alex20 вне форума Ответить с цитированием
Старый 08.11.2011, 00:28   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, это проще простого..

заменить ввод оценки на такой код (я добавленное выделил цветом):
Код:
for i:=1 to 3 do
     begin
      repeat 
        write('Mark ',i,' = ');
        readln(Marks[i]);
        if  (Marks[i]<0) or (Marks[i]>10) then WriteLn('Oshibka! Baly doljny byt` ot 1 do 10. Poprobyite eshe raz!');
      until (Marks[i]>=0) and (Marks[i]<=10);
      Mmark:=Mmark+Marks[i]/3;
     end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.11.2011, 00:52   #7
Alex20
 
Регистрация: 05.11.2011
Сообщений: 7
Радость

Благодарю!
Alex20 вне форума Ответить с цитированием
Старый 27.11.2011, 13:28   #8
Alex20
 
Регистрация: 05.11.2011
Сообщений: 7
По умолчанию

Код:
for i:=1 to 3 do
     begin
      repeat 
        write('Mark ',i,' = ');
        readln(Marks[i]);
        if  (Marks[i]<0) or (Marks[i]>10) then WriteLn('Oshibka! Baly doljny byt` ot 1 do 10. Poprobyite eshe raz!');
      until (Marks[i]>=0) and (Marks[i]<=10);
      Mmark:=Mmark+Marks[i]/3;
     end;
Alex20 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача записи (Record) с данными посети (Indy) Archangel_x Работа с сетью в Delphi 3 06.06.2011 11:38
Записи(record) mexx1337 Паскаль, Turbo Pascal, PascalABC.NET 3 20.05.2011 05:41
Записи (record) mexx1337 Паскаль, Turbo Pascal, PascalABC.NET 1 12.05.2011 23:43
Сложная структура записи (record+array) Alex Cones Общие вопросы Delphi 20 20.10.2009 19:10
Внести в задачу пару условий,пожалуйста помогите(Pascal-record)тип записи... Andrux Помощь студентам 2 15.02.2009 17:51