Задача на файлы, Паскаль АВС
Условие задачи: в деканате имеются сведения о студентах группы : фамилия имя студента.
Оценки полученные во время экзаменационной сессии Составить программу назначения стипендии студентам
по результатам сессии, используя следующие правила: 1) если все оценки 5, назначается повышенная стипендия;
2) если все оценки 4 и 5, назначается обычная стипендия; 3) если есть оценка 3, стипендия не назначается.
В результате работы программы нужно:
1. напечатать список группы с оценками,
2. средний балл каждого студента,
3. средний балл группы по предмету,
4. списки фамилий (назначенных на повышенную стипендию),
5. количество студентов (назначенных на обычную стипендию),
6. списки студентов неуспевающих по заданной дисциплине.
вот на что хватило моих соображений и усилий(не на много((().
program semestr1zad;
uses crt;
const put = 'D:\students.txt';
type ses=record
fam:string[25];
zz: Array [1..50] of Integer;
zn: Integer;
end;
var p: ses;
m: Array[0..100] of ses;
f: text;
x,i,j,n: integer;
st:string[3];
procedure app;
var t:String;
begin
rewrite(f);
repeat
write('Vvedi familiyu studenta : ');readln(p.fam);writeln(f,p.fam);
write('Vvedi kolichestvo ocenok studenta: ');readln(p.zn);writeln(f,p.zn);
for i:=1 to p.zn do begin
write('Vvedi ocenky #',i,' : ');readln(p.zz);writeln(f,p.zz);
end;
writeln('Prodolgit yes/no?');
readln(st);
until st='no';
close(f);
end;
procedure prosm;
var ss,sr:real;
begin
reset(f);
while not eof(f) do begin
readln(f,p.fam);
Writeln(p.fam);Write('Ocenki : ');
readln(f,p.zn);
ss:=0;
for i:=1 to p.zn do begin
readln(f,p.zz);
ss:=ss+p.zz;
Write(p.zz,', ');
end;
sr:=ss/p.zn;
writeln;writeln('Sredniy bal : ',sr:4:2);
writeln('----------------------------------------');
end;
Writeln('------------ NAZHMITE ENTER ------------');Readln;
close(f);
end;
procedure stipendii;
var sum:Integer;
flag:boolean;
begin
reset(f);
i:=0;
while not eof(f) do begin
inc(i);
readln(f,p.fam);readln(f,p.zn);
for j:=1 to p.zn do readln(f,p.zz[j]);
m:=p;
end;
n:=i;
close(f);
writeln('familii na povisennyu stipendiu : ');
for i:=1 to n do begin
sum:=0;
for j:=1 to m.zn do sum:=sum+m.zz[j];
if sum=(m.zn*5) then writeln(m.fam);
end;
writeln('familii na obicnyy stipendiu : ');
for i:=1 to n do begin
sum:=0;flag:=true;
for j:=1 to m.zn do begin
sum:=sum+m.zz[j];
if m.zz[j]<4 then flag:=false;
end;
if flag and (sum<(m.zn*5)) then writeln(m.fam);
end;
writeln('Stipendia ne naznachaetsa spisok studentov ne uspevaysh: ');
for i:=1 to n do begin
flag:=false;
for j:=1 to m.zn do if m.zz[j]<4 then flag:=true;
if flag then writeln(m.fam);
end;
Writeln('------------ NAZHMITE ENTER ------------');Readln;
end;
begin
assign(f,put);
repeat
writeln('viberite nujnii punkt menu');
writeln('1 - zapolnenie faila dannymi');
writeln('2 - svedenia o studentah');
writeln('3 - stipendii');
writeln('4 - vyxod');
readln(x);
case x of
1:app;
2
rosm;
3:stipendii;
end;
until x=4;
end.
ошибок куча...
пару условий не выполнил.(нет дисциплин, данные Ф.И. как одно целое...)
мне просто необходима рука мастера. подкорректировать код.
можно использовать граф для изменения цвета шрифта. но с этим тяжко у меня(с граф). надеюсь моя просьба не останется без ответа. время до понедельника. 12.12.2011.
Условие задачи: в деканате имеются сведения о студентах группы : фамилия имя студента.
Оценки полученные во время экзаменационной сессии Составить программу назначения стипендии студентам
по результатам сессии, используя следующие правила: 1) если все оценки 5, назначается повышенная стипендия;
2) если все оценки 4 и 5, назначается обычная стипендия; 3) если есть оценка 3, стипендия не назначается.
В результате работы программы нужно:
1. напечатать список группы с оценками,
2. средний балл каждого студента,
3. средний балл группы по предмету,
4. списки фамилий (назначенных на повышенную стипендию),
5. количество студентов (назначенных на обычную стипендию),
6. списки студентов неуспевающих по заданной дисциплине.
вот на что хватило моих соображений и усилий(не на много((().
program semestr1zad;
uses crt;
const put = 'D:\students.txt';
type ses=record
fam:string[25];
zz: Array [1..50] of Integer;
zn: Integer;
end;
var p: ses;
m: Array[0..100] of ses;
f: text;
x,i,j,n: integer;
st:string[3];
procedure app;
var t:String;
begin
rewrite(f);
repeat
write('Vvedi familiyu studenta : ');readln(p.fam);writeln(f,p.fam);
write('Vvedi kolichestvo ocenok studenta: ');readln(p.zn);writeln(f,p.zn);
for i:=1 to p.zn do begin
write('Vvedi ocenky #',i,' : ');readln(p.zz);writeln(f,p.zz);
end;
writeln('Prodolgit yes/no?');
readln(st);
until st='no';
close(f);
end;
procedure prosm;
var ss,sr:real;
begin
reset(f);
while not eof(f) do begin
readln(f,p.fam);
Writeln(p.fam);Write('Ocenki : ');
readln(f,p.zn);
ss:=0;
for i:=1 to p.zn do begin
readln(f,p.zz);
ss:=ss+p.zz;
Write(p.zz,', ');
end;
sr:=ss/p.zn;
writeln;writeln('Sredniy bal : ',sr:4:2);
writeln('----------------------------------------');
end;
Writeln('------------ NAZHMITE ENTER ------------');Readln;
close(f);
end;
procedure stipendii;
var sum:Integer;
flag:boolean;
begin
reset(f);
i:=0;
while not eof(f) do begin
inc(i);
readln(f,p.fam);readln(f,p.zn);
for j:=1 to p.zn do readln(f,p.zz[j]);
m:=p;
end;
n:=i;
close(f);
writeln('familii na povisennyu stipendiu : ');
for i:=1 to n do begin
sum:=0;
for j:=1 to m.zn do sum:=sum+m.zz[j];
if sum=(m.zn*5) then writeln(m.fam);
end;
writeln('familii na obicnyy stipendiu : ');
for i:=1 to n do begin
sum:=0;flag:=true;
for j:=1 to m.zn do begin
sum:=sum+m.zz[j];
if m.zz[j]<4 then flag:=false;
end;
if flag and (sum<(m.zn*5)) then writeln(m.fam);
end;
writeln('Stipendia ne naznachaetsa spisok studentov ne uspevaysh: ');
for i:=1 to n do begin
flag:=false;
for j:=1 to m.zn do if m.zz[j]<4 then flag:=true;
if flag then writeln(m.fam);
end;
Writeln('------------ NAZHMITE ENTER ------------');Readln;
end;
begin
assign(f,put);
repeat
writeln('viberite nujnii punkt menu');
writeln('1 - zapolnenie faila dannymi');
writeln('2 - svedenia o studentah');
writeln('3 - stipendii');
writeln('4 - vyxod');
readln(x);
case x of
1:app;
2
3:stipendii;
end;
until x=4;
end.
ошибок куча...
пару условий не выполнил.(нет дисциплин, данные Ф.И. как одно целое...)
мне просто необходима рука мастера. подкорректировать код.
можно использовать граф для изменения цвета шрифта. но с этим тяжко у меня(с граф). надеюсь моя просьба не останется без ответа. время до понедельника. 12.12.2011.