Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 129
#1

Защита от переполнения - C++

11.03.2013, 13:34. Просмотров 918. Ответов 6
Метки нет (Все метки)

Ребят помоги создать защиту от переполнения через функцию scanf_s и убрать нолики в конечном ответе, вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <iostream>
int main ()
{
setlocale(0, "rus");
float b, h, s;
printf("Введите значение длины основания: ");
 while (!scanf("%f", &b) || getchar() != '\n')
    { 
        printf("Ошибка\n Попробуйте еще раз: ");
        fflush (stdin);
    } 
printf("Введите значение высоты: ");
 while (!scanf("%f", &h) || getchar() != '\n')
    {
        printf("Ошибка\n Попробуйте еще раз: ");
        fflush (stdin);
    } 
printf("Площадь равнобедренного треугольника = %f\n",s=(b*h)/2);
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2013, 13:34     Защита от переполнения
Посмотрите здесь:

СИ++ и контроль переполнения - C++
Можно ли как-нибудь в VS включить контроль переполнения при математических вычислениях? Чтоб, например, возникало исключение. Или это можно...

Переполнения безопастны? - C++
Насколько безопасна строчка: for(unsigned int b(UINT_MAX); ++b != UINT_MAX;) или такое нужно писать только так: unsigned int b(0);...

Флаг переполнения - C++
Доброго времени суток! Подскажите, как проверить какую-либо определенную переменную типа double на переполнение (значениe -1.#IND00,...

Ошибка переполнения буфера - C++
При первом запуске програма работает, после второго появляеться ошибка переполнения буфера. В чем дело?#include &lt;iostream&gt; #include...

Как отловить переполнения? - C++
Есть проект dll, в в нём экспортируемая функция, возвращающая BOOL, требуется при переполнении любой вещественной операции в теле этой...

Проверка переполнения double - C++
Добрый день! Подскажите пожалуйста, где можно почитать теорию. Нужно решить задачу, написать функции на С++, которые бы проверяли ...

Ошибка переполнения массива - C++
Здравствуйте. Задача легкая,нужно создать массив из 1000000 элементов,и найти 1000001,и вывести сообщение что не найден такой элемент. Но...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
11.03.2013, 16:39     Защита от переполнения #2
брать нолики в конечном ответе
Замените
C++
1
printf("Площадь равнобедренного треугольника = %f\n",s=(b*h)/2);
на
C++
1
printf("Площадь равнобедренного треугольника = %g\n",s=(b*h)/2);
%g если число 25.0000 то отобразит 25, если число 3.654 то отобразит 3.654

помоги создать защиту от переполнения
О каком переполнении идет речь ?
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 129
11.03.2013, 16:47  [ТС]     Защита от переполнения #3
Цитата Сообщение от egor2116 Посмотреть сообщение
Замените
C++
1
printf("Площадь равнобедренного треугольника = %f\n",s=(b*h)/2);
на
C++
1
printf("Площадь равнобедренного треугольника = %g\n",s=(b*h)/2);
%g если число 25.0000 то отобразит 25, если число 3.654 то отобразит 3.654
С этим уже разобрался, ты лучше с защитой помоги буду благодарен)

Добавлено через 7 минут
egor2116
Ну вот например чтобы если вводишь больше 10 символов то выдавал ошибку что мол переполнение или на максимальное количество символов которое поддерживает float
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
11.03.2013, 16:47     Защита от переполнения #4
Понял думаю
А использование printf и scanf обязательно?
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
11.03.2013, 16:53     Защита от переполнения #5
Вы про это?
Введите значение длины основания: 111111111111111111
Введите значение высоты: 55555555555555
Площадь равнобедренного треугольника = 3.08642e+30
У меня не каких ошибок не возникает
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
11.03.2013, 16:53     Защита от переполнения #6
Цитата Сообщение от MishkaSh Посмотреть сообщение
Ну вот например чтобы если вводишь больше 10 символов
Значит и читать надо посимвольно. См. putback() и get() для std::istream
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2013, 17:14     Защита от переполнения
Еще ссылки по теме:

Избавиться от переполнения буфера (asm) - C++
Всем привет, на вашем форуме первый раз) Имея базовые знания по C++ и Assembler решил сварганить такую штуку: // test.cpp: определяет...

Отлов исключения переполнения буфера - C++
Вот код #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; #include &lt;locale.h&gt; #include &lt;exception&gt; using namespace std; ...

39+ (-39) будет ли установлен флаг переполнения? - C++
Если выполнить в ячейке 1 байт двоичное сложение чисел 39 и -39 то это приведет к появлению единицы в 9-м разряде за пределом байта, а в...

Динамическое обнаружение ошибки переполнения буфера - C++
Дипломное задание написать программу, которая на вход берет .exe и после обработки показывает возможно ли в данном .exe использование...

Проверка арифметического переполнения для int - C++
Есть задача (из книги Лафоре ООП в С++, задача 4, глава 8): Создайте класс Int, основанный на упражнении 1 из главы 6 . Перегрузите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 129
11.03.2013, 17:14  [ТС]     Защита от переполнения #7
Цитата Сообщение от egor2116 Посмотреть сообщение
Понял думаю
А использование printf и scanf обязательно?
Да обязательно

Добавлено через 34 секунды
Цитата Сообщение от egor2116 Посмотреть сообщение
Вы про это?


У меня не каких ошибок не возникает
Нет нужно чтобы если я ввожу больше 10 символов то выдавал ошибку

Добавлено через 2 минуты
Цитата Сообщение от Tulosba Посмотреть сообщение
Значит и читать надо посимвольно. См. putback() и get() для std::istream
Это для sin и cout, а мне надо для printf и scanf

Добавлено через 3 минуты
Вот к примеру double поддерживает 256 символов. Вот мне нужно чтобы если я введу больше чем 256 символов(не знаю сколько для float) чтоб выдавал ошибку и мол писал введите заново
Yandex
Объявления
11.03.2013, 17:14     Защита от переполнения
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru