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

Выведите фамилии и имена учащихся в порядке убывания их среднего балла

04.10.2016, 23:36. Показов 6018. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1) Выведите фамилии и имена учащихся в порядке убывания их среднего балла.

Входные данные
Заданы сначала количество учащихся n, затем n строк, каждая из которых содержит фамилию, имя и три числа (оценки по трем предметам: математике, физике, информатике). Данные в строке разделены одним пробелом. Оценки принимают значение от 1 до 5.

Выходные данные
Необходимо вывести пары фамилия-имя по одной на строке, разделяя фамилию и имя одним пробелом. Выводить оценки не нужно. Если несколько учащихся имеют одинаковые средние баллы, то их нужно выводить в порядке, заданном во входных данных.

Примеры
входные данные
2
Markov Valeriy 1 1 1
Ivanov Ivan 2 2 2
выходные данные
Ivanov Ivan
Markov Valeriy
входные данные
3
Markov Valeriy 5 5 5
Sergey Petrov 1 1 1
Petrov Petr 3 3 3
выходные данные
Markov Valeriy
Petrov Petr
Sergey Petrov


2)Определите трех учащихся с наилучшим средним баллом по трем предметам. Выведите фамилии и имена этих учащихся. Если при этом у нескольких учащихся средний балл совпадает со средним баллом учащегося, "занявшего 3-е место", то необходимо вывести их всех.

Входные данные
Заданы сначала количество учащихся n, затем n строк, каждая из которых содержит фамилию, имя и три числа (оценки по трем предметам: математике, физике, информатике). Данные в строке разделены одним пробелом. Оценки принимают значение от 1 до 5.

Выходные данные
Необходимо вывести пары фамилия-имя по одной на строке, разделяя фамилию и имя одним пробелом. Выводить оценки не нужно. Порядок вывода должен быть таким же, как в исходных данных.

Примеры
входные данные
3
Yakovlev Ivan 5 5 5
Yapryntsev Aleksey 5 5 5
Kozlov Georgiy 5 5 5
выходные данные
Yakovlev Ivan
Yapryntsev Aleksey
Kozlov Georgiy


3) Определите средний балл всех учащихся по каждому предмету.

Входные данные
Заданы сначала количество учащихся n, затем n строк, каждая из которых содержит фамилию, имя и три числа (оценки по трем предметам: математике, физике, информатике). Данные в строке разделены одним пробелом. Оценки принимают значение от 1 до 5.

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

Примеры
входные данные
2
Markov Valeriy 4 5 2
Kozlov Georgiy 5 1 2
выходные данные
4.5 3 2
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2016, 23:36
Ответы с готовыми решениями:

Выведите фамилии и имена учащихся в порядке убывания их среднего балла
Выведите фамилии и имена учащихся в порядке убывания их среднего балла. Входные данные Заданы...

Составить программу вычисления среднего балла каждого учащегося, среднего балла в классе в целом
в классе 8 учеников, известны результаты сдачи экзаменов по 3- м предметам. Составить программу...

Составить программу вычисления среднего балла каждого учащегося, среднего балла в группе в целом
В группе 5 учеников , известны результаты сдачи экзаменов по трем предметам.Составьте программу...

Вывести на экран фамилии и имена учащихся, сдавших экзамены только на 4 и 5
На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов некоторой средней...

1
Эксперт Pascal/Delphi
2385 / 1297 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
05.10.2016, 12:19 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

1. Сорри за кривизну, вроде работает, с одним но - сортировка может не сохранять входной порядок:

Pascal
1
2
3
4
5
6
begin 
  writeln(string.Join(newline,string.Join(newline,ReadArrString(ReadlnInteger('n=')).
         OrderByDescending(s->s.split(' ').Skip(2).Select(Strtofloat).Average()).
          Select(s->s.Split(' ')[0]+' '+s.Split(' ')[1]))
          ));
end.
Добавлено через 26 минут
или с ручной сортировкой:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
type st=record
   FN:string;
   S:real;
end;   
var
  i,j,n:integer;
  a:array of st;
  t:st;
  s:string;
begin
  n:=ReadlnInteger('n=')-1;
  SetLength(a,n+1);
  for i:=0 to n do begin
    s:=ReadlnString('Enter data of '+inttostr(i+1)+' pupil:');
    a[i].FN:=string.Join(' ',s.Split(' ').take(2));
    a[i].S:=s.split(' ').Skip(2).Select(Strtofloat).Average();
  end;
  for i:=0 to n-1 do 
    for j:=i+1 to n do
      if a[i].S<a[j].S then Swap(a[i],a[j]); 
  writeln('Sorting list:');    
  for i:=0 to n do writeln(a[i].FN);
end.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2016, 12:19
Помогаю со студенческими работами здесь

Программа для поиска среднего балла каждого учащегося и общего среднего балла
вот программа для поиска среднего балла каждого учащегося и общего среднего балла. при запуске...

Выдать список абитуриентов в порядке убывания их балла
&quot;Известны фамилии и суммарный балл, полученный каждым из N абитуриентов на вступительных экзаменах....

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

По списку учащихся выяснить, перечислены ли ученики в списке в порядке убывания их роста
Имеется список учащихся класса с указанием роста каждого из них в сантиметрах. Выясните,...


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

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

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