Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


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

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2007, 23:14   #1
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию Помогите исправить обработчик!

Написал небольшой обработчик, решающий следующую задачу:
Вводятся начальный член и шаг арифметической прогрессии. Вводится также число. Определить, принадлежит ли введенное число арифметической прогрессии с введенными начальным членом и шагом.
Вот сам обработчик:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var ch,sh,n:integer;
begin
ch:=StrToInt(Edit1.Text);
sh:=StrToInt(Edit2.Text);
n:=StrToInt(Edit3.Text);
while ch>=n do //Входим в цикл когда нач.член больше либо равен числу!
if ch=n then
Label1.Caption:=('Undoubtedly!') //Понятное дело, - является!
else begin
  ch:=ch+sh; //Если нет, - то прибавляем шаг ариф.прогресии!
end;
if ch>n then
Label1.Caption:=('No!') //Перешагнули число, - значит число не из прогресии!
else
Label1.Caption:=('Yes!'); //Число является числом из прогресии!
end;
Но обработчик содержит ошибки, и не способен решать выше изложеную задачу!
Помогите пожалуйста его исправить!
end;
end.

Mr.User вне форума Ответить с цитированием
Старый 29.11.2007, 23:30   #2
Abbatik
Форумчанин
 
Аватар для Abbatik
 
Регистрация: 11.11.2007
Сообщений: 136
По умолчанию

Попробуй так!
Код:
procedure TForm1.Button1Click(Sender: TObject);   
var ch,sh,n:integer;
label 1;   
begin  
ch:=StrToInt(Edit1.Text);   
sh:=StrToInt(Edit2.Text);   
n:=StrToInt(Edit3.Text);   
while ch<=n do begin //Входим в цикл когда нач.член меньше либо равен числу!   
if ch=n then  begin
Label1.Caption:=('Undoubtedly!'); goto 1; end; //Понятное дело, - является!   
else begin  
  ch:=ch+sh; //Если нет, - то прибавляем шаг ариф.прогресии!   
end;   
end;
if ch>n then  
Label1.Caption:=('No!') //Перешагнули число, - значит число не из прогресии!   
else  
Label1.Caption:=('Yes!'); //Число является числом из прогресии!   
1:
end;
ICQ - 446037211
Abbatik вне форума Ответить с цитированием
Старый 30.11.2007, 00:17   #3
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию

Программа не запускается!
Подчёркивается строка else begin и появляется сообщение:
[Pascal Error] Unit1.pas(40): E2153 ';' not allowed before 'ELSE'
end;
end.

Mr.User вне форума Ответить с цитированием
Старый 30.11.2007, 00:53   #4
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Кусочек кода в котором ошибка.
Код:
Label1.Caption:=('Undoubtedly!'); goto 1; end; //Понятное дело, - является!      
else begin
Перед ELSE нельзя ставить ; . Что сообственно и указанно в ошибке.

Попробуй сам.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 30.11.2007, 01:22   #5
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию

Я уберал запятые и т.д., - но ничего не помогает!
И не факт, что программа с данными изменениями будет работать как надо!
end;
end.

Mr.User вне форума Ответить с цитированием
Старый 30.11.2007, 02:05   #6
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Код:
Label1.Caption:=('Undoubtedly!'); goto 1; end //Понятное дело, - является!         
else begin
Вод я убрал где надо. Какие ещё ошибки появились?... исходник скинь...
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 30.11.2007, 03:32   #7
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию

Извиняюсь, - не ту точку с запятой убирал!
Спасибо за помощь! Программа работает! (Правда она в место ответа "Yes" выдает всегда "undoubtedly", а "Yes" вообще не используется! Но это мелочи жизни!
end;
end.

Mr.User вне форума Ответить с цитированием
Старый 30.11.2007, 07:25   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Подправил немного твой код, чтобы все у тебя работало.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var ch,sh,n:integer;
begin  
  ch:=StrToInt(Edit1.Text);
  sh:=StrToInt(Edit2.Text);   
  n:=StrToInt(Edit3.Text);
  if n>ch then 
     begin 
       Label1.Caption:=('Incorrect value n!');
       exit;
     end;
  if n=ch then 
    begin 
      Label1.Caption:=('Undoubtedly!');
      exit;
    end;
  while n<ch do 
    begin //Входим в цикл когда нач.член меньше либо равен числу!
       n:=n+sh; //Если нет, - то прибавляем шаг ариф.прогресии!
    end;
if n=ch then
Label1.Caption:=('Yes!') //Число является числом из прогресии!
else
Label1.Caption:=('No!'); //Перешагнули число, - значит число не из прогресии!
end;
end.
puporev вне форума Ответить с цитированием
Старый 01.12.2007, 02:55   #9
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
Хорошо

Цитата:
Сообщение от puporev Посмотреть сообщение
Подправил немного твой код, чтобы все у тебя работало.
Большое СПАСИБО! Так намного лучше!
Нашёл три ошибочки! Исправил! Если интерестно, - то вот:
if n<ch then
begin //Число не может быть меньше чем начальный член!
while n>ch do
begin //Входим в цикл когда начальный член меньше числа!
ch:=ch+sh; //Прибавляем шаг арифметической прогрессии к начальному члену!
end;
end.


Последний раз редактировалось Mr.User; 01.12.2007 в 04:05.
Mr.User вне форума Ответить с цитированием
Старый 05.12.2007, 21:08   #10
Abbatik
Форумчанин
 
Аватар для Abbatik
 
Регистрация: 11.11.2007
Сообщений: 136
По умолчанию

убери ";" перед else
ICQ - 446037211
Abbatik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме 20000 рублей в месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить код Tanuska___:) БД в Delphi 4 07.08.2008 16:40
Помогите исправить L_M Помощь студентам 3 08.06.2008 00:06
Помогите исправить NeiL Общие вопросы C/C++ 1 31.05.2008 12:31
Помогите исправить код student_63 Помощь студентам 5 13.12.2007 18:20


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS