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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2009, 21:50   #1
RazdoR
 
Регистрация: 13.04.2009
Сообщений: 6
Восклицание

Очень нужно разработать программу, демонстрирующую использование абстрактного типа «Запись» для учета посещаемости студентов.

Буду очень-очень благодарен))

И еще вопрос: как вывести запись на экран?

Последний раз редактировалось Stilet; 06.05.2009 в 10:14.
RazdoR вне форума Ответить с цитированием
Старый 05.05.2009, 22:04   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
И еще вопрос: как вывести запись на экран?
Если вы почитаете тему про записи в каком-нибудь учебнике, этот вопрос отпадет.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.05.2009, 22:06   #3
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Код:
with record_name do begin
  writeln(elem_1);
  writeln(elem_2);
  {...}
  writeln(elem_n);
end;
??
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 05.05.2009, 22:22   #4
RazdoR
 
Регистрация: 13.04.2009
Сообщений: 6
По умолчанию

Цитата:
Если вы почитаете тему про записи в каком-нибудь учебнике, этот вопрос отпадет.
Я бы так и сделал, но нет никакой возможности, ситуация(
RazdoR вне форума Ответить с цитированием
Старый 05.05.2009, 22:29   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от RazdoR
Я бы так и сделал, но нет никакой возможности, ситуация(
Что за ситуация? Для этого требуются только умение читать.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 06.05.2009, 00:51   #6
RazdoR
 
Регистрация: 13.04.2009
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Что за ситуация? Для этого требуются только умение читать.
Под рукой нет книг, нет времени...

Написал малую часть программы
Общий смысл таков: программа должна создать список студентов, и чтобы можно было отмечать кто был на паре, а кто нет%) и выводить при необходимости весь список

часть кода
Но он не полный и не совсем верыный, т.к моих познаний хватило только на это)
Код:
Uses crt;
Const fname='students.dat';
      n=5;              {количество предметов}
Type st=record
      n_sp:integer;     {номер в группе по списку}
      fam:string;       {фамилия}
      im:string;        {имя}
      ot:string;        {отчество}

      end;
Var t:array[1..30] of st;
    c,m,i,ch,j:integer;
    h: file of st;
    exit:boolean;


procedure vvod;
begin
writeln('Введите количество студентов в группе: ');
readln(ch);


  for i:=1 to ch do begin
    writeln('Сведения о ' ,i,' студенте');
    write('Номер в группе по списку: '); readln(t[i].n_sp);
    write('Фамилия: '); readln(t[i].fam);
    write('Имя: '); readln(t[i].im);
    write('Отчество: '); readln(t[i].ot);
  writeln;
  end;
  Assign (h,fname);
  {$I-}
  reset(h);
  If Ioresult<>0 then rewrite(h);
  {$I+}
  for i:=1 to ch do write(h,t[i]);

  close(h);
  writeln('Данные занесены в файл ',fname);
  readln;
  end;

procedure vyvod;
begin
with st(t[i]) do begin
writeln(n_sp);
writeln(fam);
writeln(im);
writeln(ot);
end;
end;


begin
exit:=false;
while not exit do begin
writeln;
writeln('nazhmite 1 dya vvoda ili 2 dlya vyvoda 3 - vyhod');
readln(c);
case c of
1:vvod;
2:vyvod;
3:exit:=true;
end;
if exit then break;
end;

end.
Мне дали совет

Цитата:
ну, если по-простому - создать свой тип, в котором два поля - имя студента и массив посещаемости. Этот массив сопоставляется с массивом предметов и выясняется, на каких он был, а на каких нет
Но как это сделать я не знаю(

Помогите дописать програму, очень нужно. Буду безмерно благодарен!)
RazdoR вне форума Ответить с цитированием
Старый 06.05.2009, 10:17   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я чет недопонял. а что такое "абстрактного типа «Запись»"? Чего "Абстрактный"?
Цитата:
тот массив сопоставляется с массивом предметов
Допустим, каков тип массива с предметами?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.05.2009, 19:15   #8
RazdoR
 
Регистрация: 13.04.2009
Сообщений: 6
По умолчанию

Я сделал кое-что
пока ввожу список студентов, сохраняю в файл и вывожу его
Как сделать что бы файл не перизаписывался, но открывался на запись? [SPOILER]
Код:
Uses crt;
Const fname='students.dat';
      n=7;              {количество предметов}
      ned=41;

Type predm=(tp,ta, progr,phis, fka, matan, et);
     prop=array[1..ned,tp..et] of byte;
     st=record
      n_sp:integer;     {номер в группе по списку}
      fam:string;       {фамилия}
      im:string;        {имя}
      ot:string;        {отчество}
      pr:prop;
    end;
Var t:array[1..30] of st;
    c,m,i,ch,j:integer;
    h: file of st;
    exit:boolean;


procedure vvod;
begin
writeln('Введите количество студентов в группе: ');
readln(ch);


  for i:=1 to ch do begin
    writeln('Сведения о ' ,i,' студенте');
    write('Номер в группе по списку: '); readln(t[i].n_sp);
    write('Фамилия: '); readln(t[i].fam);
    write('Имя: '); readln(t[i].im);
    write('Отчество: '); readln(t[i].ot);
  writeln;
  end;
  Assign (h,fname);
  {$I-}
  reset(h);
  If Ioresult<>0 then rewrite(h);
  {$I+}
  for i:=1 to ch do write(h,t[i]);

  close(h);
  writeln('Данные занесены в файл ',fname);
  readln;
  end;

procedure vyvod;
var tmp: st;

begin
reset(h);
while not eof(h) do
begin
   read(h,tmp);
   with tmp do begin
        writeln(n_sp);
        writeln(fam);
        writeln(im);
        writeln(ot);
   end;
 end;
 close(h);
end;


begin
exit:=false;
while not exit do begin
writeln;
writeln('nazhmite 1 dya vvoda ili 2 dlya vyvoda 3 - vyhod');
readln(c);
case c of
1:vvod;
2:vyvod;
3:exit:=true;
end;
if exit then break;
end;

end.
[/SPOILER]
Как мне сделать, отметку пропусков и вывод в виде

[SPOILER]
Код:
  
                           Матан       Физика     История
Иванов                     н
Петров                                      н
Сидоров                   н                              н
[/SPOILER]
Если массивами - то как?
RazdoR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести сообщение типа "внимание" при удалении записи из БД Alex_Sokolov Помощь студентам 7 06.01.2009 13:50
написать на Delphi прогу типа "Автоинспектор" Vexis Помощь студентам 20 29.12.2008 17:24
"Суммирование рядов смешанного типа" Найти ошибку! maliyusha Паскаль, Turbo Pascal, PascalABC.NET 4 25.12.2008 20:19
Как преобразовать строку типа "яяя ччч" в %D1%D1%D1%20%DE%DE%DE kkkggg PHP 2 12.09.2007 13:33
На чем пишутся стратегии типа "Казаков" и "Эпохи империи" Tayfun Свободное общение 3 26.06.2007 20:27