IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Файлы
сообщение
Сообщение #1


Гость






Помогите!!! переделать задачу.

Вот условия:
Составить программу назначения степендиии студентам по результатам сессии
используя следующие правила.

1) Если все оценки 5 назначается повышенная степендия
2) Если все оценки 4 и 5 назначается обычная степендия
3) Еслиоцени 3 стипендия не назначается

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



program stude;
uses crt;
type
 student=record
         kod:byte;
         fam:string[20];
         im:string[10];
         ot:string[15];
         gr:string[6];
         kurs:byte;
         m:array[1..5] of byte;
  end;
var
m:array[1..5] of byte;
ysp:integer;
i:byte;
fstud:file of student;
rab:student;
flag:boolean;
fio:string[25];
key:0..4;
procedure vvod; {Ввод данных с клавиатуры}
begin
clrscr;
with rab do
begin
 write('Фамилия:     ');
 readln(fam);
 if fam='9999' then exit;
 write('Имя:         ');
 readln(im);
 write('Отчество:   ');
 readln(ot);
 write('Группа:      ');
 readln(gr);
 write('Курс:        ');
 readln(kurs);
 write('Успеваемость: ');
 readln(m[1],m[2],m[3],m[4],m[5]);
 kod:=i;
 end  {with}
 end; {vvod}
 procedure vivod; {Ввывод на экран­}
 begin
 with rab do
  begin
   fio:=fam+' '+im[1]+' '+ot[1]+' ';
   write(kod:4,fio:18);
   writeln(gr:8,kurs:8,m[1]:8,m[2]:2,m[3]:2,m[4]:2,m[5]:2);
   end
  end;
  procedure form; {формировать массив}
  begin
  rewrite(fstud);
  i:=1;
  vvod;
  while rab.fam<>'9999' do
  begin
  write(fstud,rab);
  i:=i+1;
  vvod
  end;
  close(fstud)
  end;
  procedure print; {Печать}
  begin
  reset(fstud);
  writeln('-----------------------------------------------------------------------------------');
  writeln('I  №  I      Фио      I  Группа   I  Курс  I  Успеваемость  I   Степендия I Ср. бал');
  writeln('-----------------------------------------------------------------------------------');
  while not eof (fstud) do
  begin
  read(fstud,rab);
  vivod
   end ;
  writeln('-----------------------------------------------------------------------------------');
  readkey;
  close(fstud)
  end;
   procedure print2; {Печать}
  begin
  reset(fstud);
  writeln('------------------------------------------------------------');
  writeln('I  Повышенная степендия         I         Обычная степендия ');
  writeln('------------------------------------------------------------');
  while not eof (fstud) do
  begin
  read(fstud,rab);
  with rab do
   if (m[1]=2)or(m[2]=2)or(m[3]=2)or(m[4]=2)or(m[5]=2)then vivod;
   end ;
  writeln('------------------------------------------------------------');
  readkey;
  close(fstud)
  end;
  begin
  flag:=false;
  assign(fstud,'Студенты');
   repeat
  clrscr;
  writeln('Выберите пункт меню');
  writeln;
  writeln('1-Формировать массив');
  writeln('2-Печать всего массива');
  writeln('3-Печать на повышен. и обычн. степендию');
  writeln('0-выход');
  readln(key);
   case key of
    1:form;
    2:print;
    3:print2;
    0:flag:=true
    end;
  until flag;
  end.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


А что конкретно не работает ?

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Этот код который я дал записывает такие данные

Фамилия
Имя
Отчество
Группа
Курс
Успеваемость

Затем Выводит всех студентов и Всех доишников

Мне нужно чтобы она еще
находила среднюю оценку и какая будет степендия
Затем выводила всех студентов и студентов с повышенной и обычной степендией.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


один из вариантов :

в запись добавляешь например такую штуку
Level : 0..3;

потом, когда начинаешь вводить данные по дефолту ставь всем

students[i].Level:=3;


после того, как ввел оценки делаешь так :

