Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 18.04.2014, 22:30   #1
Dima9595
 
Регистрация: 10.04.2014
Сообщений: 7
По умолчанию Ошибка в коде.

Ребят, помогите пожалуйста!
Программа рабочая, но есть один минус, она не выводит количество учащихся в группах. Я пометил красным где именно это находится.
Программа определяет лучшую группу по среднему баллу.
Код:
Program qq;
Uses CRT;
Var a,h,r,i,k,j,q,count,F,maxi,u: integer;

     sr,sr1,sr2,z: real;
     mas: array[1..100]of real;
     mas2: array[1..100]of integer;
     //процедура считывает оценки студента и определяет сколько студентов завалило сессию//
procedure pr(k:integer;                  // кол-во студентов в группе        //
             var a,             //сумма баллов всех студентов в группе //
                 count:integer);// кол-во студентов, заваливших экзамены//
var i: byte;
   oc:integer; // оценка студента //
 begin
      a:=0;
      count:=0;
      mas2[k]:=k;
   For i:=1 to mas2[k] do
      begin
         write('студент ',i, ' = ');
         readln(oc);
           a:=a+oc;
         if oc < 3 then count:=count+1;
      end;
 end;
// функция считает средний балл по группе //
function fc2(a,              //сумма баллов всех студентов группы//
              b,elem:integer):real;     //кол-во студентов в группе//

 begin
  mas[elem]:=a/b;
  fc2:=mas[elem];
 end;
 Begin
textbackground(14);
Clrscr;
Gotoxy (15,6);
WriteLn ('Вашему вниманию предоставляется программа,');
Gotoxy (15,7);
WriteLn ('которая определяет лучшую группу по среднему баллу. ');
Gotoxy (39,17);
WriteLn ('Программу составил студент');
Gotoxy (39,18);
WriteLn ('МИИТа группы ЭБИ-111');
Gotoxy (39,20);
WriteLn ('Чернов Дмитрий');
Gotoxy (39,21);
WriteLn ('Москва,2014');
Gotoxy (20,23);
WriteLn ('Нажмите любую клавишу для продолжения');
readln;
Begin //главная//
Clrscr;
write('сколько групп в потоке? ');
readln(r);
for i:=1 to r do
begin
write('сколько студентов учится в ',i,' группе? ');
readln(k);
end;
 write('Сколько экзаменов сдают студенты в сессию? ');
  readln(a);
Clrscr;
  Begin
    for i:=1 to r do
      for j:=1 to a do
    begin
     writeln('введите оценки ',i,' группы за ',j,' экзамен');

             pr(k,q,count);

             writeln('не сдали ',count);
             
    writeln('   Cреднее арифметическое = ', fc2(q,k,i):4:1);
     end;
     end;
     u:=r*a;
     Repeat
           F:=0;
      for i:=1 to u-1 do
      begin
        if mas[i]<mas[i+1] then
           begin
           Z:=mas[i];
           mas[i]:=mas[i+1];
           mas[i+1]:=Z;
           F:=1;
        end;
      end;
      Until (F=0);
   writeln('нажмите любую кнопку');
    readln;
    Clrscr;
    gotoxy(26,1);
    Writeln('СВОДКА УСПЕВАЕМОСТИ ГРУПП');
    for j:=1 to 54 do Write('-');
    gotoxy(2,3);
    writeln('|Место | Группа | Число | Средний | Число студнетов |');
    gotoxy(18,4);
    writeln('|Студен.|  балл   |"завалив. сессию"|');
    gotoxy(1,5);
    for j:=1 to 54 do Write('-');
    gotoxy(2,6);
    for i:=1 to r do
    begin
    gotoxy(2,5+i);
      writeln(' ',i,')');
      end;
    for i:=1 to u do
    begin
    gotoxy(29,5+i);
     writeln('',mas[i]:4:1);
     end;
     for i:=1 to r do
    begin
    gotoxy(13,5+i);
    writeln(i);
    end;
    for i:=1 to r do
    begin
    gotoxy(22,5+i);
    writeln(mas2[k]);
    end;
  end;
  end.
Dima9595 вне форума
Старый 19.04.2014, 01:18   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Вот у тебя цикл
Код:
for i:=1 to r do
begin
write('сколько студентов учится в ',i,' группе? ');
readln(k);
end;
Ничего в нем не смущает? )
Son Of Pain вне форума
Старый 19.04.2014, 13:30   #3
Dima9595
 
Регистрация: 10.04.2014
Сообщений: 7
По умолчанию

Смущает, что в цикле переменная i.
Dima9595 вне форума
Старый 19.04.2014, 14:35   #4
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

А то, что все значения читаются в одну переменную, и в итоге сохраняется только последнее?
Son Of Pain вне форума
Старый 19.04.2014, 16:24   #5
Dima9595
 
Регистрация: 10.04.2014
Сообщений: 7
По умолчанию

Как мне это исправить?

Точнее, как мне сделать правильно)

Последний раз редактировалось Stilet; 20.04.2014 в 09:40.
Dima9595 вне форума
Старый 20.04.2014, 09:40   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Заменить на readln(mas2[i]); в указанном цикле.
I'm learning to live...
Stilet вне форума
Старый 20.04.2014, 12:51   #7
Dima9595
 
Регистрация: 10.04.2014
Сообщений: 7
По умолчанию

я заменил здесь
Код:
for i:=1 to r do
begin
write('сколько студентов учится в ',i,' группе? ');
readln(mas2[i]);
end;
заменил здесь
Код:
procedure pr(k,i:integer;                  // кол-во студентов в группе        //
             var a,             //сумма баллов всех студентов в группе //
                 count:integer);// кол-во студентов, заваливших экзамены//
var
   oc:integer; // оценка студента //
 begin
      a:=0;
      count:=0;
   For i:=1 to mas2[i] do
      begin
         write('студент ',i, ' = ');
         readln(oc);
           a:=a+oc;
         if oc < 3 then count:=count+1;
      end;
 end;
и добавил переменную на выводе процедуры и на выводе в таблицу тоже заменил на mas2[i], но у меня все равно не работает, пишет что выход из диапазона 0.
Dima9595 вне форума
Старый 20.04.2014, 12:54   #8
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Вы прогоните отладчиком по массиву mas2 и сразу увидите, что не так.
ZX Spectrum-128 вне форума
Старый 20.04.2014, 13:24   #9
Dima9595
 
Регистрация: 10.04.2014
Сообщений: 7
По умолчанию

Все, спасибо за помощь, я сделал!
Dima9595 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в коде moshkin_ura PHP 7 10.06.2012 21:42
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? ArchiCurtis Помощь студентам 2 07.04.2012 14:16
Ошибка в коде, ошибка в css или это проблема с совместимостью с браузерами? ankris HTML и CSS 5 23.11.2010 16:58
Ошибка в коде . vedro-compota Общие вопросы Delphi 3 08.06.2010 11:10
ошибка в коде Си Misha_M. Помощь студентам 2 05.02.2010 15:41