Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Фильтр ввода


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

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: ");

Спасибо.

Автор: korian 16.3.2008, 04:18
я хз как это сделать средствами 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: ";
}


Автор: inside_pointer 16.3.2008, 06:31
Попробуй вот такую

Код

#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;

}

//


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

Автор: Vent1 16.3.2008, 18:15
Понятно, спасибо, а никто не знает, как это можно было бы реализовать средствами С?

Автор: bsa 17.3.2008, 00:17
Vent1
inside_pointer, написал именно на Си

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)