Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
Старичок :)
728 / 315 / 5
Регистрация: 03.04.2011
Сообщений: 1,430
1

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

04.04.2011, 14:12. Показов 5672. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
uses crt;
const LIM = 100;
var Info: array[1..LIM] of record
name: string;
sum: integer;
end;
i, k, N, mark, min1, min2, min3: integer;
c: char;
begin
readln(N);
{ ввод исходных данных }
for i:=1 to N do begin
Info[i].name := '';
for k:=1 to 2 do
repeat
read(c);
Info[i].name := Info[i].name + c;
until c = ' ';
Info[i].sum := 0;
for k:=1 to 3 do begin
read(mark);
Info[i].sum := Info[i].sum + mark;
end;
readln;
end;
{ поиск трех минимальных }
min1 := 20; min2 := 20; min3 := 20;
for i:=1 to N do begin
if Info[i].sum <min1 then begin
min3 := min2; min2 := min1;
min1 := Info[i].sum;
end
else if Info[i].sum <min2 then begin
min3 := min2;
min2 := Info[i].sum;
end
else if Info[i].sum <min3 then
min3 := Info[i].sum;
end;
{ вывод результата }
for i:=1 to N do
if Info[i].sum <= min3 then
writeln(Info[i].name);
end.
На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов некоторой средней школы. В первой строке сообщается количество учеников N, которое не меньше 10, но не превосходит 100, каждая из следующих N строк имеет следующий формат:
<Фамилия> <Имя> <оценки>,
где <Фамилия> – строка, состоящая не более чем из 20 символов, <Имя> – строка, состоящая не более чем из 15 символов, <оценки> – через пробел три целых числа, соответствующие оценкам по пятибалльной системе. <Фамилия> и <Имя>, а также <Имя> и <оценки> разделены одним пробелом. Пример входной строки:
Иванов Петр 4 5 3
Требуется написать как можно более эффективную программу , которая будет выводить на экран фамилии и имена трех худших по среднему баллу учеников. Если среди остальных есть ученики, набравшие тот же средний балл, что и один из трех худших, то следует вывести и их фамилии и имена.

Объясните что не так.. Вроде работает.. НО! как я понимаю, ввел строчку "Иванов Петр 4 5 3" Нажал enter и так сколько учеников, а потом оно должно автоматически выдать ответ.. А почему не выдаёт???

Добавлено через 17 часов 7 минут
Ребят, ну так что, есть идеи ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2011, 14:12
Ответы с готовыми решениями:

Вывести на экран фамилии и имена 3 лучших по среднему баллу учеников
На вход в программе выдаются сведения об оценках в экзаменационной ведомости. В 1...

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

Вывести на экран фамилии и имена трех худших по среднему баллу учеников
Помогите с информатикой?QBASIK На вход программе подаются сведения о сдаче экзаменов учениками...

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

2
72 / 72 / 60
Регистрация: 14.12.2010
Сообщений: 201
05.04.2011, 07:30 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
uses crt;
 
type a=record;
name: string;
sname : string;
srbal : real;
end;
 
var
   i:integer;
   b: array[1..5] of a;
begin
   for i:=1 to 5 do
       with b[i] do
            begin
               writeln('Введите информацию о ',i,'-ом ученике');
               write('Фамилия: ');
               readln(sname);
               write('Имя :');
               readln(name);
               write('Средний бал :');
               readln(srbal);
            end;
clrscr;
   for i:=1 to 5 do
   with b[i] do
       if srbal<4 then begin
                                 writeln(name[i],' ',sname[i],' ',srbal);
                       end;
end.
Только немного не по заданию
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
05.04.2011, 08:26 3
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
uses crt;
const nmin=10;
      nmax=100;
type data=record
          fam:string[20];
          nam:string[15];
          ocn:array[1..3] of integer;
          srb:real;
          end;
var Info: array[1..nmax] of data;
          n,i,j,k:integer;
          x:data;
          s:string;
          c:integer;
begin
repeat
write('Количество ученикоа от ',nmin,' до ',nmax,' n=');
readln(N);
until n in [nmin..nmax];
{ ввод исходных данных }
writeln('Введите данные ',n,' учеников:');
writeln('В одной строке фамилия, имя и три оценки(2..5) через 1 пробел)');
for i:=1 to N do
 begin
  readln(s); //читаем строку, ввод делать точно
  with Info[i] do
   begin
    fam:=copy(s,1,pos(' ',s)-1); //выделяем фамилию
    delete(s,1,pos(' ',s));
    nam:=copy(s,1,pos(' ',s)-1);  //имя
    delete(s,1,pos(' ',s));
    srb:=0;
    for j:=1 to 3 do //оценки
     begin
      val(s[2*j-1],ocn[j],c);
      srb:=srb+ocn[j]; //считаем сумму
     end;
   srb:=srb/3;//ср. балл
  end;
 end;
 //сортируем по возрастанию
for i:=1 to n-1 do
for j:=i+1 to n do
if info[i].srb>info[j].srb then
 begin
  x:=info[i];
  info[i]:=info[j];
  info[j]:=x;
 end;
{ вывод результата }
writeln('Трое учеников с наименьшим ср. баллом:');
for i:=1 to 3 do
with info[i] do
 begin
  write(fam,' ',nam);
  for j:=1 to 3 do
  write(' ',ocn[j]);
  write(' ',srb:0:2);
  writeln;
 end;
writeln('Имеющие также ср. балл, равный третьему:');
k:=0;
for i:=4 to n do
if abs(info[i].srb-info[3].srb)<0.01 then
 begin
  k:=1;
  with info[i] do
   begin
    write(fam,' ',nam);
    for j:=1 to 3 do
    write(' ',ocn[j]);
    write(' ',srb:0:2);
    writeln;
   end;
 end;
if k=0 then write('Таких учеников нет');
end.
0
05.04.2011, 08:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2011, 08:26
Помогаю со студенческими работами здесь

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

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

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

Вывести на экран фамилии и имена трех лучших по среднему баллу учеников
задача 1 Во входном файле meteo.dat 365 строк, которые содержат информацию о среднесуточной...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru