М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
dms30445p0a743
dms30445p0a743
10.04.2020 16:48 •  Информатика

Пусть у меня есть действительная переменная в, диапазон которой (-10; 10). как ограничить ее в диапазоне типа real, чтобы нельзя было использовать значения выходящие за диапазон. аналогично, если переменная тип integer. видел такой вариант var b: -10..10; но тут же не понятно к какому типу переменная относится. объясните .

👇
Ответ:
qwem11
qwem11
10.04.2020

ответ на Ваш вопрос простой: никак!

В языке Паскаль есть так называемый диапазонный тип. Он реализуется, как "вырезка" части диапазона базового типа. Например, если базовый тип целочисленный, можно вырезать из него числа в диазахоне "от" и "до".

Например, описание k: -10..10 означает, что k целочисленное и может изменять от -10 до 10. Целочисленное оно потому, что константы -10 и 10 в PascalABC.NET имеют тип integer. Проблема же состоит в том, что в PascalABC.NET контроль за выходом значения переменной за отведенные границы всего лишь... отсутствует! Т.е. описание k: -10..10 - это просто "хотелка". И Вы можете продолжать этого хотеть. Может быть, Вы подумали, что это PascalABC.NET такой плохой язык? Спешу разочаровать: так ведут себя все диалекты Паскаля. Дело в том. что проверка границ диапазона фактически должна делаться при каждой машинной операции с участием переменной диапазонного типа. И это настолько замедляет программу, что такая проверка, даже если она предусмотрена в конкретном компиляторе, по умолчанию выключена. Более того, оказывается, что гораздо проще проверять выход за границы диапазона напрямую в программе!

Что касается переменной типа real - с ней еще хуже: ее даже нельзя объявить в диапазонном типе, поскольку тип real не является порядковым.

Как итог: проверяем if (k>=-10) and (k<=10) then <все хорошо>.

Можно воспользоваться вариантом if k.Between(-10,10) then ...

Between работает и с real: if r.Between(3.4,15.063) then ...

4,7(94 оценок)
Открыть все ответы
Ответ:
'); 
writeln(); 
goto metk;  
end.

Вот это уже лучше и вроде работает
оператор goto используется для перемещения между  операциями(сложить вычесть считать), выходом и меню.

 label     
sum,razn,menu,re,ex;       
var   
m,a,b : integer;  
begin 
menu :   
writeln ('1 - считать числа');   
writeln ('2 - сложить числа');   
writeln ('3 - вычесть числа');   
writeln ('0 - выход');   
readln (m); 
case m of        //Если не знаешь case то можешь заменить операторами if
1 : goto re;      // Пример if m = 1 then goto re;
2 : goto sum;  // if m = 2 then goto sum; //и т.д
3 : goto razn;   
0 : goto ex; 
end;    

re :   
writeln ('Введите числа (a b)');   
readln (a,b);   
goto menu;   

sum :   
writeln ('Сумма =',a+b);   
goto menu;   

razn :   
writeln ('Разность =',a-b);   
goto menu;   

ex :   
writeln ('До встречи');   
sleep (1000);       // просто задержка перед закрытием на 1с
end.

Насколько мне известно в программирование оператор goto популярностью не пользуется и вообще его стараются избегать
4,4(22 оценок)
Ответ:
DALERALIMOV02
DALERALIMOV02
10.04.2020
// F#
let rec getNumberFromConsole _ =
    let str = System.Console.ReadLine()
    let mutable number = 0
    if System.Int32.TryParse(str, &number)
        then number
        else getNumberFromConsole null
let rec getCommonNumber number1 number2 commonNumber multiplier =
    if number1 > 0 && number2 > 0
        then getCommonNumber (number1 / 10) (number2 / 10) (commonNumber + (number1 % 10) * 10 * multiplier + (number2 % 10) * multiplier) (multiplier * 100)
        else commonNumber
[<EntryPoint>]
let main argv =
    let number1 = getNumberFromConsole null
    let number2 = getNumberFromConsole null
    let result = getCommonNumber number1 number2 0 1
    System.Console.WriteLine result
    System.Console.ReadKey true |> ignore
    0
4,7(69 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