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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2016, 12:51   #1
Вася195
Новичок
Джуниор
 
Регистрация: 25.10.2016
Сообщений: 4
По умолчанию В файле записаны данные о результатах сдачи экзамена. Вывести в другой файл фамилии и имена тех учеников, которые получили больше 80 баллов.

В файле записаны данные о результатах сдачи экзамена. Каждая строка содержит фамилию, имя и количество баллов, разделенные пробелами:
<Фамилия> <Имя> <Количество баллов>
Вывести в другой файл фамилии и имена тех учеников, которые получили больше 80 баллов. Список должен быть отсортирован по убыванию балла. Формат выходных данных:
П. Иванов 98
И. Петров 96 и так далее
Вот что у меня получается. Помогите, что правильно выполнялись все условия
Код:
var s,sAge,s0,fm,im: string;
    age,p,r,t,i,j,c: integer;
    f1,f2: text;
    A: array[1..15] of integer;
begin
  assign(f1, 'input.txt');
  assign(f2, 'output.txt');
  reset(f1); rewrite(f2);
   while not Eof(f1) do begin
   
   readln(f1,s0);
   s:=s0;
    p:=pos(' ',s);
    fm:=copy(s,1,p-1);
    delete(s,1,p);
    p:=pos(' ',s);
    im:=copy(s,1,p-1);
    delete(s,1,p);
    sAge:=copy(s,1,p-1);
    val(sAge,age,r);
 
   if age>80 then begin
   t:=t+1;
   for i:=1 to t do begin
   a[i]:=age;  end;
for i:=1 to t-1 do
for j:=t-1 downto i do
if a[j+1]<a[j] then begin
c:=a[j];
a[j]:=a[j+1];
a[j+1]:=c;    end; 
  
  writeln(f2,t,')',im[1]+'.'+fm+' ' ,s);
  
    end;  end;
  close(f1);
  close(f2)
end.

Последний раз редактировалось Вася195; 25.10.2016 в 13:58.
Вася195 вне форума Ответить с цитированием
Старый 25.10.2016, 13:21   #2
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Код отформатируйте - используя тег [code] - решетка, и проставьте отступы.
Помогающим будет легче понять, что вы написали
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 25.10.2016, 13:25   #3
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

с записями знаком?
Код:
uses crt;
type FIO = record
     surname,name:string;
     bal:byte;
     end;
var a:array[1..100] of FIO;
    rec:FIO;
    N:byte;
    f1,f2:text;
    line:string;
    p:integer;
    i,j:byte;
begin
  assign(f1,'input.txt');reset(f1);
  assign(f2,'output.txt');rewrite(f2);
  n:=0;
  while not(eof(f1)) do
   begin
     inc(n);
     readln(f1,line);
     p:=pos(' ',line);
     a[n].surname := copy(line,1,p-1);
     delete(line,1,p);
     p:=pos(' ',line);
     a[n].name:=copy(line,1,p-1);
     delete(line,1,p);
     val(copy(line,1,length(line)),a[n].bal,p);
     if a[n].bal < 80 then dec(n);
   end;
   for i:=1 to n do
    for j:=1 to n do
     if a[i].bal>a[j].bal then
        begin
          rec:=a[j];
          a[j]:=a[i];
          a[i]:=rec;
        end;
   for i:=1 to n do
       writeln(f2,a[i].surname,' ',a[i].name,a[i].bal:10);
  close(f1);close(f2);
end.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 25.10.2016, 13:53   #4
Вася195
Новичок
Джуниор
 
Регистрация: 25.10.2016
Сообщений: 4
По умолчанию

вот так мы не пишем

type FIO = record

var a:array[1..100] of FIO;
rec:FIO;

a[n].surname := copy(line,1,p-1);

a[n].name:=copy(line,1,p-1);

if a[n].bal < 80 then dec(n);

if a[i].bal>a[j].bal then

writeln(f2,a[i].surname,' ',a[i].name,a[i].bal:10);
Вася195 вне форума Ответить с цитированием
Старый 25.10.2016, 14:03   #5
Вася195
Новичок
Джуниор
 
Регистрация: 25.10.2016
Сообщений: 4
По умолчанию

посмотрите на мою программу, там необходимо добавить чтобы по убыванию сортировал
Вася195 вне форума Ответить с цитированием
Старый 25.10.2016, 14:48   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Вася195 Посмотреть сообщение
посмотрите на мою программу, там необходимо добавить чтобы по убыванию сортировал
если так, то там необходимо и имена и фамилии в отдельных массивах хранить. Сортировку вынести после считывания и менять значения местами в 3 массивах.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 27.10.2016, 12:40   #7
Вася195
Новичок
Джуниор
 
Регистрация: 25.10.2016
Сообщений: 4
По умолчанию

можете написать программу тогда
Вася195 вне форума Ответить с цитированием
Старый 27.10.2016, 12:57   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Вася195 Посмотреть сообщение
можете написать программу тогда
могу, это не сложно
Изображения
Тип файла: jpg ATT.jpg (114.5 Кб, 245 просмотров)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 27.10.2016, 13:21   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Aleksandr H., отлично! и за код в картинке - тоже!

Вот только зачем такая избыточность в циклах сортировки?
ведь вместо
Цитата:
Код:
for i:=1 to N do 
  for j:=1 to N do
вполне достаточно:
Код:
for i:=1 to N-1 do 
  for j:=i+1 to N do
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны фамилии, имена и отчества 20 учеников класса. Вывести ФИО каждого ученика, чья фамилия начинается на букву "А", на отдельной ALEXandr20333 C# (си шарп) 2 28.06.2015 23:54
C++. Вывести список студентов которые получили 3 по третьему экзамену Timur76r Помощь студентам 1 21.05.2015 15:25
Создать файл, содержащий сведения о результатах сдачи сессии Настюша 1991 Помощь студентам 0 27.05.2014 22:09
вывести фамилии,имена и отчества всех студентов мужского пола Degster Паскаль, Turbo Pascal, PascalABC.NET 0 15.05.2011 18:32
Распечатать фамилии учеников,фамилии которых начинаются на букву В с указанием даты рождения. greenO_o Помощь студентам 0 26.05.2010 22:49