i:=1;
while(i<=5) do
 with ...[i] do begin
     if m[i]=4 then level:=2
       else if m[i]=3 then
         level:=1
       else
        if m[i]=2 then level:=0;
     if level=0 then break
      else inc(i);
 end;


ну а потом уже когда будешь выводить можешь вибирать у кого лавел=3 тот отличник, у кого 2 хорошист и у кого 1 - троечник, у кого 0 - отчислен.

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






klem4 blink.gif
function min(a, b: integer): integer;
begin 
  min := b; if a < b then min := a;
end;

...
with rab do
  for i := 1 to 5 do
    level := min(level, m[i] - 2);

Далее - по твоему тексту... Не проще?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость







program stude;
uses crt;
type
student=record
kod:byte;
fam:string[20];
im:string[10];
ot:string[15];
gr:string[6];
kurs:byte;
m:array[1..5] of byte;
end;
var
m:array[1..5] of byte;
ysp:integer;
i:byte;
fstud:file of student;
rab:student;
flag:boolean;
fio:string[25];
key:0..4;,
Level : 0..3;
procedure vvod; {Ввод данных с клавиатуры}
begin
clrscr;
with rab do
begin
write('Фамилия:     ');
students[i].Level:=3;
readln(fam);
if fam='9999' then exit;
write('Имя:         ');
students[i].Level:=3;
readln(im);
write('Отчество:   ');
students[i].Level:=3;
readln(ot);
write('Группа:      ');
students[i].Level:=3;
readln(gr);
write('Курс:        ');
students[i].Level:=3;
readln(kurs);
write('Успеваемость: ');
students[i].Level:=3;
readln(m[1],m[2],m[3],m[4],m[5]);

i:=1;
while(i<=5) do
with ...[i] do begin
if m[i]=4 then level:=2
else if m[i]=3 then
level:=1
else
if m[i]=2 then level:=0;
if level=0 then break
else inc(i);
 end;

 kod:=i;
 end  {with}
 end; {vvod}
 procedure vivod; {Ввывод на экран}
 begin
 with rab do
  begin
   fio:=fam+' '+im[1]+' '+ot[1]+' ';
   write(kod:4,fio:18);
   writeln(gr:8,kurs:8,m[1]:8,m[2]:2,m[3]:2,m[4]:2,m[5]:2);
   end
  end;
  procedure form; {формировать массив}
  begin
  rewrite(fstud);
  i:=1;
  vvod;
  while rab.fam<>'9999' do
  begin
  write(fstud,rab);
  i:=i+1;
  vvod
  end;
  close(fstud)
  end;
  procedure print; {Печать}
  begin
  reset(fstud);
  writeln('-----------------------------------------------------------------------------------');
  writeln('I  №  I      Фио      I  Группа   I  Курс  I  Успеваемость  I   Степендия I Ср. бал');
  writeln('-----------------------------------------------------------------------------------');
  while not eof (fstud) do
  begin
  read(fstud,rab);
  vivod
   end ;
  writeln('-----------------------------------------------------------------------------------');
  readkey;
  close(fstud)
  end;
   procedure print2; {Печать}
  begin
  reset(fstud);
  writeln('------------------------------------------------------------');
  writeln('I  Повышенная степендия         I         Обычная степендия ');
  writeln('------------------------------------------------------------');
  while not eof (fstud) do
  begin
  read(fstud,rab);
  with rab do
   if (m[1]=2)or(m[2]=2)or(m[3]=2)or(m[4]=2)or(m[5]=2)then vivod;
   end ;
  writeln('------------------------------------------------------------');
  readkey;
  close(fstud)
  end;
  begin
  flag:=false;
  assign(fstud,'Студенты');
   repeat
  clrscr;
  writeln('Выберите пункт меню');
  writeln;
  writeln('1-Формировать массив');
  writeln('2-Печать всего массива');
  writeln('3-Печать на повышен. и обычн. степендию');
  writeln('0-выход');
  readln(key);
   case key of
    1:form;
    2:print;
    3:print2;
    0:flag:=true
    end;
  until flag;
  end.


Так? че-то не прет...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 15.04.2025 12:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name