Другие языки программирования и технологии
c++ нужна помощь )
Смысл такой. Есть определенная функция, которая находит последовательность Фибоначчи и выводит найденные значения на печать. В задании предлагается выводить эти числа, пока определенное число из последовательности не превысит максимально возможное число для типа int. В цикле , число на каждом шагу цикла сохранено в переменной int sum. Вот как записать проверку, что sum<=int. Ведь именно так не запишешь, а точное значение, максимально возможное для int, мы не знаем( знаем конечно, но надо программным способом, чтоб его автоматом комп подставлял)
Ну конечно про INT_MAX и про sizeof тут много умных вещей написали, но теперь внимание вопрос: и что? Ну знаем мы верхнюю границу типа int, и что? Наша переменная, которая хранит текущий член последовательности, никогда не станет больше ее. Потому что в принципе не может. Если нам очень сильно повезет, то она станет равной ей, но что-то я в этом сильно сомневаюсь, что мы так удачно попадем.
Григорий, я Вам посоветую такой прием. Когда при вычислении очередного члена последовательности Фибоначи, он превысит INT_MAX, у Вас произойдет переполнение типа. При этом, какие бы два целых числа Вы ни складывали, их сумма (в случае переполнения типа) будет обязательно меньше каждого из слагаемых.
При вычислении последовательности Фибоначи, Вы "помните" предыдущий и предпредыдущий член этой же последовательности. Итак, вычислив i-й член, Вы просто сравниваете его с (i-1)-м. Если i-й больше - все в порядке. Если же он вдруг "волшебным" образом стал меньше (i-1)-го, значит, Вы исчерпали возможности типа int.
Григорий, я Вам посоветую такой прием. Когда при вычислении очередного члена последовательности Фибоначи, он превысит INT_MAX, у Вас произойдет переполнение типа. При этом, какие бы два целых числа Вы ни складывали, их сумма (в случае переполнения типа) будет обязательно меньше каждого из слагаемых.
При вычислении последовательности Фибоначи, Вы "помните" предыдущий и предпредыдущий член этой же последовательности. Итак, вычислив i-й член, Вы просто сравниваете его с (i-1)-м. Если i-й больше - все в порядке. Если же он вдруг "волшебным" образом стал меньше (i-1)-го, значит, Вы исчерпали возможности типа int.
используй константу INT_MAX))
Или в других версиях проверяй число на сравнение степени двойки и size_of(int) - инт на разных машинах и в разных компиляторах от 2х до 8и байт и может ограничиваться разным
Или в других версиях проверяй число на сравнение степени двойки и size_of(int) - инт на разных машинах и в разных компиляторах от 2х до 8и байт и может ограничиваться разным
limits.h — заголовочный файл стандартной библиотеки общего назначения языка программирования Си, который включает определения характеристик общих типов переменных. Значения зависят от специфики реализации, но могут быть не ниже диапазона, определенного для конечного значения в удобной реализации Си.
Из нее можно "выбрать" константу, имеющая значение соответствующего предела значения переменной.
INT_MINМинимальное значение для int−2,147,483,648−2,147,483,648≤ -32,767
INT_MAXМаксимальное значение для int+2,147,483,647+2,147,483,647≥ +32,767
ru . wikipedia . org / wiki / Limits.h
Из нее можно "выбрать" константу, имеющая значение соответствующего предела значения переменной.
INT_MINМинимальное значение для int−2,147,483,648−2,147,483,648≤ -32,767
INT_MAXМаксимальное значение для int+2,147,483,647+2,147,483,647≥ +32,767
ru . wikipedia . org / wiki / Limits.h
Фан Кап
частично правильно
INT_MAX прописывается в хедерах
Википедия хороша, но иногда врёт - инт от одного байта до 8ми (зависит от языка, компилятора, операционки)и границы получаются совсем разные
INT_MAX прописывается в хедерах
Википедия хороша, но иногда врёт - инт от одного байта до 8ми (зависит от языка, компилятора, операционки)и границы получаются совсем разные
максимальное значение int (32) = 2147483647
Зачем программно, подставляй так. в условии про программно ничего не было, если я правильно понимаю
pps но если совсем надо - то узнать размер переменной (объекта) данного типа можно с помощью функции sizeof(),
sizeof(int)
Зачем программно, подставляй так. в условии про программно ничего не было, если я правильно понимаю
pps но если совсем надо - то узнать размер переменной (объекта) данного типа можно с помощью функции sizeof(),
sizeof(int)
Джасур Исхаков
Точное значение я знаю, это 2 в 31 степени( с учетом отрицательных чисел) . Мне нужен универсальный метод, который будет работать с любыми типами. Например, процессор знает размер типа double. Предположим, я его не знаю. Но в процессе сравнения процессор сам сможет подставить значение типа double, и выяснить, выполнено условие или нет.
Здесь вот в чем загвоздка. Команда sizeof(int) выдает в результате 4 байта( 4)
Если я пишу команду if(sum
Здесь вот в чем загвоздка. Команда sizeof(int) выдает в результате 4 байта( 4)
Если я пишу команду if(sum
используй константу INT_MAX из заголовочного файла limits.h ( #include<limits.h> )
или создай свою константу типа #define MAXIMUM_INT 2147483647
или создай свою константу типа #define MAXIMUM_INT 2147483647
Похожие вопросы
- Программка c# нужна помощь
- (C++) Нужна помощь в создании метода "пузырька".
- c++ нужна помощь
- C++ Нужна Помощь
- Язык Arduino(C, C++) Нужна помощь: в изучении arduino встретил знак "&" помогите, пожалуйста, что он означает!
- C#. Нужна помощь.
- (C++) Нужна помощь в написании 4-х программ. максимально простые, уровень с++ нулевой практически.
- C# нужна помощь, как это все объединить ?
- Нужна помощь в C++
- Программисты нужна помощь в c++!
if( sum 0) vi.push_back(sum);
if(sum