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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2021, 11:38   #11
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
в данном случае нормально, так как в ветках стоят одиночные выражения.
Я имел в виду не в if, а в while
Код:
while  (a!=b)  if (a>b) a=a-b; else b=b-a;
- годится?
В Паскале вопросов нет, там меж if и else никаких ; нет, что, на мой взгляд, логично. А тут формально по синтаксису как будто 2 отдельных оператора, хотя по смыслу - это разная реакция на один и тот же установленный флаг. А в цикле выполняется один оператор; хочешь больше - обрамляй {} .
----------------
Хорошо было в ФОРТРАНЕ-IV:
Код:
IF (A-B)  10,20,30
"3 дороженьки. Иди по минусу, или по нулю, или по плюсу"

Последний раз редактировалось digitalis; 15.06.2021 в 12:03.
digitalis на форуме Ответить с цитированием
Старый 15.06.2021, 13:12   #12
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
не понимаю, как разрабы его допустили и почему всё ещё не исправили
Не надо тут ничего исправлять. А то можно и делить запретить - вдруг на 0 захотите.
ForenLi вне форума Ответить с цитированием
Старый 15.06.2021, 21:13   #13
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
годится?
Да.
Цитата:
Сообщение от digitalis Посмотреть сообщение
как будто 2 отдельных оператора
Так только кажется. Это две формы if:
Цитата:
if ( expression ) statement
if ( expression ) statement else statement
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 16.06.2021, 08:00   #14
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
while (a!=b) if (a>b) a=a-b; else b=b-a;
- годится?
в данном случае после while - один оператор, так что всё норм

Но лучше всегда использовать скобки, чтобы даже вопросов не возникало

Код:
while  (a!=b){  if (a>b) {a=a-b;} else {b=b-a;}}
а лучше так

Код:
while(a!=b)
{
    if(a>b)
    {
        a=a-b;
    }
    else
    {
        b=b-a;
    }
}
ForenLi, к счастью, это решать разработчикам. И рано или поздно они это исправят )
Алексей1153 вне форума Ответить с цитированием
Старый 16.06.2021, 11:00   #15
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
а лучше так
Не, слишком много бумаги уйдёт, если распечатывать
digitalis на форуме Ответить с цитированием
Старый 16.06.2021, 11:19   #16
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
ForenLi, к счастью, это решать разработчикам. И рано или поздно они это исправят )
нет. Вы слышали обсуждение этой фичи? Пропозл читали? Если исправлять это, то надо запрещать возвращать nullptr из функции - а это уже попахивает.
ForenLi вне форума Ответить с цитированием
Старый 16.06.2021, 11:20   #17
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

digitalis, у меня в ноутбуке нет бумаги
распечатывал я последний раз лет 20 назад

ForenLi, нет, не читал. Я про здравый смысл )
И чем же опасен возврат nullptr из функции? И каким боком он сюда, кстати

Последний раз редактировалось Алексей1153; 16.06.2021 в 11:23.
Алексей1153 вне форума Ответить с цитированием
Старый 16.06.2021, 11:40   #18
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
Я про здравый смысл )
И где он?

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
И чем же опасен возврат nullptr из функции?
Ну вы же его в пример для чего-то привели?..

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
И каким боком он сюда, кстати
Тем, что это синтаксический сахар для:
Код:
#include <iostream>

int* GetSomePointer()
{
    return nullptr;
}

int main() 
{
    {
        auto* p=GetSomePointer();
        if(p)
        {
            std::cout<<"ok";
            *p=1;
        }
        else
       {
          //сюрприз! Тут переменную тоже видно ))
          //(сегфолт по невнимательности)
          std::cout<<"о_О";
          *p=2;
        }
    }
}
ForenLi вне форума Ответить с цитированием
Старый 16.06.2021, 11:51   #19
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

Цитата:
Сообщение от ForenLi Посмотреть сообщение
И где он?
здравый смысл заключается в том, что переменная, объявленная внутри if() должна быть видна только в его же блоке, а в остальных последующих else-блоках переменная не должна быть видна

тут нет никаких противоречий
Алексей1153 вне форума Ответить с цитированием
Старый 16.06.2021, 12:01   #20
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Вот и ваша проблема. Переменная объявлена не внутри if, а в области условного оператора. См. пример выше.
То, что вы говорите это:
Код:
if(..)
{
    auto* p=GetSomePointer();
   ...
}
else
{
   тут p не видна
}
ForenLi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA. Напишите процедуру на языке VBA, которая определяет сократимость дроби a/b (b≠0) . Вычисление наибольшего общего делителя (НОД) чисел a и b оформить в виде функции. Lizka Microsoft Office Excel 2 23.04.2017 11:07
Нахождения наибольшего общего делителя в виде подпрограммы Тина37 Паскаль, Turbo Pascal, PascalABC.NET 1 04.03.2013 16:48
Нахождение наибольшего общего делителяНахождение наибольшего общего делителя A_Orlov Паскаль, Turbo Pascal, PascalABC.NET 1 27.04.2010 16:53
Нахождение наибольшего общего делителя fs444 Общие вопросы C/C++ 4 29.03.2010 19:07
нахождение наибольшего общего делителя и наименьшего общего кратного made in russia Помощь студентам 2 21.12.2008 23:36