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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2009, 19:36   #1
HouK
Пользователь
 
Регистрация: 11.11.2009
Сообщений: 16
Вопрос Уравнение (pascal, Delphi)

Есть уравнение
y:=sqr(x)+a/(x-2)
к этому уравнению есть условия
1) a:=sqr(x)*x (решение идет по этому условию если x>=-2 и x<=0)
2) a:=-abs(x-1) (по этому x>=0 и x<=2)
3) a:=(x+5)/(x-3) (по этому x>2)
ко всему этому есть ограничения
1) x<>2
2) x<>3
3) x>=-2
Да в условии есть не соответствие как при х=2 может выполняться второе решение если уравнение не имеет смысла в данном случае, не знаю, но препод запретил менять уравнение.
Но проблема не в этом вроде бы все написал, но в конце есть проблема, не могу вывести отдельно сообщение об ошибке если не выполняются первые три ограничения.
Вот код программы.

Код:
uses
SysUtils,
Convector in '..\..\convector\Convector.pas'; (опережая вопросы это конвектор служит для руссификации слов)
var
a,x,y:real;
begin
Write(Rus('Введите x='));
Readln(x);
if (x<>2) and (x<>3) and (x>=-2) then
begin
if (x>=-2) and (x<=0) then
Writeln(Rus('Решение идет по первой ветке'));
a:=sqr(x)*x;
Write('a=');
Writeln(a:5:2);
end;
begin
if (x>=0) and (x<=2) then
Writeln(Rus('Решение идет по второй ветке'));
a:=-abs(x-1);
Write('a=');
Writeln(a:5:2);
end;
begin
if (x>2) then
Writeln(Rus('Решение идет по третьей ветке'));
a:=(x+5)/(x-3);
Write('a=');
Writeln(a:5:2);
end;
begin
y:=sqr(x)+a/(x-2);
Write('y=');
Writeln(y:5:2);
end
else
Writeln(Rus('Введеные данные не соответствуют условию задачи'));
readln;
end.
Ошибка выдаеться на else ('end' expected but 'else' found)
Помогите разобраться пожалуйста.

Последний раз редактировалось HouK; 11.11.2009 в 20:16.
HouK вне форума Ответить с цитированием
Старый 11.11.2009, 19:42   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Цитата:
end;
begin
а зачем вы после каждого end begin пишите???
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 11.11.2009, 19:47   #3
HouK
Пользователь
 
Регистрация: 11.11.2009
Сообщений: 16
По умолчанию

я каждую ветвь решения заключил в begin end чтобы после if было возможным вписать несколько операторов. Вывод результата промежуточного решения, и вывод номера ветки по которой идет решение.
Пробывал ставить сначало
if условие then
begin
.....
end
но в конце опять ругаеться на else

Последний раз редактировалось HouK; 11.11.2009 в 19:52.
HouK вне форума Ответить с цитированием
Старый 11.11.2009, 19:52   #4
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
var
a,x,y:real;
begin
Write(Rus('Введите x='));
Readln(x);
if (x<>2) and (x<>3) and (x>=-2) then
begin
if (x>=-2) and (x<=0) then begin
Writeln(Rus('Решение идет по первой ветке'));
a:=sqr(x)*x;
Write('a=');
Writeln(a:5:2);
end else
if (x>=0) and (x<=2) then begin
Writeln(Rus('Решение идет по второй ветке'));
a:=-abs(x-1);
Write('a=');
Writeln(a:5:2);
end else
if (x>2) then begin
Writeln(Rus('Решение идет по третьей ветке'));
a:=(x+5)/(x-3);
Write('a=');
Writeln(a:5:2);
end;
y:=sqr(x)+a/(x-2);
Write('y=');
Writeln(y:5:2);
end
else
Writeln(Rus('Введеные данные не соответствуют условию задачи'));
readln;
end.
запусти-ка вот это
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 11.11.2009 в 19:57. Причина: поправила ---все работает
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 11.11.2009, 20:01   #5
HouK
Пользователь
 
Регистрация: 11.11.2009
Сообщений: 16
По умолчанию

В таком варианте пишет ошибку на тот же else только теперь требует чтобы на end была точка, покрайне мере ошибку я так понял
'.' expected but 'else' found
HouK вне форума Ответить с цитированием
Старый 11.11.2009, 20:34   #6
HouK
Пользователь
 
Регистрация: 11.11.2009
Сообщений: 16
По умолчанию

Сделал чтобы конечное уравнение выполнялось только если изначальное условие соотвествует ограничениям, надеюсь правильно, но программа теперь работает.

Код:
uses
  SysUtils,
  Convector in '..\..\convector\Convector.pas';
var
  a,x,y:real;
begin
  Write(Rus('Введите x='));
  Readln(x);
  if (x<>2) and (x<>3) and (x>=-2) then
    if (x>=-2) and (x<=0) then
      begin
        Writeln(Rus('Решение идет по первой ветке'));
        a:=sqr(x)*x;
        Write('a=');
        Writeln(a:5:2);
      end;
    if (x>=0) and (x<2) then
      begin
        Writeln(Rus('Решение идет по второй ветке'));
        a:=-abs(x-1);
        Write('a=');
        Writeln(a:5:2);
      end;
    if (x>2) and (x<>3) then
      begin
        Writeln(Rus('Решение идет по третьей ветке'));
        a:=(x+5)/(x-3);
        Write('a=');
        Writeln(a:5:2);
      end;
  if (x<>2) and (x<>3) and (x>=-2) then
    begin
      y:=sqr(x)+a/(x-2);
      Write('y=');
      Writeln(y:5:2);
      end
    else
  Writeln(Rus('Введеные данные не соответствуют условию задачи'));
  readln;
end.
Спасибо за помощь

Последний раз редактировалось HouK; 11.11.2009 в 20:38. Причина: Подправил код чтобы был окончательно работосопосбным
HouK вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Квадратное уравнение!!! java_java_java Общие вопросы по Java, Java SE, Kotlin 31 15.10.2009 18:05
уравнение A*X=B CyberOrcX Помощь студентам 4 14.10.2009 16:12
Уравнение суммы Slash3 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 13 05.07.2009 12:13
Уравнение Paul_AG Общие вопросы C/C++ 19 10.05.2009 22:50
! УРАВНЕНИЕ С МАТРИЦАМИ ! KulOle Паскаль, Turbo Pascal, PascalABC.NET 2 19.10.2008 12:53