Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фильтр ввода, в scanf, консольные приложения 
V
    Опции темы
Vent1
Дата 16.3.2008, 03:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 23.8.2007
Где: Мск

Репутация: нет
Всего: нет



Здравствуйте, мне необходимо решить проблему фильтра потока ввода.  Приведенный ниже код не принимает числа меньше нуля и больше ста, как и нужно по программе, а хотелось бы, чтобы нельзя было вводить ещё и десятичные числа, буквы, пробельные символы, абракадабру и т.д.
Код

int m;
printf("Ukajite chislo strok v vashei matrice (ne bolee 100): "); 
while (scanf("%d", &m)!=1 || m>=100 || m<=0 )
        printf("Oshibka vvoda. Povtorite: ");

Спасибо.
PM MAIL   Вверх
korian
Дата 16.3.2008, 04:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 2
Всего: 17



я хз как это сделать средствами C
на C++, я б сделал так:

Код

int m;
std::cout<<"Ukajite chislo strok v vashei matrice (ne bolee 100): ";
while (!(std::cin>>m).good() || m >= 100 || m <= 0)
{
    std::cin.clear();
    std::cin.sync();
    std::cout<<"Oshibka vvoda. Povtorite: ";
}


PM   Вверх
inside_pointer
Дата 16.3.2008, 06:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: -1
Всего: 12



Попробуй вот такую

Код

#include <stdio.h>
#include <stdlib.h>

int main()

{
int  m = 0;
char p[200];

printf("Ukajite chislo strok v vashei matrice (ne bolee 100): "); 

while(1) {
 scanf("%s", p);
 m = atoi(p);
 if(m <= 0 || m >= 100)
  printf("Oshibka vvoda. Povtorite: ");
 else
  break;
}

return 0;

}

//


В поток принимается не число а строка

Это сообщение отредактировал(а) inside_pointer - 16.3.2008, 06:38
PM MAIL   Вверх
Vent1
Дата 16.3.2008, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 23.8.2007
Где: Мск

Репутация: нет
Всего: нет



Понятно, спасибо, а никто не знает, как это можно было бы реализовать средствами С?
PM MAIL   Вверх
bsa
Дата 17.3.2008, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Vent1
inside_pointer, написал именно на Си
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0697 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.