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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2013, 03:23   #1
vaytin
Новичок
Джуниор
 
Регистрация: 07.11.2013
Сообщений: 2
По умолчанию Работа с файлами в Pascal ABC

Разработать программу формирования ведомости об успеваемости студентов. Каждая запись этой ведомости должна содержать: номер группы, Ф.И.О. студента, оценки за последнюю сессию. Вывести списки студентов по группам. В каждой группе Ф.И.О. студентов должны быть расположены в порядке убывания среднего балла.
vaytin вне форума Ответить с цитированием
Старый 23.12.2013, 03:40   #2
vaytin
Новичок
Джуниор
 
Регистрация: 07.11.2013
Сообщений: 2
По умолчанию

Вот нашел на Delphi, но мне нужно на Pascal ABC: lhttp://any-book.org/download/13049.html
vaytin вне форума Ответить с цитированием
Старый 04.11.2014, 15:56   #3
Donald Ervin Knuth
Пользователь
 
Аватар для Donald Ervin Knuth
 
Регистрация: 15.10.2014
Сообщений: 16
По умолчанию

Цитата:
Сообщение от vaytin Посмотреть сообщение
Разработать программу формирования ведомости об успеваемости студентов. Каждая запись этой ведомости должна содержать: номер группы, Ф.И.О. студента, оценки за последнюю сессию. Вывести списки студентов по группам. В каждой группе Ф.И.О. студентов должны быть расположены в порядке убывания среднего балла.
Код:
program file_vivod;
procedure perezap(var x,y:real);
   var t:real;
 begin
    t := x;
    x := y;
    y := t
 end;
type
stud = record
  fam,im,ot:string[25];
  gr,pogr:integer;
  ozen: array[1..20] of integer;
  sr_b:real;
  prisnak:boolean; {--- true если отобран, false если еще нет---}
    end;
var
person:array[1..100] of stud;
f:text;
sr_bal:real;
pogr,k,n,i,j:integer;
begin
sr_bal:=0;
assign(f,'C:\PABCWork.NET\ass.txt');
rewrite(f);{-- каждый раз удалаем содержимое файла---}
writeln('Задайте количесвто студентов');readln(n);
{-- шапка--- вне цикла---}
writeln(f,'Таблица № 1. Исходные данные');
 writeln(f,'------------------------------------------------------------------------------------------');
 writeln(f,'|Фамилия                  |Имя                      |Отчество                 |Средний бал|');
 writeln(f,'------------------------------------------------------------------------------------------'); 
  for i:=1 to n do
    begin
        writeln('Фамилия ',i,' студента');readln(person[i].fam);      
        writeln('Имя ',i,' студента');readln(person[i].im);
        writeln('Отчество ',i,' студента');readln(person[i].ot);
        writeln('В какой группе он учится');readln(person[i].gr);
        writeln('Сколько предметов он сдал?');readln(k);
        person[i].prisnak:=false;
        {----------------------- ввод оценок-----------------------}
              writeln('Студент=  ',person[i].fam:25,person[i].im:25,person[i].ot:25);
               writeln('Группы=  ',person[i].gr);
               for j:=1 to k do
                   begin
                    writeln('Получил по ',j,' предмету следующую оценку=');
                    readln(person[i].ozen[j]);
                     sr_bal:=sr_bal+person[i].ozen[j];
                   end;
                   person[i].sr_b:=(sr_bal)/k;
                   {--------- залем в файл постепенно --------}
                  
                   writeln(f,'|',person[i].fam:25,'|',person[i].im:25,'|',person[i].ot:25,'|',person[i].sr_b:10:2,'|');
     end;
                   writeln(f,'-----------------------------------------------------------------------------------------');
                   { ---  вывод результатов----}
                   writeln(f);
                   writeln(f);
                   writeln(f,'                                              Итоговая ведомость                          ');
                   writeln(f,'                                      Общая по всем группам сортированная по ср.баллу     ');
          
 writeln(f,'Таблица № 2 ');
 writeln(f,'------------------------------------------------------------------------------------------');
 writeln(f,'|Фамилия                  |Имя                      |Отчество                 |Средний бал|');
 writeln(f,'------------------------------------------------------------------------------------------'); 
 
begin                         {-- не будем изобретать велосипед ---}
   for j:=1 to n-1 do          {-- стандартные пузырки----}
     for i:=1 to n-j do
        if person[i].sr_b > person[i+1].sr_b then
              perezap(person[i].sr_b,person[i+1].sr_b)
end;
 {-- заливем в файл--}                          
 for i:=n downto 1 do {--задом на перед ---}
 writeln(f,'|',person[i].fam:25,'|',person[i].im:25,'|',person[i].ot:25,'|',person[i].sr_b:10:2,'|');
 writeln(f,'-----------------------------------------------------------------------------------------');
 {-- пора разбить по группам--}
 writeln(f);
 writeln(f);
 writeln(f,'                                              Итоговая ведомость                          ');
 writeln(f,'                                      По группам сортированная по среднему баллу          ');
 j:=1;
repeat
 begin
  pogr:=person[j].gr;
 writeln(f,'Группа № ',pogr);
 writeln(f,'------------------------------------------------------------------------------------------');
 writeln(f,'|Фамилия                  |Имя                      |Отчество                 |Средний бал|');
 writeln(f,'------------------------------------------------------------------------------------------'); 
  for i:=n downto 1 do
  begin
      if (person[i].gr=pogr)and(person[i].prisnak=false)
      then
      begin
      person[i].prisnak:=true; {-- признак того что уже учтен и выведен в файл}

 writeln(f,'|',person[i].fam:25,'|',person[i].im:25,'|',person[i].ot:25,'|',person[i].sr_b:10:2,'|');
      end;
     end;     
     end;
     j:=j+1;
    until j>n;
    close(f);
end.
g25092011
Donald Ervin Knuth вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами(Pascal ABC) Tanya-Manya Паскаль, Turbo Pascal, PascalABC.NET 2 13.03.2013 18:58
Работы с файлами в Pascal ABC Rainer082 Паскаль, Turbo Pascal, PascalABC.NET 0 11.02.2013 21:33
Pascal abc работа с матрицами DevilSkyS Помощь студентам 0 20.11.2012 21:13
работа с файлами в паскале (abc) brus1k Помощь студентам 3 20.03.2012 00:01