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

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

Войти
Регистрация
Восстановить пароль
 
ASCII
90 / 62 / 10
Регистрация: 15.12.2013
Сообщений: 399
Завершенные тесты: 2
#1

При вводе в переменную через scanf число 0.5 записывается как 0 - C++

19.12.2013, 19:08. Просмотров 284. Ответов 3
Метки нет (Все метки)

Всем привет, столкнулся с такой проблемой:
В универе надо простенькую задачку написать на С...
Ввожу в х число 0.5, а в х в итоге лежит 0, почему? Ведь х имеет тип float.

Задача такая:

если х <= 0, выводим 0
если 0 < х <= 1, выводим, то что ввели в х
иначе выводим x^2

Все вроде проще некуда, а с проблемой столкнулся...

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
 
int main() {
    
    float x;
 
    setlocale(LC_ALL, "Russian");
 
    printf("Введите х: ");
    while(!scanf("%f", &x));
 
 
    if(x <= 0)
        printf("x = %f", 0);
 
    if(x > 0 && x <= 1)
        printf("x = %f", x);
 
    if(x > 1)
        printf("x = %f", x * x);
 
 
    system("pause >> void");
    return 0;
}
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2013, 19:08     При вводе в переменную через scanf число 0.5 записывается как 0
Посмотрите здесь:

Число не записывается в переменную - C++
int main() {int a,b; cout&lt;&lt;&quot;Enter a &quot;&lt;&lt;endl; cin&gt;&gt;a; while(a/10&gt;1) { b=a-10;} cout&lt;&lt;b&lt;&lt;endl; ...

Как ввести однобайтовое число через scanf - C++
Как ввести однобайтовое число с помощью scanf? char x; scanf(&quot;%d&quot;, &amp;x); Пытался писать такие строки. Однако этот говнюк не...

Ограничить данные при вводе scanf или getchar - C++
Добрый вечер. Подскажите, пож-та, как ограничить ввод данных. То есть получить все положительные числа или количество часов не должно...

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

Можно ли через scanf считать число, записанное в двоичной системе счисления - C++
Добрый день уважаемые обитатели. Вопрос заключается в следующем: Можно ли через scanf считать двоичное число?

Не записывается массив в переменную - C++
Не записывается массив в переменную при считывании новой i, то есть была у нас i = 1, и перешла на i = 2, и все значения из DATA...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13053 / 7316 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
19.12.2013, 19:13     При вводе в переменную через scanf число 0.5 записывается как 0 #2
Цитата Сообщение от ASCII Посмотреть сообщение
Ввожу в х число 0.5, а в х в итоге лежит 0, почему?
Потому что установили русскую локаль, а в русском десятичным разделителем является запятая, а не точка.
ASCII
90 / 62 / 10
Регистрация: 15.12.2013
Сообщений: 399
Завершенные тесты: 2
19.12.2013, 19:14  [ТС]     При вводе в переменную через scanf число 0.5 записывается как 0 #3
Цитата Сообщение от Croessmah Посмотреть сообщение
Потому что установили русскую локаль, а в русском десятичным разделителем является запятая, а не точка.
Помогло, спасибо большое
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2013, 19:14     При вводе в переменную через scanf число 0.5 записывается как 0
Еще ссылки по теме:

В переменную записывается пустота - C++
Здравствуйте . У меня вот образовалась такая проблема: решал несколько задач различных на одну тему, решил написать одну программу, в...

Глюк при вводе через консоль - C++
Как можно обеспечить правильный ввод? При вводе цифр все нормально, а вот когда ввести символ или строку то прога слетает. Вот...

Не записывается текущая директория в переменную - C++
Отладка почему то не работает. В переменных вместо ожидаемых значения какие то крякозябры. Каждый раз разные. Случайные участки ОЗУ...

В переменную массива записывается не то значение - C++
Вобщем задача такая : есть массив N чисел из него надо удалить повторяющиеся числа. Я написал такую функцию: void T(int* M,int N){ ...

Обрезать строку при вводе через fgets - C++
Всем доброго времени суток! Столкнулся с такой проблемой - заполняю список значений следующей процедурой void addToQueue(T_Queue...

Циклы: при вводе числа <=0 запрашивать другое число - C++
Только начал осваивать азы, так что уж извините за глупый вопрос. Как в приведенном ниже коде сделать так, что бы при вводе числа ,...


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

Или воспользуйтесь поиском по форуму:
ПерС
371 / 287 / 89
Регистрация: 05.11.2013
Сообщений: 820
Записей в блоге: 5
Завершенные тесты: 1
19.12.2013, 19:14     При вводе в переменную через scanf число 0.5 записывается как 0 #4
наверно в локали запятая, а не точка
Yandex
Объявления
19.12.2013, 19:14     При вводе в переменную через scanf число 0.5 записывается как 0
Ответ Создать тему
Опции темы

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