Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 08.12.2011, 23:16   #1 (permalink)
Сабыржан
Новичок
 
Регистрация: 15.11.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Arrow Задача на файлы, Паскаль АВС

Условие задачи: в деканате имеются сведения о студентах группы : фамилия имя студента.
Оценки полученные во время экзаменационной сессии Составить программу назначения стипендии студентам
по результатам сессии, используя следующие правила: 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[i]);writeln(f,p.zz[i]);
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[i]);
ss:=ss+p.zz[i];
Write(p.zz[i],', ');
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[i]:=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[i].zn do sum:=sum+m[i].zz[j];
if sum=(m[i].zn*5) then writeln(m[i].fam);
end;
writeln('familii na obicnyy stipendiu : ');
for i:=1 to n do begin
sum:=0;flag:=true;
for j:=1 to m[i].zn do begin
sum:=sum+m[i].zz[j];
if m[i].zz[j]<4 then flag:=false;
end;
if flag and (sum<(m[i].zn*5)) then writeln(m[i].fam);
end;
writeln('Stipendia ne naznachaetsa spisok studentov ne uspevaysh: ');
for i:=1 to n do begin
flag:=false;
for j:=1 to m[i].zn do if m[i].zz[j]<4 then flag:=true;
if flag then writeln(m[i].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;
2rosm;
3:stipendii;
end;
until x=4;
end.

ошибок куча...
пару условий не выполнил.(нет дисциплин, данные Ф.И. как одно целое...)
мне просто необходима рука мастера. подкорректировать код.
можно использовать граф для изменения цвета шрифта. но с этим тяжко у меня(с граф). надеюсь моя просьба не останется без ответа. время до понедельника. 12.12.2011.
Вложения
Тип файла: rar 1 semestr zad.rar (1.4 Кб, 37 просмотров)
Сабыржан вне форума   Ответить с цитированием

Старый 08.12.2011, 23:16
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Эти топики могут помочь вам решать проблему

Задача на графику, Паскаль АВС
Задача в Паскаль
Задача на файлы
Задача про стоки, Паскаль
Паскаль. Задача о сторожах
Задача, Паскаль

Старый 08.12.2011, 23:19   #2 (permalink)
Сабыржан
Новичок
 
Регистрация: 15.11.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию файл

забыл файл, вот он.
Вложения
Тип файла: txt students.txt (181 байт, 769 просмотров)
Сабыржан вне форума   Ответить с цитированием
Старый 10.12.2011, 19:06   #3 (permalink)
Сабыржан
Новичок
 
Регистрация: 15.11.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Всем привет! пожалуиста отредактируите мою задачу. что бы код был без лишних "слов" , "символов". Я тут сам пытаюсь. но мне не нравится. Мне ее скоро ( во вторник) показывать. и от нее многое решается...((
Сабыржан вне форума   Ответить с цитированием
Старый 10.12.2011, 19:26   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Да но... как же это у Вас каждый студент сдает разное количество экзаменов?! Я бы понял, если бы количество экзаменов у всех студентов было одинаковым, и тогда каждая строка соответствовала бы какой-либо дисциплине. Например, первая цифра после фамилии каждого студента - это оценка по информатике, вторая - по химии ну и т.п.. А так...
Поэтому могу предложить свой вариант:
1. Данные о студентах не вносятся в файл, а считываются из заранее (в любом текстовом редакторе) подготовленного файла. Вид файла (латиница - только для удобства, можете заменить):
Код:
Ivanov Petr
5
4
5
4
5
Petrov Ivan
5
5
5
5
5
Sidorov Sergey
5
2
5
4
5
Kovalchuk Anton
3
2
5
4
5
Shmidt Valera
5
4
4
5
4
ВАЖНО: файл не должен в конце содержать пустых строк!
Количество студентов заранее не устанавливается, т.е. можно, например, добавить еще.

2. Все студенты сдают одинаковое количество экзаменов (в данном случае - 5, в программу это число "зашито", менять нельзя), каждая строка оценок соответствует определенной дисциплине. Список дисциплин введен в программу в виде константы.

3. Естественно, имя и расположение файла можете поменять на свой вкус.

Программа:
Код:
const
 put = 'D:\students.txt';
 Sci:Array[1..5] of String=('Informatics','Chemistry','Mathematics',
                            'Physics','Physical Training');
type 
 ses=record
       fam:string;
       mark:Array [1..5] of Byte;
     end;
 St=Set of Byte;
var
 p: ses;
 m: Array[0..100] of ses;
 f: text;
 i,j,k,l,n,x: integer;

procedure app;
begin
 assign(f,put);
 reset(f);
 n:=1;
 repeat
  with m[n] do
   begin
    readln(f,fam);
    for i:=1 to 5 do
     readln(f,mark[i]);
   end;
  if not(EoF(f)) then Inc(n);
 until EoF(f);
 close(f);
end;

procedure prosm;
var Sred:real;
begin
 for i:=1 to n do
  with m[i] do
   begin
    Sred:=0;
    write(i:2,'. '+fam);
    for j:=length(fam) to 25 do write(' ');
    for j:=1 to 5 do
     begin
      write(mark[j]:4);
      Sred:=Sred+mark[j]/5;
     end;
    writeln(Sred:8:2);
   end;
 writeln;
end;

procedure stipendii;
var
 flag:boolean;
 Pov:St;
begin
 writeln('Familii na povishennuju stipendiju : ');
 k:=0;
 Pov:=[];
 for i:=1 to n do
  with m[i] do
   begin
    flag:=true;
    j:=0;
    repeat
     Inc(j);
     if mark[j]<5 then flag:=false;
    until not(flag) or (j=5);
    if flag then
     begin
      Inc(k);
      writeln(k:2,'. '+fam);
      Pov:=Pov+[i];
     end;
   end;
 writeln;
 writeln('Familii na obychnuju stipendiju : ');
 k:=0;
 for i:=1 to n do
  with m[i] do
   begin
    flag:=true;
    j:=0;
    repeat
     Inc(j);
     if mark[j]<4 then flag:=false;
    until not(flag) or (j=5);
    if flag and Not(i in Pov) then
     begin
      Inc(k);
      writeln(k:2,'. '+fam);
     end;
   end;
 writeln;
end;

procedure lobotrjasy;
begin
 for l:=1 to 5 do
  begin
   writeln(Sci[l]+':');
   k:=0;
   for i:=1 to n do
    with m[i] do
     if mark[l]=2 then
      begin
       Inc(k);
       writeln(k:2,'. '+fam);
      end;
   writeln;
  end;
 writeln;
end;

BEGIN
 app;
 repeat
  writeln('viberite punkt menu:');
  writeln('                   1 - svedenia o studentah');
  writeln('                   2 - stipendii');
  writeln('                   3 - spisok neuspevajushchih');
  writeln('                   4 - vyxod');
  readln(x);
  case x of
    1:prosm;
    2:stipendii;
    3:lobotrjasy;
  end;
 until x=4;
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 11.12.2011, 18:11   #5 (permalink)
Сабыржан
Новичок
 
Регистрация: 15.11.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

ОГРОМНЕЙШЕЕ СПАСИБО Vladimir_S! Я ВАМ БЕЗУМНО БЛАГОДАРЕН!!!!!
вы не представляете как вы меня выручаете.))))))
Сабыржан вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 11.12.2011, 18:12   #6 (permalink)
Сабыржан
Новичок
 
Регистрация: 15.11.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Свои ошибки понял...))))
Сабыржан вне форума   Ответить с цитированием
Старый 11.12.2011, 18:49   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Сабыржан Посмотреть сообщение
ОГРОМНЕЙШЕЕ СПАСИБО Vladimir_S! Я ВАМ БЕЗУМНО БЛАГОДАРЕН!!!!! вы не представляете как вы меня выручаете.))))))
Да ладно, чем можем...
Цитата:
Сообщение от Сабыржан Посмотреть сообщение
Свои ошибки понял...))))
Совсем хорошо!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 20:53.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.