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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2009, 07:53   #1
Defender42
Пользователь
 
Регистрация: 27.12.2008
Сообщений: 89
По умолчанию Ошибка в проге :(

Помогите найти ошибку в проге плиз , сегодня сдаю диплом а касяк остался. Прога не выводит балы и оценку.
КОД:
Код:
const
 nfile=4;//количество файлов с разными буквами

var
  Form4: TForm4;
  i:integer;//номер текущего вопроса
  word:string;//слово, букву в которое нужно вставить
  wordright:string;//правильный ответ на вопрос
  b:integer;//количество баллов, набранное участником
  price:integer;//стоимость одного правильного
                //ответа в баллах
  nA:integer;// количество слов c буквой А в файле
  nO:integer;// количество слов c буквой O в файле
  nU:integer;// количество слов c буквой И в файле
  nE:integer;// количество слов c буквой E в файле
  A,O,U,E:array of string;//массивы слов
  f1,f2,f3,f4:TextFile;//файловые переменные
  w:integer;
  wordp:string;//буква, введенная пользователем
  marks:integer;//оценка
implementation

uses Unit5;



{$R *.dfm}

procedure generate(var word:string;var wordright:string);
var
   nf,ns:integer;//номер файла и номер слова
begin
 nf:=random(nfile-1)+1;

 if nf=1
 then
 begin
  ns:=random(nA-1)+1;
  word:=A[ns];
  wordright:='а';
 end;

 if nf=2
 then
 begin
  ns:=random(nO-1)+1;
  word:=O[ns] ;
  wordright:='о';
 end;

 if nf=3
 then
 begin
  ns:=random(nU-1)+1;
  word:=U[ns];
  wordright:='и';
 end;

 if nf=4
 then
 begin
  ns:=random(nE-1)+1;
  word:=E[ns];
  wordright:='е';
 end;

end;

procedure TForm4.FormActivate(Sender: TObject);
var
   k:integer;
begin
 b:=0; //начальное количество баллов
 w:=1;
 AssignFile(number, 'num.txt');
 Reset(number);
 read(number,num);

 AssignFile(f1, 'А.txt');
 AssignFile(f2, 'О.txt');
 AssignFile(f3, 'И.txt');
 AssignFile(f4, 'Е.txt');

 Reset(f1);
 Reset(f2);
 Reset(f3);
 Reset(f4);

 //считаем количество слов в каждом файле
 read(f1,nA);
 read(f2,nO);
 read(f3,nU);
 read(f4,nE);

 setlength(A,nA+1);
 setlength(O,nO+1);
 setlength(U,nU+1);
 setlength(E,nE+1);

 //считываем слова
 readln(f1);
 readln(f2);
 readln(f3);
 readln(f4);

 for k:= 1 to nA do
 begin
  readln(f1,A[k]);
 end;

 for k:= 1 to nO do
 readln(f2,O[k]);

 for k:= 1 to nU do
 readln(f3,U[k]);

 for k:= 1 to nE do
 readln(f4,E[k]);

 label1.Caption:='Вопрос №'+ inttostr(w);
 generate(word,wordright);
 label2.caption:='Какая буква пишется в данном слове '+ word+'?';
 wordp:=form4.Edit1.Text;
 if wordp=wordright then  b:=b+1;

end;

procedure TForm4.Button1Click(Sender: TObject);
begin
  form4.edit1.text:=' ';
 if w<>num then
 begin
  w:=w+1;
  label1.Caption:='Вопрос №'+ inttostr(w);
  generate(word,wordright);
  label2.caption:='Какая буква пишется в данном слове '+ word+'?';
  wordp:=form4.Edit1.Text;
  if wordp=wordright  then  b:=b+1;
 end
 else
 begin
  form4.button1.Enabled:=false;
  form5.Show;
  if b>sc[1] then marks:=5;
  if (b>sc[2]) and (b<sc[1]) then marks:=4;
  if (b>sc[3]) and (b<sc[2]) and (b<sc[1]) then marks:=3;
  if (b<sc[3]) then marks:=2;
 end;


end;

end.
Заранее спасибо!

Последний раз редактировалось Stilet; 28.05.2009 в 08:36.
Defender42 вне форума Ответить с цитированием
Старый 28.05.2009, 09:09   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Прога не выводит балы и оценку.
э-э-э-э... А куда откуда и где она это делать по твоей задумке должна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.05.2009, 09:14   #3
Defender42
Пользователь
 
Регистрация: 27.12.2008
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
э-э-э-э... А куда откуда и где она это делать по твоей задумке должна?
выводить она будет на Form5
Код:
form5.Show;
  if b>sc[1] then marks:=5;
  if (b>sc[2]) and (b<sc[1]) then marks:=4;
  if (b>sc[3]) and (b<sc[2]) and (b<sc[1]) then marks:=3;
  if (b<sc[3]) then marks:=2;
 end;
Если в чем то я ошибся скажи плиз
Defender42 вне форума Ответить с цитированием
Старый 28.05.2009, 09:34   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
выводить она будет на Form5
Каким кодом??
Не вижу кода вывода куда-то.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.05.2009, 09:39   #5
Defender42
Пользователь
 
Регистрация: 27.12.2008
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Каким кодом??
Не вижу кода вывода куда-то.

Код:
form5.Label1.Caption:='Вы набрали  '+inttostr(b)+' баллов';
 form5.Label2.Caption:='Ваша оценка  '+inttostr(marks);
если не это то я не в недоразумение

смысл подсчитывание балов правильный?
Как я понял ты думаешь ошибка при выводе балов и оценки. Если выводить через showmessage все ровно пишет 0. Мне кажется ошибка при проверке правильного ответа с введеным в эдит, вот тока как ее исправить незнаю

Последний раз редактировалось Stilet; 28.05.2009 в 09:57.
Defender42 вне форума Ответить с цитированием
Старый 28.05.2009, 09:58   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
 form5.Label1.Caption:='Вы набрали  '+inttostr( Form4.b)+' баллов';
 form5.Label2.Caption:='Ваша оценка  '+inttostr( Form4.marks);
только переменки эти перенеси в раздел Public определения Tform4

Впрочем ты в Form5 можешь подключить в uses юнит формы 4, но боюсь что и там и там у тя одинаковые имена.
I'm learning to live...

Последний раз редактировалось Stilet; 28.05.2009 в 10:01.
Stilet вне форума Ответить с цитированием
Старый 28.05.2009, 10:07   #7
Defender42
Пользователь
 
Регистрация: 27.12.2008
Сообщений: 89
По умолчанию

Код:
public
   b:integer;//количество баллов, набранное участником
   marks:integer;//оценка

Код:
form5.Label1.Caption:='Вы набрали  '+inttostr(Form4.b)+' баллов';
 form5.Label2.Caption:='Ваша оценка  '+inttostr(Form4.marks);


Сделал как ты сказал но все ровно выводит 0




Код:
unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,unit1,unit2,unit3,unit4;
так и есть

Последний раз редактировалось Defender42; 28.05.2009 в 10:14.
Defender42 вне форума Ответить с цитированием
Старый 28.05.2009, 10:38   #8
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

так ты и без form можешь указывать переменные т.е. просто b и marks
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 28.05.2009, 10:41   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Сделал как ты сказал но все ровно выводит 0
Проверять нужно все. Перенеси form5.Show; за ИФы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.05.2009, 10:49   #10
VaBank
Пользователь
 
Аватар для VaBank
 
Регистрация: 26.05.2009
Сообщений: 26
По умолчанию

Так а где у тебя стоит код???
Код:
form5.Label1.Caption:='Вы набрали  '+inttostr(b)+' баллов';
form5.Label2.Caption:='Ваша оценка  '+inttostr(marks);
его надо либо на OnShow ставить формы 5, либо сюда:
Код:
form5.Show;
  if b>sc[1] then marks:=5;
  if (b>sc[2]) and (b<sc[1]) then marks:=4;
  if (b>sc[3]) and (b<sc[2]) and (b<sc[1]) then marks:=3;
  if (b<sc[3]) then marks:=2;
  form5.Label1.Caption:='Вы набрали  '+inttostr(b)+' баллов';
  form5.Label2.Caption:='Ваша оценка  '+inttostr(marks);
 end;
по идее все должно работать
VaBank вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Коментарии к проге на С для мк Raptor Помощь студентам 2 12.11.2008 00:41
музыка в проге beygul Помощь студентам 6 09.10.2008 13:27
Вопрос по проге Smorodinka Microsoft Office Excel 7 06.06.2008 23:10
Ошибка в проге Detrix Помощь студентам 1 12.03.2008 08:28
Исправление ошибок в проге Juhn Паскаль, Turbo Pascal, PascalABC.NET 11 16.01.2008 18:17