Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
НАРУШИТЕЛЬ
640 / 355 / 2
Регистрация: 10.11.2011
Сообщений: 1,749
Записей в блоге: 5
1

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

20.09.2014, 17:31. Показов 1453. Ответов 1
Метки нет (Все метки)

Задача:Дан текст содержащий сведения об успеваемости учащихся, разделенное запятой.Каждое сведение содержит фамилию, имя ученика и оценки по 4 предметам, и заканчивается ".".
Определить средний балл для каждого ученика.
Вот мой код считает средний балл правильно, как подкорректировать со чтением данных с запятыми и знаками?
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
uses crt;
type
  tablica=record
  name:string[10];
  sred:real;
  rus,math,fiz,bil:byte;
  end;
var
  a:tablica;
  mas:array[1..30] of tablica;
  s:real; n:integer;
  i:integer;
begin
  clrscr;
  writeln('Vvedite kol-vo uchenikov: ');
  readln(n);
  for i:=1 to n do
    with mas[i] do
    begin
      write('FIO ',i,'-go uchenika: '); readln(name);
      writeln('rus language: '); readln(rus);
      writeln('math : '); readln(math);
      writeln('biologic:'); readln(bil);
      writeln('fizics:'); readln(fiz);
      sred:=(rus+math+fiz+bil)/4;
      s := s + sred;
      writeln('Sredni ball uchenika: ' , name,'  ',  sred:4:1);
    end;
end.
Куда именно внести коррективы? подскажите и как?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.09.2014, 17:31
Ответы с готовыми решениями:

Определить средний балл успеваемости каждого студента
Создать файл с полями : фамилия и оценки . Определить средний балл успеваемости каждого студента....

Подсчитать средний балл каждого ученика
Задание такое, нужно ввести кол-во учеников и кол-во оценок у этих учеников, и подсчитать средний...

Как вычислить средний балл для каждого ученика?
Дан текст, содержащий сведения об успеваемости учащихся, разделенные запятой. Каждое сведение...

посчитать средний балл и вывести ученика с такой-же оценкой как и средний балл
ребят как посчитать средний бал и вывести ученика с такой-же оценкой как и средний бал? Program...

1
13 / 13 / 12
Регистрация: 09.09.2014
Сообщений: 29
20.09.2014, 20: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
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
78
79
80
program test;   
uses crt;
type
  tablica=record
  name:string[10];
  sred:real;
  rus,math,fiz,bil:byte;
  end;
var
  mas:array[0..30] of tablica;//Массив записей
  strIn:string;//Строка с входными данными  
  count:integer;//Счетчик записи
 
procedure view();
var 
  i:integer;//переменная для цикла
begin
for i:=0 to count do
    with mas[i] do
    begin
      writeln('FIO ',i+1,'-go uchenika: ',name);
      writeln('rus language: ',rus);
      writeln('math : ',math); 
      writeln('biologic:',bil);
      writeln('fizics:',fiz);
      writeln('Sredni ball uchenika: ' , name,'  ',  sred:4:1);
      writeln();
    end; 
end;
 
procedure parse(str:string);
var
  Stemp:string[30]; //Строка для времиенных данных
  c:byte;//Счетчик для определения тек строки в записи
  n:integer;//Начальная позиция для копирования строки
  i:integer;//переменная для цикла
begin
//Обнуляем значения
  n:=1;
  c:=0;
  Stemp:='';
  count:=0;
  //Вытаскием данные из строки
  for i:=1 to Length(str) do
   begin
    if (str[i]=',') or (str[i]='.') then 
     begin
       Stemp:=copy(str,n,i-n);
       //Выбор строки в записи
       case c of
        0:mas[count].name:=Stemp;
        1:val(Stemp,mas[count].rus);
        2:val(Stemp,mas[count].math);
        3:val(Stemp,mas[count].bil);
        4:begin
           val(Stemp,mas[count].fiz);
           mas[count].sred:=(mas[count].rus
           +mas[count].math+mas[count].fiz+mas[count].bil)/4;
          end;
       end;
       n:=i+1;
       c:=c+1;
       Stemp:='';
       if str[i]='.' then
        begin 
         if i<>Length(str) then count:=count+1;
         c:=0;
        end;
   end;        
   end;
 
end;
 
begin
  clrscr;
  //Получаем входные данные
  strIn:='Ivanov,5,4,3,2.Petrov,3,4,4,4.Sidorov,2,4,2,4.';
  parse(strIn);
  view();
end.


1)Только тут как у тебя, читает Фамилию и оценки, без имени!.
2) Нет обработки ошибок при неверных входных данных.
3) Пишется в массив table, хотя для такой простой задачи он не нужен, ну тут уж сам написал, как подкорректировать твой код.
4) В table поле sred не нужно, можно считать динамически при выводе например.(Один фиг среднее значение нигде больше не используется).

Добавлено через 9 минут
Ах да , я тут подумал, наверно проще из строки вытащить с помощью регулярных выражений , но я в pascal никогда с ними не работал.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.09.2014, 20:30

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Вывести на экран фамилию и инициалы, средний балл успеваемости каждого студента.
Дан список студентов. О каждом студенте известно Ф. И. О.,группа и экзаменационные оценки по 3...

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

Написать файл-ведомость успеваемости учащихся гр.7. каждая запись содержит номер ученика по списку, ФИО ученика и оценки
Java, как бы вы реализовали код? Написать файл-ведомость успеваемости учащихся гр.7. каждая...

Определить средний балл успеваемости по каждому предмету
Помогите: По итогам аттестации в группе по нескольким предметам, выбрать ударников и выдать их...


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

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

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