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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2012, 20:02   #1
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

есть две переменные
float f;
char c;


производится ввод с клавиатуры или из файла.
вводится могут как символы например ;
так и деиствительные числа например 1.0
соответственно символ надо присвоить переменной с, действительное число переменной f.
Как это можно сделать?
может перегрузка функции, но как тут её применить ума не приложу

просто мне известна только такая конструкция
Код:
cin>>c;
cin>>f;
с файлами то-же самое

Последний раз редактировалось Stilet; 29.03.2012 в 21:58.
SAMOUCHKA вне форума Ответить с цитированием
Старый 27.03.2012, 20:18   #2
S1av0k
Пользователь
 
Регистрация: 26.11.2009
Сообщений: 87
По умолчанию

Хм, мне приходит на ум только организация обработки исключений.
Помог - жми весы
S1av0k вне форума Ответить с цитированием
Старый 27.03.2012, 20:40   #3
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
Сообщение от S1av0k Посмотреть сообщение
Хм, мне приходит на ум только организация обработки исключений.
наверно в с++ должно быть более простое решение
SAMOUCHKA вне форума Ответить с цитированием
Старый 27.03.2012, 21:38   #4
Крот
Пользователь
 
Регистрация: 15.03.2012
Сообщений: 57
По умолчанию

Может быть так:
Код:
	float f;
	char c;

	if ( !(cin >> f) ) 
	{
		cin.clear();
		while ( cin.get() != '\n' ) continue;
		cin >> c;
	}
Крот вне форума Ответить с цитированием
Старый 28.03.2012, 00:05   #5
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Можно просто считывать посимвольно, и если считываются цифры (c >= '0' && c <= '9') то ручками вычислять нужный float.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 28.03.2012, 09:43   #6
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
Сообщение от Granus Посмотреть сообщение
Можно просто считывать посимвольно, и если считываются цифры (c >= '0' && c <= '9') то ручками вычислять нужный float.
неужели с++ не позволит реализовать более изящный способ
SAMOUCHKA вне форума Ответить с цитированием
Старый 28.03.2012, 14:25   #7
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Код:
    c = std::cin.peek();
    if (c >= '0' && c <= '9') {
        std::cin >> f;
        std::cout << "Float : " << f << "\n";
    } else {
        std::cin >> c;
        std::cout << "Character: " << c << "\n";
    }
peek считывает символ, оставляя его в потоке ввода
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 28.03.2012, 15:13   #8
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Не совсем как надо работает. При вводе символов все нормально, а вот если ввести например 1234 результат будет таким:
char: 1
float: 234
SAMOUCHKA вне форума Ответить с цитированием
Старый 28.03.2012, 22:25   #9
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

У меня все работает как надо, покажите свой код полностью.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 29.03.2012, 03:29   #10
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Код:
#include <iostream>

using namespace std;

int main()
{
    char c;
    float f;

    c = cin.peek();
    if(c >= 0 && c <= 9)
    {
        cin>>f;
        cout<<"float: "<<f<<"\n";
    }
    else
    {
        cin>>c;
        cout<<"char: "<<c<<"\n";
    }
    return 0;
}
SAMOUCHKA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод строки при вводе Chugun Общие вопросы C/C++ 2 12.03.2012 15:38
Пробелы при вводе KingWaR56 БД в Delphi 6 11.12.2011 09:58
Ошибка при вводе даты tools SQL, базы данных 6 05.11.2009 21:12
Ограничение на знаки при вводе на C Tesmont Помощь студентам 3 14.05.2009 15:08
отключение проверки при вводе engeneer Паскаль, Turbo Pascal, PascalABC.NET 21 23.07.2008 19:45