0 / 0 / 0
Регистрация: 07.04.2018
Сообщений: 2
1

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

25.04.2018, 20:00. Показов 2444. Ответов 1
Метки нет (Все метки)

задача: В файле записаны данные о результатах сдачи экзаменов по математике, русскому языку и физике. Каждая строка содержит фамилию, имя и три целых числа – количество бал-лов, набранных участником по каждому предмету:
<Фамилия> <Имя> <Математика> <Русский язык> <Физика>
Вывести в другой файл данные учеников, которые получили в сумме больше 240 баллов. Список должен быть отсортирован по убыванию балла. Формат выходных данных:
1) П. Иванов 284
2) И. Петров 275
...
Помогите пожалуйста отредактировать программу
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
30
31
32
33
34
35
36
37
38
39
40
41
42
program ekz;
const max=1000;
var fin,fout:text;
var a:array[1..max] of integer;
k,k1,i,j,p,n,sum:integer;
s:integer;
begin
assign(fin,'text.txt');
reset(fin);
n:=0;
while not eof(fin) and n<max do  begin
n:=n+1;
readln(fin,a[n]);
end;
while not eof(fin) do begin;
p:=pos(' ',s);
name:=copy(s,1,1)+'. ';
delete(s,1,pos(' ',s));
surname:=name+copy(s,1,pos(' ',s)-1);
delete(s,1,pos(' ',s));
p:=pos(' ',s);
while not length(s)>0 do begin
ball:=(copy(s,1,length(s));
val(ball,k,r);
sum:=sum+k;
end;
end;
close(fin);
assign(fout,'text1.txt');
for i:=1 to n-1 do
for j:=n-1 downto i do
if a[j+1]<a[j] then begin
a1:=a[j];
a[j]:=a[j+1];
a[j+1]:=a1;
end;
rewrite(fout);
if sum>240 then
for i:=1 to n do 
s:=name+' '+surname+sum;
writeln(fout,s);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2018, 20:00
Ответы с готовыми решениями:

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

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

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

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

1
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
26.04.2018, 09:33 2
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
program ekz;
const max=1000;
type zap=record //тип запись с полями
         surname,name:string[20];//фамилия, имя
         sum:integer;//сумма баллов
         end;
var fin,fout:text;
var a:array[1..max] of zap;//массив записей
    s:string;
    a1:zap;  //переменная типа запись=буфер при сортировке
    n,i,j:integer;
begin
assign(fin,'text.txt');//файл в папке с программой
reset(fin);
n:=0;
while not eof(fin) and (n<max) do
 begin
  n:=n+1;
  readln(fin,s); //читаем строки
  a[n].surname:=copy(s,1,pos(' ',s)-1); //фамилия
  delete(s,1,pos(' ',s));
  a[n].name:=copy(s,1,pos(' ',s)-1); //имя
  delete(s,1,pos(' ',s));
  s:=s+' '; //добавим пробел в конец для удобства чтения баллов
  a[n].sum:=0; //сумма баллов
  for i:=1 to 3 do
   begin
    a[n].sum:=a[n].sum+strtoint(copy(s,1,pos(' ',s)-1));
    delete(s,1,pos(' ',s));
   end;
 end;
close(fin);
for i:=1 to n-1 do
for j:=n-1 downto i do
if a[j+1].sum>a[j].sum then //сортируем по убыванию суммы
 begin
  a1:=a[j];
  a[j]:=a[j+1];
  a[j+1]:=a1;
 end;
if a[1].sum<=240 then //если нет нужных
 begin
  writeln('Нет учащихся с суммой балов больше 240');
  exit;   //выходим из программы
 end;
assign(fout,'text1.txt');
rewrite(fout);
for i:=1 to n do   //пишем в новый файл
if a[i].sum>240 then  //если сумма больше 240
//первую букву имени с точкой, фамилию и сумму баллов
writeln(fout,a[i].name[1],'. ',a[i].surname,' ',a[i].sum);
close(fout);
writeln('Файл text.txt прочитан, обработан и найденные данные записаны в файл text1.txt')
end.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2018, 09:33
Помогаю со студенческими работами здесь

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

Сформируйте массив из лучших учеников школы, т.е. из учеников, не имеющих отметок ниже 4 и по сумме баллов, не уступающих другим ученикам.
1. Сведения об ученике состоят из имени, фамилии, названия класса(год обучения и буквы),оценок за...

Структуры, вывести анкетные данные учеников, участвовавших в олимпиаде по информатике и заработавших не менее 30 баллов
Распечатать анкетные данные учеников, участвовавших в олимпиаде по информатике и заработавших не...

если балл выше 85, то выводится отметка «5», 84 – 70 баллов – «4», 69 – 35 баллов – «3», ниже 35 баллов – «2»
если балл выше 85, то выводится отметка «5», 84 – 70 баллов – «4», 69 – 35 баллов – «3», ниже 35...

Вывести список абитуриентов, отсортированный по сумме баллов, полученных на экзаменах
*Ввести и сохранить в файле данные следующей структуры:*ф.,и.,о. абитуриента, * средний балл...

Отсортировать массив по сумме баллов студентов и вывести на экран вместе с их фамилиями
Даны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s- результат сессии F...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru