Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
ulyana_
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 19
1

Вывести в файл данные учеников, которые получили больше 80 баллов

26.04.2016, 11:16. Просмотров 1072. Ответов 1
Метки нет (Все метки)

В файле записаны данные о результатах сдачи экзамена. Каждая строка содержит фамилию, имя и количество баллов, разделенные пробелами:
<Фамилия> <Имя> <Количество баллов>
Вывести в другой файл данные учеников, которые получили больше 80 баллов. Список должен быть отсортирован по убыванию балла.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var
f1,f2:text;
s:string;
f,im,b:array[1..100] of string;
i,st,x,code:integer;
begin
  assign(f1,'input.txt');
  assign(f2,'output.txt');
   reset(f1);
    st:=0;
  while not eof(f1) do begin
   readln(f1,s);
    st:=st+1;
  f[st]:=copy(s,1,pos(' ',s));
   delete(s,1,pos(' ',s));
  im[st]:=copy(s,1,pos(' ',s));
   delete(s,1,pos(' ',s));
  b[st]:=copy(s,1,3);
 end;
   close(f1);
    for i:=1 to st do begin 
     val(b[i],x,code);
      if x>=80 then begin
    rewrite(f2); 
     writeln(f2,f[i],im[i],b[i]);
    end;
     end;
    close(f2);
 end.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2016, 11:16
Ответы с готовыми решениями:

Вывести в другой файл данные учеников, которые получили в сумме больше 240 баллов (по убыванию баллов)
задача: В файле записаны данные о результатах сдачи экзаменов по математике, русскому языку и...

Вывести в другой файл данные учеников, которые получили в сумме больше 240 баллов
В файле записаны данные о результатах сдачи экзаменов по математике, русскому языку и физике....

Вывести в другой файл фамилии и имена тех учеников, которые получили больше 80 баллов
В файле записаны данные о результатах сдачи экзамена. Каждая строка содержит фамилию, имя и...

Найти и вывести фамилии тех студентов, которые на экзаменах получили не ниже 7 баллов
Даны оценки группы студентов на экзаменах по 4 предметам: алгебре, геометрии, философии,...

Распечатать (вывести на экран) фамилии тех учеников, которые не получили ни одной тройки
Разработать программу: - записи подготовленных данных хранятся во внешнем файле с именем...

1
ChiliPalmer
20 / 20 / 6
Регистрация: 09.04.2016
Сообщений: 145
26.04.2016, 13:55 2
ulyana_, пару замечаний:
1. Там где вы присваиваете переменной B[st] часть исходной строки - откуда вы знаете, что осталось всего 3 символа? А если их не три - переменная неправильно "возьмет" часть исходной подстроки.
Я думаю, вместо цифры 3 в данном случае нужно использовать длину строки S, так как в ней после предыдущих удалений останется только "сумма баллов" в строчном виде. Но сумма баллов может варьироваться от нуля до сотни с лишним(например) и соответственно длина оставшейся строки будет в диапазоне 1-3 символа(а может и больше, в зависимости от максимально возможного размера общей суммы баллов), поэтому выделять именно три символа из оставшейся строки будет неправильно.
2. Rewrite(f2) я бы вынес вверх за цикл For, так как эта процедура будет в цикле "обнулять" ваш второй файл.
3. Условие занесения Инфы во второй файл у вас написано не совсем корректно. Нужно написать условие "x > 80", а не "x >= 80".
4. До занесения информации во второй файл, вам нужно вставить код сортировки, для осуществления которой я бы на вашем есте создал еще один массив - целочисленного типа и заносил бы туда баллы студентов вместе с заполнением остальных массивов(при чтении исходного файла в цикле).
Примечание: Сортировка у вас должна быть не совсем обычная. Так как вы не используйте в программе типизированную запись из трех элементов, вам придется при сортировке менять также местоположение соответствующих элементов в остальных массивах, чтобы впоследствии данные о фамилиях, именах и баллах соответствовали друг другу, как в исходных данных.

Добавлено через 2 минуты
П.с. Наверное с типизированной записью это бы выглядело немного проще.

Добавлено через 9 минут
П.с.2. Если вы все же не будете использовать типизированную запись, уточню по поводу своего 4-го пункта: тогда нужно создать не дополнительный массив, а просто поменять тип массива баллов на целочисленный, и заполнять его сразу числовыми значениями в цикле чтения инфы из исходного файла. Тогда будет проще его сортировать впоследствии.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2016, 13:55

Записи: Распечатать фамилии тех учеников, которые не получили ни одной тройки за последнюю четверть
2. Распечатать фамилии тех учеников, которые не получили ни одной тройки за последнюю четверть. В...

Комбинированный тип данных (записи). Распечатать фамилии тех учеников, которые не получили ни одной 3 за последнию четверть
помогите решить. Распечатать фамилии тех учеников, которые не получили ни одной 3 за последнию...

Распечатать данные учеников (ФИО,номер группы,школа),участвовавших в олимпиаде по информатике и набравшие не менее 30 баллов.
№3 Распечатать данные учеников (ФИО,номер группы,школа),участвовавших в олимпиаде по информатике и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru