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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2009, 17:24   #1
pionerka
Пользователь
 
Аватар для pionerka
 
Регистрация: 16.09.2009
Сообщений: 35
Вопрос Записи в Делфи.Пожалуйста,помогите дорешить задачу

Исходная задача
Код:
program Project4;
uses
  SysUtils;
type
  itog_sem=record
  kol:integer;
  ball:real;
  end;
  type
  fak=record
  fam:string;
  sem:integer;
  ball:real;
  end;
  var   a:array[1..100] of fak;
   b:array[1..100] of itog_sem;
  s:string;
  i,j,k,l,n,m,t,code:integer;
  x:real;
begin
for i:=1 to 4 do begin
b[i].kol:=0; b[i].ball:=0;
end;
  writeln('кол во студентов');
  readln(n);
  {вводим текст и режем его на части и расталкиваем в 2 массива}
   {в массиве b накапливаем итоги по каждому семестру}
  for i:=1 to n do begin
  readln(s);
  k:=pos(' ',s);
  a[i].fam:=copy( s,1,k-1);
  delete(s,1,k);
 val(s, m,code) ;
    a[i].sem:= m;
    b[m].kol:=b[m].kol+1;
    delete(s,1,2);
    val(s, x,code) ;
    b[m].ball:=b[m].ball+x;
    a[i].ball:=x;
   end;
    {в массиве b итоги по каждому семестру и находим средний балл за семестр}
   writeln(' семестр   балл');
  for i:=1 to 4 do
  if  b[i].kol>0 then begin
x:=b[i].ball/b[i].kol;writeln(i:4,x:12:2)  end;
{сортировка фам по алфавиту}
for i:=1 to n-1 do
     for j:=i+1 to n do
      if  a[i].fam> a[j].fam then begin s:=a[i].fam;a[i].fam:= a[j].fam; a[j].fam:=s;end;
{ при совпадении фамилий у 2 соседнихэлементов массива суммируем баллы и количество}
 k:=1;x:=a[1].ball;  l:=0;
  writeln(' ФИО      балл');
 for i:=2 to n do
if  (a[i].fam<>a[i-1].fam)  then
begin
            x:=x/k; writeln( a[i-1].fam,x:12:2);   {среднее по  фам }
            if x<3.5 then l:=l+1;
          x:=a[i].ball;k:=1;
end
else  begin  x:=a[i].ball+x;k:=k+1;  end;
 x:=x/k; writeln( a[n].fam,x:12:2);   { для последнего по алфавиту студента вычисляем средний балл}
 if x<3.5 then l:=l+1;
writeln('плохо учатся ',l);
readln;
end.
Эту задачу записала в файл
Код:
program students;
uses
  SysUtils;
type
itog_sem=record
  kol:integer;
  ball:real;
  end;
  type
  fak=record
  fam:string;
  sem:integer;
  ball:real;
end;
var
   a:array[1..100] of fak;
   b:array[1..100] of itog_sem;
  s:string;
  i,j,k,l,n,m,t,code:integer;
  x:real;
  f:textfile;
   label 1;
   label 2;
   label 3;
   label 4;
   label 5;
   label 6;
begin
6: writeln('1 - sohranit. ');
   writeln('2 - vyvod itogov.');
   writeln('3 - dobavit familyi.');
   writeln('4 - ploxo ucatca');
   writeln('5 - vyhod.');
   readln(k);
   if k=1 then goto 1;
   if k=2 then goto 2;
   if k=3 then goto 3;
   if k=4 then goto 4;
   if k=5 then goto 5;
1:   assignfile(f,'D:\Project4.txt');
 rewrite(f);
begin
for i:=1 to 4 do begin
b[i].kol:=0; b[i].ball:=0;
end;
  writeln('kol students');
  readln(n);
  for i:=1 to n do begin
  readln(s);
  k:=pos(' ',s);
  a[i].fam:=copy( s,1,k-1);
  delete(s,1,k);
 val(s, m,code) ;
    a[i].sem:= m;
    b[m].kol:=b[m].kol+1;
    delete(s,1,2);
    val(s, x,code) ;
    b[m].ball:=b[m].ball+x;
    a[i].ball:=x;
   end;
   write(f);
   close(f);
   readln;
   Goto 6;
   //откр для чтения
