Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
13 / 13 / 16
Регистрация: 23.04.2018
Сообщений: 110
1

Число в потоке ввода

28.07.2018, 21:44. Показов 880. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здрасьте! Необходимо присвоить переменной число, которое вводиться c клавиатуры, выглядеть должно как то так:
C
1
2
3
4
void main(void) {
    int c;
    while ((c = getchar()) != '\n') printf("%d ", c);
}
Переменной с присваивается код числа в таблице ANSI. Распечатывает код, а не нужное мне число
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.07.2018, 21:44
Ответы с готовыми решениями:

Оставить информацию в стандартном потоке ввода
У меня есть метод, который сохраняет информацию в ранее открытом файле (известно имя файла): ...

Отслеживание ввода данных в потоке cin
Добрый вечер. Предположим такой код: void fiterations(int &iter_i) { if (!cin) { cout...

Вывод данных структуры (оставление символа '\n' в потоке ввода)
for (int i = 0; i < 8; i++) { cout << "Введите фамилию и имя" << endl; getline(cin,...

Исправить ошибку, при которой не работает cin после vector'a (лишний символ '\n' в потоке ввода)
Столкнулся с этой проблемой в другой программе,но решил написать более примитивную и посмотреть,...

4
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
28.07.2018, 22:57 2
а scanf уже отменили?
C
1
2
3
int a;
scanf("%d",&a);
printf("%d",a);
0
13 / 13 / 16
Регистрация: 23.04.2018
Сообщений: 110
28.07.2018, 23:25  [ТС] 3
ValeryS, что если у меня есть выражение, к примеру: 2 + 13. И мне нужно отдельно '2', '+', "13". Как в таком случаи поступить?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
29.07.2018, 01:07 4
Особо не заморачиваясь:
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>
 
int main(void) {
    double a, b;
    char op;
    
    while ( printf("> ") && scanf("%lf %c %lf", &a, &op, &b) == 3 ) {
        switch(op) {
            case '+':
                printf("%f\n", a + b);
                break;
            case '-':
                printf("%f\n", a - b);
                break;
            case '*':
                printf("%f\n", a * b);
                break;
            case '/':
                printf("%f\n", a / b);
                break;
            default:
                printf("Unknown operation!\n");
                break;
        }
    }
    
    return 0;
}
Код
[andrew@easybook numbers]$ gcc -Wall simple_calc.c 
[andrew@easybook numbers]$ ./a.out 
> 34 + 43
77.000000
> 2*2
4.000000
> 13 / 0
inf
> 999999999 + 1
1000000000.000000
> q
[andrew@easybook numbers]$
1
2305 / 1131 / 702
Регистрация: 25.04.2016
Сообщений: 3,224
29.07.2018, 21:52 5
Лучший ответ Сообщение было отмечено Adrian_One как решение

Решение

Цитата Сообщение от Adrian_One Посмотреть сообщение
Распечатывает код, а не нужное мне число
Adrian_One, cмотрите, вы используете getchar(), а эта функция как раз и считывает очередной символ (обратите внимание! очередной символ) с потока ввода, т.е. вы записываете в 'c' не число, а код, которым оно обозначается в таблице символов.

Для того, чтобы вывести на экран число, вам необходимо определить является ли введенный символ числом:
if (c>='0' && c<='9')

и "перевести" его в число:
c = c-'0';

т.е.
if (c>='0' && c<='9') c = c-'0';

таким образом ваша программа приобретает вид:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
void main(void)
{
    int c;
    while ((c = getchar()) != '\n')
        if (c>='0' && c<='9')
        {
            c = c - '0';
            printf("%d ", c);
        }
    printf("\n");
}
или чуть более короткий вариант:
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
void main(void)
{
    int c;
    while ((c = getchar()) != '\n')
        if (c>='0' && c<='9')
            printf("%d ", c - '0');
    printf("\n");
}
1
29.07.2018, 21:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.07.2018, 21:52
Помогаю со студенческими работами здесь

Ввод последовательности целых чисел, конечным числом является число С. (константа, число оповещающее об остановке ввода)
Необходимо написать на делфи! Сам я программист по плюсам и совершенно не представляю как...

Во входном потоке дано единственное вещественное число x (|x| <= 1000)
Входные данные: Во входном потоке дано единственное вещественное число x (|x| &lt;= 1000). ...

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

Подсчитать и напечатать число символов во входном потоке, предшествующих символу #
Доброй времени суток. В универе нужно сделать лабораторную работу, но не знаю как ее написать....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru