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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2014, 16:40   #1
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию текстовый файл

здраствуйте. прошу вашей попощи разобраться с программой.
Условие: Задача1. Создать на дискете текстовый файл abitur.txt результатам экзаменов в Космическую Академиюь10-12 строк в каждом фамилия, инициалы, оценки по космическому праву, космической географии, кулинарии, медицины, ветеринарии, психиатрии, неземной философии, менеджмента. Составить программу для вывода на экран в виде таблицы данных из файла abitur.txt и подведение итогов вступительных экзаменов в Космическую Академи. Для этого в программе выполнить сортировку данных из файла abitur.txt по сумме баллов и вывести список K лучших из N выпускников (K <N). Учесть возможность полупроходного балла.

у меня 2 вопроса:
напишите частичку кода как в текстовом файле можно сделать чтение цифр, ладно фамилию (string) оно прочитает, а как быть с цифрами ??
2) как в таблице сделать сортирование по возрастанию. не могу же я делать как в массиве...
вот сам код:
Код:
 const
  n = 4;
type
  student = record
    N: byte;
    prizv: string;
    matan: real;
    prog: real;
    Os: real;
    alg: real;
  end;
var
  i: integer;
  tabl: array[1..n] of student; 
  otv: integer;
  f:text;

procedure lin(m: integer);
var i: integer;
begin
  for i := 1 to m do write('-'); writeln;
end;

begin
  assign(f, 'd:\abitura.txt');

  Write('Perezapisat fail ? (1 - tak, 0 - ni):');
  ReadLn(otv);
  if otv = 1 then
  begin
    rewrite(f);
    writeln('VVedi dani stydentiv');
    for i := 1 to n do
    begin
      tabl[i].N := i;
      readln(tabl[i].Prizv, tabl[i].matan, tabl[i].prog, tabl[i].OS, tabl[i].alg);
      write(f, tabl[i]);
    end;
    Close(f);
  end;

  {прочитать из файла в массив}
  reset(f);
  for i := 1 to n do
    Read(f, tabl[i]);
  Close(f);

  Lin(69);
  writeln('|   | Surname  | Matematuchnuy | Programyvannya | OS | Algebra | cer|');
  writeln('|   |          |    analis     |                |    |  i geom.|    |');
  Lin(69);
  for i := 1 to n do
  begin
    write('|', tabl[i].N: 2, ' |', tabl[i].Prizv: 10, '|');
    write(tabl[i].matan: 15, '|', tabl[i].prog: 16, '|', tabl[i].OS: 4, '|', tabl[i].alg: 9, '|',
     ((tabl[i].matan + tabl[i].prog + tabl[i].OS + tabl[i].alg) / n): 0: 2, '|');
    writeln;
    Lin(69);
  end;
  writeln;
  writeln('vidcortov');
  Lin(69);
  for i := 1 to n do
  begin
    if {не понимаю как составить условие}
    begin
      write('|', tabl[i].N: 2, ' |', tabl[i].Prizv: 10, '|');
      write(tabl[i].matan: 15, '|', tabl[i].prog: 16, '|', tabl[i].OS: 4, '|', tabl[i].alg: 9, '|', ((tabl[i].matan + tabl[i].
      prog + tabl[i].OS + tabl[i].alg)): 0: 2, '|');
      writeln;
      Lin(69);
    end;
  end;
  readln
end.
прошу помогите разобраться, совсем не знаю что делать
mishammm вне форума Ответить с цитированием
Старый 11.06.2014, 22:41   #2
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

вообщем переделал немного
Код:
const
  n = 4;
type
  student = record
    N: byte;
    prizv: string;
    
    alg: real;
    bal: 6..15;
    matan,prog,os:2..5
  end;
  var
  i,j: integer;
  tabl: array[1..n] of student; 
  v:student;
  s:real;
  begin
   writeln('VVedi dani stydentiv');
    for i := 1 to n do
    with tabl[i] do
    begin
    writeln('vvedi prizv');
    readln(prizv);
    writeln('vvedi predmet1');
    readln(matan);
    writeln('vvedi predmet2');
    readln(prog);
    writeln('vvedi predmet 3');
    readln(os);
   
    end;
   
   for i:=1 to n do with tabl[ i ] do
begin
bal:=matan+prog+os;
end;
   
    writeln('------------------------------------------------------');
    writeln('| Surname| Matematuchnuy | Programyvannya | OS |   summa  ');
  writeln('|          |    analis     |                |    |      ');
  writeln('--------------------------------------------------------');
for i:=1 to n do
    with tabl[i] do
begin

writeln('|',prizv:10,'|',matan:15,'|',prog:16,'|',os:4,'|' , bal:5, '|');
writeln('-----------------------------------------------------------------');
end;


writeln('vidcortovano');
j:=0;
while j<=n do
      begin
      for i:=1 to n-1 do
          if tabl[i].bal<tabl[i+1].bal then
             begin
             v:=tabl[i];
             tabl[i]:=tabl[i+1];
             tabl[i+1]:=v;
             end;
      inc(j);
      end;


 writeln('------------------------------------------------------');
    writeln('| Surname| Matematuchnuy | Programyvannya | OS |   summa  ');
  writeln('|          |    analis     |                |    |      ');
  writeln('--------------------------------------------------------');
for i:=1 to n do
    with tabl[i] do
begin

writeln('|',prizv:10,'|',matan:15,'|',prog:16,'|',os:4,'|' , bal:5, '|');
writeln('-----------------------------------------------------------------');
end;

 
readln;
end.
теперь 1 вопрос остается: как читать с текстового файла matan,prog,os - это числовые значения , и как теперь быть?
mishammm вне форума Ответить с цитированием
Старый 11.06.2014, 23:24   #3
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

короче говоря понял свою ошибку, данные не нужно вводить а они должны читаться с файла .. :/
mishammm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дано текстовый файл.словом считают группу символов между двумя пробелами . Упорядочить файл за алфавитом(лесикографично) SMASHBRAIN C# (си шарп) 0 30.05.2013 17:48
Создать на диске текстовый файл, состоящий из имен девочек вашей группы. Переписать имена в алфавитном порядке в новый файл Sancheper Паскаль, Turbo Pascal, PascalABC.NET 1 21.06.2012 07:44
4. Дан текстовый файл. Создать символьный файл trum Помощь студентам 0 03.06.2012 19:20
Создать текстовый файл, строки которого содержат целые числа. Обработать файл следующим образом: напечатать все отрицательные... Anton94.by Паскаль, Turbo Pascal, PascalABC.NET 2 08.02.2012 19:23
Текстовый файл в текстовый массив Kimimaru Общие вопросы C/C++ 1 02.12.2007 11:55