• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Задача с if

andrew1701

Новые
Регистрация
7 Мар 2012
Сообщения
83
Реакции
0
Баллы
0
Задача с 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.
 
Последнее редактирование:
при вводе чисел (-7,9)
вот такое пишет
 

Вложения

  • Безымянный.webp
    Безымянный.webp
    4.3 KB · Просмотры: 51
вот вообщем задача
Чего-то, мне кажется, сложновато. Я бы действовал так:
Код:
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 в конце программы.
 
Динозавр спасибо, в принципе не плохо, и довольно коротко, но я не знаю function еще не дошли)) про read знаю) ))))
 
Динозавр спасибо, в принципе не плохо, и довольно коротко, но я не знаю 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.
 
Назад
Сверху