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.

 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 5)
сообщение
Сообщение #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

 





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