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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2019, 00:18   #1
danikgrodno
Новичок
Джуниор
 
Регистрация: 12.02.2019
Сообщений: 1
По умолчанию [Pascal] сортировка по алфавиту в типизированном файле

Задана ведомость абитуриентов, сдавших вступительные экзамены в институт. В каждой строке данной ведомости записана фамилия абитуриента, специальность, на которую он поступает, и полученные им оценки по отдельным дисциплинам. Написать программу для хранения указанной информации в файле на дискете. Программа должно предусматривать ввод, корректировку, дополнение ведомости, а также формирование выходных текстовых файлов пот каждой специальности, содержащих фамилии и инициалы абитуриентов и суммарный балл для каждого их них. Записи в выходных файлах должны быть упорядочены по первой букве фамилии в алфавитном порядке.Есть почти вся программа осталась сортировка, помогите кому не лень)
Код:
type baza = record
     fio,spec:string[30];{фио и специальность}
     ex1,ex2,ex3:integer;{экз1 экз2 экз3}
     end;
var st:array[1..100] of baza;
    i,n,k,vop:integer;
    db:file of baza;
    izm:baza;
 begin
  writeln('Если хотите добавить записи в базу - введите "1"');
  writeln('Если хотите изменить существующую - введите "2"');
  writeln('Для создания новой базы введите "3"');
  readln(vop);
  assign(db,'vedomost.txt'); //Связывает переменную db с документом knigi.txt
  if vop = 1 then
  //Добавление в конец существующей базы:
  begin
   reset(db);
   writeln('Сколько абитуриентов? '); readln(n);
   for i:=1 to n do with st[i] do
    begin
     writeln('Введите фамилию и инициалы абитуриента: '); readln(fio);
     writeln('Введите название специальности: '); readln(spec);
      writeln('Ведите оценку за 1й экзамен: '); readln(ex1);
      writeln('Ведите оценку за 2й экзамен: '); readln(ex2);
      writeln('Ведите оценку за 3й экзамен: '); readln(ex3);
    end;
    k:=filesize(db);
    Seek(db,k);
    for i:=1 to n do
     begin
      write(db,st[i]);
     end;
    close(db);
  end else if vop = 2 then
   //Изменение одного элемента существующей базы:
   begin
    reset(db); 
    writeln('Введите фамилию абитуриента, которого хотите изменить: '); readln(k);
    seek(db,k-1);
    with izm do
     begin
      read(db,izm);
      writeln('Следующие данные будут изменены: ',fio,' ',spec,' ',ex1,' ',ex2,' ',ex3,''); 
      writeln('Введите фамилию и инициалы автора: '); readln(fio);
      writeln('Введите название книги: '); readln(spec);
      writeln('Ведите оценку за 1й экзамен: '); readln(ex1);
      writeln('Ведите оценку за 2й экзамен: '); readln(ex2);
      writeln('Ведите оценку за 3й экзамен: '); readln(ex3);
     end;
    seek(db,k-1);
    write(db,izm);
    close(db);
   end else
   //Создание новой базы, удаляя старую:
   begin
    rewrite(db);
    writeln('Сколько абитуриентов? '); readln(n);
    for i:=1 to n do with st[i] do
     begin
      writeln('Введите фамилию и инициалы абитуриента: '); readln(fio);
     writeln('Введите название специальности: '); readln(spec);
      writeln('Ведите оценку за 1й экзамен: '); readln(ex1);
      writeln('Ведите оценку за 2й экзамен: '); readln(ex2);
      writeln('Ведите оценку за 3й экзамен: '); readln(ex3);
      write(db,st[i]);
    end;
    close(db);
   end;
  end.
Пожалуйста, оформляйте Ваш код согласно правилам.

Последний раз редактировалось Вадим Мошев; 12.02.2019 в 00:24.
danikgrodno вне форума Ответить с цитированием
Старый 13.02.2019, 15:00   #2
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Программа абсолютно недоделана, нет просмотра файла, нет защиты от дурака, баллы по какой шкале вводятся? Зачем каждый раз выполнять reset и rewrite? можно проверить: если файл существует, то reset иначе rewrite.
Головная программа слишком громоздкая, нет обратного возврата в меню.
Могу сделать, пишите ip-man2013@yandex.ru
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск элемента в типизированном файле Solidera Помощь студентам 1 13.04.2013 00:36
Структура в типизированном файле (Паскаль) Jetbalance Помощь студентам 4 01.07.2012 12:16
Сортировка в типизированном файле в Delphi Neroaz Помощь студентам 2 08.04.2010 00:44
Сортировка записей в типизированном файле Faina Помощь студентам 2 26.03.2010 17:28
сохранение инфо в типизированном файле prostac Помощь студентам 2 23.11.2009 14:55