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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2010, 19:28   #1
Kiber3D
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 15
Вопрос возврат к началу

Как выполнить вот эти действия - если написал "1", то выход из программы, а если "2", то возврат к началу, и еще, как скопировать текст из паскаля, чтобы не переписывать всё:
var
a,b,c,x1,x2,d,y:real;
begin
write('A=');
read(a);
write('B=');
read(b);
write('C=');
read(c);
d:=b*b-4*a*c;
x1:=(-b+sqrt(d))/2*a;
x2:=(-b-sqrt(d))/2*a;
writeln('X1=',x1);
writeln('X2=',x2);
writeln('Задача решена? Если да, то напишите "1", иначе "2");
read(y);
if y:=1
then
end
else... а дальше не знаю

Заранее спасибо.
Kiber3D вне форума Ответить с цитированием
Старый 18.05.2010, 21:07   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

например, так:
Код:
var
  a, b, c, x1, x2, d : real;
  y : integer;
begin
  repeat
    write('A=');
    read(a);
    write('B=');
    read(b);
    write('C=');
    read(c);
    d := b * b - 4 * a * c;
    x1 := (-b + sqrt(d)) / 2 * a;
    x2 := (-b - sqrt(d)) / 2 * a;
    writeln('X1=', x1);
    writeln('X2=', x2);
    writeln('Задача решена? Если да, то напишите "1", иначе "2");
    read(y);
  until (y=1);
end.
Цитата:
и еще, как скопировать текст из паскаля, чтобы не переписывать всё
открываете Ваш файл (расширение .PAS) в любом редакторе (хоть тот же Блокнот / notepad), хоть в Far Commder / Total Commander - выделить текст, скопировать. вставить в окошко браузера...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.05.2010, 21:25   #3
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

Можно использовать метку, например Label_1.

var
a,b,c,x1,x2,d,y:real;

Label
Label_1;

begin

Label_1:

write('A=');
read(a);
write('B=');
read(b);
write('C=');
read(c);
d:=b*b-4*a*c;
x1:=(-b+sqrt(d))/2*a;
x2:=(-b-sqrt(d))/2*a;
writeln('X1=',x1);
writeln('X2=',x2);
writeln('Задача решена? Если да, то напишите "1", иначе "2");
read(y);

if y <> 2 then goto Label_1;

end
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 18.05.2010, 21:27   #4
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Работа с метками это правила плохого тона программирования.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 18.05.2010, 21:36   #5
Kiber3D
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 15
По умолчанию

опачки, спасибо большое, все работает
Kiber3D вне форума Ответить с цитированием
Старый 18.05.2010, 21:38   #6
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Всё будет работь только при условии что B>a и больше с.Вбей 1 2 3.И будет ошибка.Если я неошибаюсь.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 18.05.2010, 22:37   #7
Kiber3D
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 15
По умолчанию

Блин, еще одна проблема:
var
a,b,c,x1,x2,d:real;
y:integer;
begin
repeat
write('A=');
read(a);
write('B=');
read(b);
write('C=');
read(c);
D:=b*b-4*a*c;
x1:=(-b+sqrt(d))/2*a;
x2:=(-b-sqrt(d))/2*a;
writeln('X1=',x1);
writeln('X2=',x2);
writeln('Задача решена? Если да, то напишите "1", иначе "2"');
read(y);
until(y=1);
end.
Маленько переделал прогу, все возвращается, но почему то ответ неправильный, если подсчитать просто математическим способом, то, например при a=5; b=9; c=-2 должны получиться корни x1=0,2; x2=-2, но в проге получается x1=5; x2=-50, что тут еще может быть не так? Я думаю, что-то с формулой не то, но она должна быть правильная - это формула квадратного уравнения, помогите, кто хорошо знает алгебру
Kiber3D вне форума Ответить с цитированием
Старый 18.05.2010, 22:38   #8
Kiber3D
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 15
По умолчанию

Цитата:
Сообщение от ROMA2PVT Посмотреть сообщение
Всё будет работь только при условии что B>a и больше с.Вбей 1 2 3.И будет ошибка.Если я неошибаюсь.
да, точно
Kiber3D вне форума Ответить с цитированием
Старый 18.05.2010, 22:39   #9
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

потому что корень из отрицательного числа.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 18.05.2010, 22:50   #10
Kiber3D
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 15
По умолчанию

Цитата:
Сообщение от ROMA2PVT Посмотреть сообщение
потому что корень из отрицательного числа.
разве? у меня d получилось равным 121, а корень тогда получается 11.
Ну если я правильно написал конечно... корень вроде будет sqrt, ну, вот я и написал sqrt(d)... а разве он мне не выдаст ошибку, если под корнем будет отрицательное число?
Kiber3D вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа, которая изображает рассвет в лесу,(отразить переход от ночного времени к началу дня) Серый777 Паскаль, Turbo Pascal, PascalABC.NET 2 03.05.2010 18:24
Сформировать новый список, в котором элементы следуют от конца к началу Ma666oT Помощь студентам 7 02.04.2010 00:15
подскажите какой компилятор и язык выбрать чтоб по началу не было проблем с библиотеками и учебниками? TDrive Общие вопросы C/C++ 5 03.08.2009 15:27
Определить какая из точек находится ближе к началу координат(алгоритм ветвления). Rakfeller Паскаль, Turbo Pascal, PascalABC.NET 16 25.01.2009 02:01
начало второй нарисованной линии должно передвинутся к началу первой. Delphi maddamo4ka Помощь студентам 7 08.12.2008 19:19