Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 20.10.2012, 15:47   #1 (permalink)
andrew1701
Member
 
Регистрация: 07.03.2012
Сообщений: 83
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Задача с if

вот вообщем задача
написать программу, решающую задачуЖ даны целые числа a,b. Найти
y= sqrt(-a)/min(a,b)
в результате вывести: 1) нет корня, 2) нет дроби, 3) y=..
Программа работает на выявление ошибок, при вводе правильных чисел, компилятор не ругается, и выкидывает в код___ и еще когда ошибка выводится "y", знаю как заменить, есть ли способ по проще?

program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var a,b:integer;
y : real;
begin
read(a,b);
y:=123; {для проверки при ошибках}
if a>0 then writeln('xer 1') { ошибка 1}
else
if (a=0) or (b=0) then writeln('xer 2') {ошибка 2}
else
if a<b then y:=sqrt((-a)/a)
else
y:=sqrt((-a)/b);
writeln(y:3:3);{ я так понимаю нужно добавить в begin к then и else?}
readln;
end.

Последний раз редактировалось andrew1701; 20.10.2012 в 15:52
andrew1701 вне форума   Ответить с цитированием

Старый 20.10.2012, 15:47
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

На форуме можно найти похожие топики, помогу вам в этом

Задача C++
Задача на C#
Задача по С + +
Задача по С++
Задача

Старый 20.10.2012, 16:00   #2 (permalink)
andrew1701
Member
 
Регистрация: 07.03.2012
Сообщений: 83
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

при вводе чисел (-7,9)
вот такое пишет
Миниатюры
aacuiyiiue.png  
andrew1701 вне форума   Ответить с цитированием
Старый 20.10.2012, 16:06   #3 (permalink)
andrew1701
Member
 
Регистрация: 07.03.2012
Сообщений: 83
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

ВАЙ ВАЙ ВАЙ решил)))
andrew1701 вне форума   Ответить с цитированием
Старый 20.10.2012, 16:16   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от andrew1701 Посмотреть сообщение
вот вообщем задача
Чего-то, мне кажется, сложновато. Я бы действовал так:
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;  
var
 a,b:integer;

function min(q,p:integer):integer;
begin
 if q<p then min:=q else min:=p;
end;

begin
 Write('Enter a and b: ');
 readln(a,b);
 if a>0 then writeln('xer 1') { ошибка 1}
 else
 if min(a,b)=0 then writeln('xer 2') {ошибка 2}
 else
 writeln('y= ',sqrt(-a)/min(a,b):0:5);
 readln;
end.
Теперь одно ОЧЕНЬ важное замечание, которое я повторяю через раз. При вводе с консоли НЕ следует пользоваться оператором read, только readln, иначе будут всякие неприятности. Например, может не сработать останов readln в конце программы.
Vladimir_S вне форума   Ответить с цитированием
Старый 20.10.2012, 16:27   #5 (permalink)
andrew1701
Member
 
Регистрация: 07.03.2012
Сообщений: 83
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Динозавр спасибо, в принципе не плохо, и довольно коротко, но я не знаю function еще не дошли)) про read знаю) ))))
andrew1701 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 20.10.2012, 16:38   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от andrew1701 Посмотреть сообщение
Динозавр спасибо, в принципе не плохо, и довольно коротко, но я не знаю function еще не дошли)) про read знаю) ))))
Да пожалуйста, млекопит. А функцию можно и ликвидировать, например, так:
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
 a,b,c:integer;
 
begin
 Write('Enter a and b: ');
 readln(a,b);
 if a<b then c:=a else c:=b;
 if a>0 then writeln('xer 1') { ошибка 1}
 else
 if c=0 then writeln('xer 2') {ошибка 2}
 else
 writeln('y=',sqrt(-a)/c:0:5);
 readln;
end.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 02:14.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.