Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с курсовой.Не могу исправить пару косяков 
:(
    Опции темы
Liver
Дата 22.5.2009, 03:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.12.2008

Репутация: нет
Всего: нет



Задание:
Создать типизированный файл, записать туда 20 нужных записей. Составить программу назначения стипендии студентам по результатам сессии,используя следующие правила:
*если все оценки - 5,назначается повышенная стипендия;
*если все оценки - 4 и 5,назначается обычная стипендия;
*если есть оценка 3,стипендия не назначается.
В результате работы программы должен быть напечатан список группы с оценками и средними баллами каждого студента и два списка фамилий(назначенных на повышенную и на обычную стипендию).


Вот что я сделал:
Код

type ses=record
fam:string[25];
z1,z2,z3,z4,z5:integer;
end;

var p:ses;
f:file of ses;
x:integer;
st:string[1];

procedure vv(var z:ses);
begin
writeln('vvedite familiy');readln(z.fam);
if z.fam<>'' then begin
writeln('vvedite ocenky 1-go ekzamena'); readln(z.z1);
writeln('vvedite ocenky 2-go ekzamena'); readln(z.z2);
writeln('vvedite ocenky 3-go ekzamena'); readln(z.z3);
writeln('vvedite ocenky 4-go ekzamena'); readln(z.z4);
writeln('vvedite ocenky 5-go ekzamena'); readln(z.z5);
end; end;
procedure sozd;
begin
rewrite(f);
close(f);
end;
procedure app;
var z:ses; n:longint;
begin
reset(f);
n:=filesize(f);
seek(f,n);
repeat
writeln('Vvedi fam');
readln(p.fam);
writeln('Vvedi ocenky1');
readln(p.z1);
writeln('Vvedi ocenky2');
readln(p.z2);
writeln('Vvedi ocenky3');
readln(p.z3);
writeln('Vvedi ocenky4');
readln(p.z4);
writeln('Vvedi ocenky5');
readln(p.z5);
write(f,p);
writeln('Prodolgit y/n?');
readln(st);
until st='n';
close(f);
end;
procedure prosm;
var z:ses; sr:real;
begin
reset(f);
writeln('familia':25,'1-i pr':7,'2-i pr':7,'3-i pr':7,'4-i pr':7,
'5-i pr':7,'sredn bal':10);
while not eof(f) do begin
read(f,p);
sr:=(p.z1+p.z2+p.z3+p.z4+p.z5)/5;
writeln(p.fam:25,p.z1:7,p.z2:7,p.z3 :7,p.z4:7,p.z5:7,sr:10:2);
end;
close(f);
end;
procedure stipendii;
begin
reset(f);
seek(f,0);
writeln('familii na povisennyu stipendiu');
while not eof(f) do begin
read(f,p);
if (p.z1=5) and (p.z2=5) and (p.z3=5) and (p.z4=5) and (p.z5=5)
then writeln(p.fam);
end;
seek(f,0);
writeln('familii na obicnyy stipendiu');
while not eof(f) do begin
read(f,p);
if (p.z1>=4) and (p.z2>=4) and (p.z3>=4) and (p.z4>=4) and (p.z5>=4)
then writeln(p.fam);
end;
seek(f,0);
writeln('Stipendia ne naznachaetsa');
while not eof(f) do begin
read(f,p);
if (p.z1<=3) and (p.z2<=3)and (p.z3<=3) and (p.z4<=3)and (p.z5<=3)
then writeln(p.fam);
end;
close(f);
end;


//-----------------------------------------------------------------------

begin
assign(f,'sessia.dot');
repeat
writeln('viberite nujnii punkt menu');
writeln('1-cozdanie faila');
writeln('2-popolnenie faila');
writeln('3-svedenia o vsex');
writeln('4 stipendii');
writeln('5- vixod');
readln(x);
case x of
1:sozd;
2:app;
3rosm;
4:stipendii;
end;
until x=5;
end.


Но когда я делаю запрос на стипендию, то он людей с повышенной стипендией заносит и на повышенную и на обычную. Если вводишь все оценки 3 то он выдает человека у которого не будет стипендии, НО если вводишь одну или несколько оценок 3 ,а остальные вводишь 4 или 5 то он этого человека вообще ни к какой группе не относит. 

Это сообщение отредактировал(а) Rrader - 22.5.2009, 08:06
PM MAIL   Вверх
Sanek123
Дата 22.5.2009, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 22.10.2008

Репутация: нет
Всего: нет



Я бы сделал так:
Код

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type ses=record
fam:string[25];
z1,z2,z3,z4,z5:integer;
end;

var p:ses;
f:file of ses;
x:integer;
st:string[1];

{procedure vv(var z:ses);
begin
writeln('vvedite familii:');readln(z.fam);
if z.fam<>'' then begin
writeln('vvedite ocenky 1-go ekzamena'); readln(z.z1);
writeln('vvedite ocenky 2-go ekzamena'); readln(z.z2);
writeln('vvedite ocenky 3-go ekzamena'); readln(z.z3);
writeln('vvedite ocenky 4-go ekzamena'); readln(z.z4);
writeln('vvedite ocenky 5-go ekzamena'); readln(z.z5);
end; end; }

procedure sozd;
begin
rewrite(f);
close(f);
end;

procedure ocenka1();
begin
writeln('‚ўҐ¤ЁвҐ 1-о ®жҐ­Єг :');readln(p.z1);
if ((p.z1<6) and (p.z1>2)) then
begin
Exit;
end
else
begin
ocenka1;
end;
end;

procedure ocenka2();
begin
writeln('‚ўҐ¤ЁвҐ 2-о ®жҐ­Єг :');readln(p.z2);
if ((p.z2<6) and (p.z2>2)) then
begin
Exit;
end
else
begin
ocenka2;
end;
end;

procedure ocenka3();
begin
writeln('‚ўҐ¤ЁвҐ 3-о ®жҐ­Єг :');readln(p.z3);
if ((p.z3<6) and (p.z3>2)) then
begin
Exit;
end
else
begin
ocenka3;
end;
end;


procedure ocenka4();
begin
writeln('‚ўҐ¤ЁвҐ 4-о ®жҐ­Єг :');readln(p.z4);
if ((p.z4<6) and (p.z4>2)) then
begin
Exit;
end
else
begin
ocenka4;
end;
end;

procedure ocenka5();
begin
writeln('‚ўҐ¤ЁвҐ 5-о ®жҐ­Єг :');readln(p.z5);
if ((p.z5<6) and (p.z5>2)) then
begin
Exit;
end
else
begin
ocenka5;
end;
end;

procedure app;
var z:ses; n:longint;
begin
reset(f);
n:=filesize(f);
seek(f,n);
repeat
writeln('‚ўҐ¤ЁвҐ д ¬Ё«Ёо :');
readln(p.fam);
ocenka1;
ocenka2;
ocenka3;
ocenka4;
ocenka5;
write(f,p);
writeln('Џа®¤®«¦Ёвм „ /ЌҐв? : [Y/N]');
readln(st);
until st='n';
close(f);
end;
procedure prosm;
var z:ses; sr:real;
begin
reset(f);
writeln('” ¬Ё«Ёп ':25,'1-i pr':7,'2-i pr':7,'3-i pr':7,'4-i pr':7,
'5-i pr':7,'б।­Ё© Ў «':10);
while not eof(f) do begin
read(f,p);
sr:=(p.z1+p.z2+p.z3+p.z4+p.z5)/5;
writeln(p.fam:25,p.z1:7,p.z2:7,p.z3 :7,p.z4:7,p.z5:7,sr:10:2);
end;
close(f);
end;

procedure stipendii;
begin
reset(f);
seek(f,0);
writeln('” ¬Ё«ЁЁ ­  Ї®«г祭ЁҐ бвЁЇҐ­¤ЁЁ :');
while not eof(f) do begin
read(f,p);
if (p.z1=5) and (p.z2=5) and (p.z3=5) and (p.z4=5) and (p.z5=5)
then writeln(p.fam);
end;
seek(f,0);
writeln('” ¬Ё«ЁЁ ­  ®Ўйго бвЁЇҐ­¤Ёо :');
while not eof(f) do begin
read(f,p);
if
  ((p.z1 =4) and (p.z2>=4) and (p.z3>=4) and (p.z4>=4) and (p.z5>=4)) or
  ((p.z1>=4) and (p.z2 =4) and (p.z3>=4) and (p.z4>=4) and (p.z5>=4)) or
  ((p.z1>=4) and (p.z2>=4) and (p.z3 =4) and (p.z4>=4) and (p.z5>=4)) or
  ((p.z1>=4) and (p.z2>=4) and (p.z3>=4) and (p.z4 =4) and (p.z5>=4)) or
  ((p.z1>=4) and (p.z2>=4) and (p.z3>=4) and (p.z4>=4) and (p.z5 =4))
then writeln(p.fam);
end;
seek(f,0);
writeln('‘вЁЇҐ­¤Ёп ­Ґ ­ §­ з Ґвбп :');
while not eof(f) do begin
read(f,p);
if
  ((p.z1 =3) or (p.z2=3) or (p.z3=3) or (p.z4=3)or (p.z5=3))
then writeln(p.fam);
end;
close(f);
end;


//-----------------------------------------------------------------------

begin
assign(f,'sessia.dat');
repeat
writeln('‚лЎҐаЁвҐ Їг­Єв ¬Ґ­о:');
writeln('1 : ‘®§¤ ­ЁҐ д ©«  :');
writeln('2 : „®Ї®«­Ґ­ЁҐ д ©«:');
writeln('3 : ЋЎйЁҐ ᢥ¤Ґ­Ёп :');
writeln('4 : ‘вЁЇҐ­¤ЁЁ      :');
writeln('5 : ‚л室          :');
readln(x);
case x of
1:sozd;
2:app;
3:prosm;
4:stipendii;
end;
until x=5;
end.

Хотя, надо еще много чего подправлять! 
1. Если файл уже создан - то во второй раз этого пункта в меню быть не должно
2. Было бы неплохо очищать экран после операций
3. Переход Да/Нет должен осуществлятся сразу по нажатии N а не по N->Enter

ЗЫ: Я вот только не понял к чему утебя процедура ввода VV();, Если ты ее нигде не применяешь? 
А в остальном клево! хотя было еще пару косячков... забыл где...
Да кстати за караказябру особо не ругай! Просто неудобно мне руссому читать транслит! А если текст писать сразу в DOS'овской кодировке - то конечному пользователю будет приятно юзать твою прогу.

Это сообщение отредактировал(а) Sanek123 - 22.5.2009, 08:13
--------------------
Вас разыскивают бойцы 139-го порта...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0450 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.