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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2015, 20:03   #1
KPOBOCiCb
Пользователь
 
Регистрация: 11.02.2013
Сообщений: 11
По умолчанию Проверка переменной на принадлежность к числовому типу

Доброго всего да побольше!
Есть переменная, к примеру int x; выводится на экран сообщение "Введите X: ", пользователь случайно вводит не число, а букивку или любой другой символ, как осуществить проверку принадлежности введенного значения к типу int, чтобы вывести сообщение типа: "Введи число, осел!".
И дать ему второй шанс ввести число.
Вот такое:
Код:
if ( s == int )
не работает
Не представляю как это сделать, гугл не плодородит, видать порчу навели.

Последний раз редактировалось KPOBOCiCb; 04.06.2015 в 20:07.
KPOBOCiCb вне форума Ответить с цитированием
Старый 04.06.2015, 20:51   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А как ты вводишь данные?
Покажи код.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2015, 20:57   #3
KPOBOCiCb
Пользователь
 
Регистрация: 11.02.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А как ты вводишь данные?
Покажи код.
Код:
float main()
{
	float s, t, sol;
	printf("Enter s: ");
	scanf("%f", &s);
	printf("Enter t: ");
	scanf("%f", &t);
	sol = solFunc( t, -2*s, 1.17 ) + solFunc( 2.2, t, s-t );
	printf("\n%f\n\n", sol);
	system("pause");
}
Ну только мне нужен тип float, int просто как пример.

Можно конечно задать тип символьный, и если в этой строке найдено хоть одно не число и/или не точка - выводить сообщение пользователю. А если все символы - цифры, и не более одной точки, то превратить его в тип float. Но так много гемороя

Последний раз редактировалось KPOBOCiCb; 04.06.2015 в 21:06.
KPOBOCiCb вне форума Ответить с цитированием
Старый 04.06.2015, 21:14   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
	
do{
 printf("Enter s: ");
 if(scanf("%f", &s)==1) break;
 printf("Ты че ввел? бЭзадрь! Я твоя самсунг в гальюн тапил! Ввади чисело, а не чертиче");
}while(true);
Т.е. scanf возвращает кол-во правильно введенных данных. В твоем случе если вернет единицу, значит введено верно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2015, 21:20   #5
KPOBOCiCb
Пользователь
 
Регистрация: 11.02.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Т.е. scanf возвращает кол-во правильно введенных данных. В твоем случе если вернет единицу, значит введено верно.
Хм, оно чет ругается на true, думает что это необъявленная переменная, хотя подсветило его голубеньким.

Последний раз редактировалось KPOBOCiCb; 04.06.2015 в 21:26.
KPOBOCiCb вне форума Ответить с цитированием
Старый 04.06.2015, 21:27   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну напиши там 1=1. Или сделай совсем другой цикл. for() можешь написать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2015, 21:35   #7
KPOBOCiCb
Пользователь
 
Регистрация: 11.02.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну напиши там 1=1. Или сделай совсем другой цикл. for() можешь написать.
та вообще не работает
если сделать бесконечным (1==1, или через пустой for и т.п.), то после ввода не числа оно зацикливается, если цикл не бесконечный - пишет что значение неверно и переходит к считыванию след. переменной
KPOBOCiCb вне форума Ответить с цитированием
Старый 04.06.2015, 21:38   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
то после ввода не числа оно зацикливается
Ну так правильно. Зациклиться чтоб дать ввести заново. Или я что-то не понимаю?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2015, 21:42   #9
KPOBOCiCb
Пользователь
 
Регистрация: 11.02.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну так правильно. Зациклиться чтоб дать ввести заново. Или я что-то не понимаю?
он зацикливается и дает только закрыть окно консоли
Изображения
Тип файла: jpg Безымянный.jpg (122.1 Кб, 130 просмотров)
KPOBOCiCb вне форума Ответить с цитированием
Старый 04.06.2015, 21:58   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Лентяй ты. Взял бы и почитал спецификацию.
Код:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    float k;
    for(;scanf("%f",&k)!=1;){
        printf("nono!\n");
        getchar();
    }
    printf("Hello world!\n");
    getchar();
    return 0;
}
Я то не сишник, я все эти функции правильно помнить не могу. Хелп себе под подушку ложи, елки-моталки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++.Приведение переменной к константному типу halcyon Помощь студентам 1 31.03.2012 14:21
Проверка числа на принадлежность (Delphi) Annabelle Помощь студентам 8 09.12.2011 14:17
Как узнать принадлежность к типу. apeyron Помощь студентам 1 05.11.2011 21:46
2 программы на языке Паскаль: определить тип переменной по значению, принадлежность точки треугольнику jack=) Помощь студентам 1 03.06.2011 11:12
Проверка перменной на соответствие типу Demien Общие вопросы Delphi 8 01.02.2011 19:21