2: reset(f);
   writeln;
    writeln(' sem   ball');
  for i:=1 to 4 do
  if  b[i].kol>0 then begin
x:=b[i].ball/b[i].kol;writeln(i:4,x:12:2)  end;
   write(f);
   close(f);
   readln;
   Goto 6;
    //дозапись в файл
3: append(f);
     writeln('dobavlenie');
     writeln('kol students ');
     readln(n);
  for i:=1 to n do begin
  readln(s);
  k:=pos(' ',s);
  a[i].fam:=copy( s,1,k-1);
  delete(s,1,k);
 val(s, m,code) ;
    a[i].sem:= m;
    b[m].kol:=b[m].kol+1;
    delete(s,1,2);
    val(s, x,code) ;
    b[m].ball:=b[m].ball+x;
    a[i].ball:=x;
   end;
   end;
   write(f);
   closefile(f);
   Goto 6;

4:  reset(f);
for i:=1 to n-1 do
     for j:=i+1 to n do
      if  a[i].fam> a[j].fam then begin 
s:=a[i].fam;a[i].fam:= a[j].fam; a[j].fam:=s;end;
 k:=1;x:=a[1].ball;  l:=0;
  writeln(' FIO      ball');
 for i:=2 to n do
if  (a[i].fam<>a[i-1].fam)  then
begin
            x:=x/k; writeln( a[i-1].fam,x:12:2);   
            if x<3.5 then l:=l+1;
          x:=a[i].ball;k:=1;
end
else  begin  x:=a[i].ball+x;k:=k+1;  end;
 x:=x/k; writeln( a[n].fam,x:12:2);   
 if x<3.5 then l:=l+1;
writeln('bad learn ',l);
write(f);
   closefile(f);
   Goto 6;

5:
   readln;
end.
Вопрос!!!!Как сделать так,что бы он мне выводил студентов которые плохо учатся и после добавления???
Т.е.Когда я нажимаю меню Добавление и добавляю нового студента с баллом 2.Потом нажимаю меню Плохо учатся,он мне должен выводить студентов,которых я добавила ранее и студентов,которых я добавила потом.Как это надо сделать?Заранее спасибо.
тяжела и неказиста жизнь простого программиста

Последний раз редактировалось pionerka; 10.12.2009 в 17:42.
pionerka вне форума Ответить с цитированием
Старый 10.12.2009, 20:20   #2
ManU
Пользователь Подтвердите свой е-майл
 
Аватар для ManU
 
Регистрация: 30.04.2008
Сообщений: 78
По умолчанию

Код:
.3: append(f);
     writeln('dobavlenie');
     writeln('kol students ');
     readln(n);
  for i:=1 to n do begin
  readln(s);
  k:=pos(' ',s);
  a[i].fam:=copy( s,1,k-1);
  delete(s,1,k);
 val(s, m,code) ;
    a[i].sem:= m;
    b[m].kol:=b[m].kol+1;
    delete(s,1,2);
    val(s, x,code) ;
    b[m].ball:=b[m].ball+x;
    a[i].ball:=x;
   end;
   end;
   write(f);//если это запись в файл то должно быть
//write(f,<переменная>);
//то же самое в остальных случаях
//то же самое с чтением из файла
   closefile(f);
   Goto 6;

Последний раз редактировалось ManU; 10.12.2009 в 20:25.
ManU вне форума Ответить с цитированием
Старый 11.12.2009, 13:43   #3
pionerka
Пользователь
 
Аватар для pionerka
 
Регистрация: 16.09.2009
Сообщений: 35
По умолчанию

а какая переменная??И в остальных случаях,это во всех остальных метках??
тяжела и неказиста жизнь простого программиста
pionerka вне форума Ответить с цитированием
Старый 12.12.2009, 23:23   #4
pionerka
Пользователь
 
Аватар для pionerka
 
Регистрация: 16.09.2009
Сообщений: 35
По умолчанию

никто не знает?
тяжела и неказиста жизнь простого программиста
pionerka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
НАРОД ПОМОГИТЕ С ЗАДАЧЕЙ (В ДЕЛФИ ! ) MaxFreeZz Помощь студентам 5 06.06.2009 11:14
Помогите с задачей простенькой. Делфи. svobodys Помощь студентам 7 29.03.2009 21:11
Помогите с задачей на Делфи! f1n!Sh Помощь студентам 8 02.05.2008 18:28