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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2014, 21:10   #1
Nikit-1995
Новичок
Джуниор
 
Регистрация: 18.12.2013
Сообщений: 1
По умолчанию Динамические переменные

Здравствуйте, дорогие форумчане!

Не могу понять, как правильно добавить динамические переменные в задачу ниже.

Текст задания: реализовать программу с помощью динамических переменых, т.е. сначала из файла считываются все данные в память, обрабатываются и записываются в файл.

Текст задачи: определить переменную "Студент", содержащую следующие поля: имя, фамилия, отчество, название института, номер группы. Данные считать из текстового файла. Вывести данные о студентах, которые учатся в одном и том же институте, и в одной группе.

Текст программы:
Код:
program stud;
uses crt;
const MaxN=200;
type  TGrInst=record
      Institute,Group:string[20];
   end;
 
   Tstudent=record
      num:integer;
      FIO:record
         F,I,O:string[20];
      end;
      Institute,Group:string[20];
   end;
 st=array[1..MaxN] of Tstudent;
var
   stud1,stud2:text;
   mas:st;
   mas1:TGrInst;
   i,k:integer;
   h:boolean;
 
{чтение из файла}
procedure reading(var stud1:text; var mas:st; var k:integer);
begin
   k:=0;
   repeat
      k:=k+1;
      with mas[k] do
         begin
            readln(stud1,num);
            readln(stud1,FIO.F);
            readln(stud1,FIO.I);
            readln(stud1,FIO.O);
            readln(stud1,Institute);
            readln(stud1,Group);
            writeln(FIO.F,' ',FIO.I,' ',FIO.O,', ',Institute,', ',Group);
         end;
   until (eof(stud1));
end;
 
{ввод}
procedure input(var stud1,stud2:text;var mas:st;var mas1:TGrInst;var k:integer);
begin
   clrscr;
   writeln('Программа описывает переменную «студент», считывая данные');
   writeln('из текстового файла, а затем выводит данные о студентах,');
   writeln('которые учатся в одном институте и в одной группе');
   writeln;
   assign(stud1,'students.txt');  // в этом файле список студентов
   reset(stud1); 
   assign(stud2,'student.txt');  // в этот файл записываются результаты
   rewrite(stud2);
   reading (stud1,mas,k);
   writeln;
   writeln('Введите название института');
   readln(mas1.Institute);
   writeln('Введите номер группы');
   readln(mas1.Group);
   writeln;
end;
 
{обработка}
procedure process(var h:boolean; var i,k:integer; var mas1:TGrInst; var mas:st; var stud1,stud2:text);
begin
   h:=true;
   writeln(stud2,'Студенты, учащиеся в одной группе');
   for i:=1 to k do
      begin
         if ((mas[i].Institute=mas1.Institute) and (mas[i].Group=mas1.Group))
            then
                  begin
                  writeln(mas[i].FIO.F,' ',mas[i].FIO.I,' ',mas[i].FIO.O,' ',mas[i].Institute,' ',mas[i].Group);
                  writeln(stud2,mas[i].FIO.F);
                  writeln(stud2,mas[i].FIO.I);
                  writeln(stud2,mas[i].FIO.O);
                  writeln(stud2,mas[i].Institute);
                  writeln(stud2,mas[i].Group);
                  writeln;
                  h:=false;
                  end;
      end;
   if h then
   begin
   writeln('Нет студентов, учащихся в ',mas1.Institute,' гр.',mas1.Group);
   rewrite(stud2);
   writeln(stud2,'Нет студентов, учащихся в ',mas1.Institute,' гр.',mas1.Group);
   end;
   close(stud1);
   close(stud2);
end;
 
{основной блок программы}
begin
input(stud1,stud2,mas,mas1,k);
process(h,i,k,mas1,mas,stud1,stud2);
readkey;
end.

Содержимое исходного файла "students.txt":
1 студент:
Иванов
Иван
Иванович
МГУ
250145
2 студент:
Сидоров
Артем
Николаевич
МФТИ
230968
3 студент:
Сидоров
Андрей
Александрович
МГУ
250145
4 студент:
Смирнов
Артемий
Олегович
ТулГУ
110958

После выбора "МГУ, 250145" в файле "student.txt":
Студенты, учащиеся в одной группе
Иванов
Иван
Иванович
МГУ
250145

Сидоров
Андрей
Александрович
МГУ
250145



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

Модератор.

Последний раз редактировалось Serge_Bliznykov; 11.05.2014 в 23:22.
Nikit-1995 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические переменные Лиляля Помощь студентам 0 27.05.2012 15:11
Динамические переменные KateMM Помощь студентам 3 21.03.2012 23:36
Динамические переменные Desha Помощь студентам 8 07.09.2009 18:36
Динамические переменные.. NSvirus Паскаль, Turbo Pascal, PascalABC.NET 2 08.06.2009 22:56