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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2018, 20:41   #1
ЕвгенийABC
Новичок
Джуниор
 
Регистрация: 18.04.2018
Сообщений: 2
По умолчанию Имеются данные об учащихся музыкальной школы. Выдать на экран фамилию ученика, который обучается на указанном инструменте наибольшее количество лет. Как продолжить?

Программа должна выводить на экран меню с командами:
1 - создание файла
2 - просмотр файла
3 - добавление в файл
4 - обработка файла(вывести на экран фамилию ученика, который обучается на указанном инструменте наибольшее количество лет)
5 - выход

Пользователь выбирает нужную команду, выполняет определенные действия и снова возвращается в меню (оператор GOTO не использовать!!!). При выборе последнего пункта программа завершает свою работу.

Имеются данные об учащихся музыкальной школы: фамилия, инструмент, количество лет обучения. Выдать на экран фамилию ученика, который обучается на указанном инструменте наибольшее количество лет
Код:
uses crt;
type STUD=record
fam, instr:string[15];
kollet:real;
end;   
anketa=file of STUD;
var 
k,i,n,kol,b:integer;
    f1:biblio;
    max:real;
    a:kniga;  
    av:string[15];
begin
assign(f1, 'biblio.dat');
     b:=0;
     while b=0 do
     begin      
    clrscr;
    
    writeln ('Введите диапазон: ');
    readln(a,b);
writeln('1 - создание файла');
writeln('2 - просмотр файла');
writeln('3 - добавление в файл');
writeln('4 - обработка файла');
writeln ('5 - выход');
write('Сделайте выбор: '); readln (k);   
case k of 
  1:
         begin
clrscr;
write('Введите количество учеников: ');
readln(n);
rewrite(f1);          
              for i:=1 to n do
              with a do
              begin
                   writeln(i,'-й ученик ');
                   write('-фамилия: '); readln(fam);
                   write('-инструмент: '); readln(instr);
                   write('-количество лет обучения: '); readln(kollet);                  
                   write(f1,a);
              end;          
close(f1);        
writeln('Файл успешно создан');
readln;
 end;
        2:
        begin
clrscr;          
reset(f1);       
 readln;
 end;
 close(f1);
3:
clrscr;
write('Введите количество учеников: ');
readln(n);         
 reset(f1);
seek(f1,filesize(f1));         
for i:=1 to n do
  with a do
begin
writeln(i,'-й ученик ');
write('-фамилия: '); readln(fam);
write('-инструмент: '); readln(instr);
write('-количество лет обучения: '); readln(kollet);                  
write(f1,a);
  end;
close(f1);
writeln ('Ученики успешно добавлены');
readln;
end;

4:
begin


readln;
end.
reset(f1);

Последний раз редактировалось ЕвгенийABC; 18.04.2018 в 21:33.
ЕвгенийABC вне форума Ответить с цитированием
Старый 04.05.2018, 06:52   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Хм... А это че, даже проглатывает компилятор?
Баламут вне форума Ответить с цитированием
Старый 04.05.2018, 08:14   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Баламут Посмотреть сообщение
Хм... А это че, даже проглатывает компилятор?
Шутите? Там же структура в корне неверная, даже begin ... end неверно расставлены.

я уже не говорю про то, что это попытка переделать чужой код:

Цитата:
Сообщение от ЕвгенийABC Посмотреть сообщение
Код:
f1:biblio;
    max:real;
    a:kniga;
я бы предложил продолжить примерно так:
Код:
uses crt;

type
  STUD = record
    fam, instr: string[15];
    kollet: real;
  end;
  musical_school_BD_file = file of STUD;

var
  k, i, n, kol: integer;
  f1: musical_school_BD_file;
  max: real;
  a: STUD;  
  av: string[15];

begin
  assign(f1, 'mschool.dat');
  k := 0;
  while k <> 5 do
  begin
    clrscr;
    
    writeln('1 - создание файла');
    writeln('2 - просмотр файла');
    writeln('3 - добавление в файл');
    writeln('4 - обработка файла');
    writeln('5 - выход');
    write('Сделайте выбор: ');readln(k);   
    case k of 
      1:
        begin
          clrscr;
          write('Введите количество учеников: ');
          readln(n);
          rewrite(f1);          
          for i := 1 to n do
            with a do
            begin
              writeln(i, '-й ученик ');
              write('-фамилия: ');readln(fam);
              write('-инструмент: ');readln(instr);
              write('-количество лет обучения: ');readln(kollet);                  
              write(f1, a);
            end;          
          close(f1);        
          writeln('Файл успешно создан');
          readln;
        end;
      2:
        begin
          clrscr;          
          reset(f1);
          i:=0;
          WriteLn('Шапка таблицы');
          WriteLn('--------------------------------');
          while Not Eof(f1) do begin
            inc(i);
            Read(f1, a);
            WriteLn(i:4,' ', a.fam:15, ' ', a.instr:15, ' ', a.kollet:5:2);
          end;
          WriteLn('--------------------------------');          
          readln;
          close(f1);
        end;
      3:
        begin
          clrscr;
          write('Введите количество учеников: ');
          readln(n);         
          reset(f1);
          seek(f1, filesize(f1));         
          for i := 1 to n do
            with a do
            begin
              writeln(i, '-й ученик ');
              write('-фамилия: ');readln(fam);
              write('-инструмент: ');readln(instr);
              write('-количество лет обучения: ');readln(kollet);                  
              write(f1, a);
            end;
          close(f1);
          writeln('Ученики успешно добавлены');
          readln;
        end;
      
      4:
        begin
          reset(f1);
    
          close(f1); 
          readln;
        end;
    end;
  end;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.05.2018, 13:16   #4
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Шутите?
Ну как бы да. Серьезно тут говорить не приходится. За сим удаляюсь
Баламут вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задание по основам программирования! - Pascal ABC - В одной строке ввести фамилию, имя, отчество. Вывести на экран фамилию и инициалы. love26 Паскаль, Turbo Pascal, PascalABC.NET 1 19.04.2018 14:35
Поиск учащихся школы, у которых совпадают имя и дата рождения 4ertovo4ka Паскаль, Turbo Pascal, PascalABC.NET 1 12.02.2015 08:09
Выдать на экран список лиц, родившихся за последние N лет и их возраст SAnastasi Паскаль, Turbo Pascal, PascalABC.NET 1 26.05.2014 17:31
Вывести в таблицу фамилию менеджера, который отправил наибольшее кол-во туристов(VBA) blondino4ka_milk Помощь студентам 4 20.09.2012 20:34
запрос который бы подсчитывал количество полных лет начиная с того года который указан в данных мне базах PereCCC Помощь студентам 8 15.05.2008 16:24