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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2012, 16:44   #1
kershidze
Новичок
Джуниор
 
Регистрация: 06.11.2012
Сообщений: 2
По умолчанию scanf() или int ?

проблема в общем такая

при вводе например: йц2 выводит ошибку;
а при вводе: 2йцй выводит two;
как сделать чтоб в обоих случаях выводило two.

Код:
#include<iostream>
#include<stdio.h>
using namespace std;
void main()
{
	setlocale(LC_ALL, "Russian");
	int a=0;
	printf("Введите число от 0 до 9 \n"); 
	if(scanf_s("%d",&a))
	{
		switch(a)
		{
		case 1:printf("one\n");break;
		case 2:printf("two\n");break;
		case 3:printf("three\n");break;
		case 4:printf("four\n");break;
		case 5:printf("five\n");break;
		case 6:printf("six\n");break;
		case 7:printf("seven\n");break;
		case 8:printf("eight\n");break;
		case 9:printf("nine\n");break;
		case 0:printf("own\n");break;
		default: printf("Введено неверное значение\n");
		}
	}
	else printf("error");
	system("pause");
}

Последний раз редактировалось kershidze; 12.11.2012 в 20:53.
kershidze вне форума Ответить с цитированием
Старый 12.11.2012, 17:27   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Код:
char c;
do scanf("%c",&c); while(!isdigit(c));
Abstraction вне форума Ответить с цитированием
Старый 12.11.2012, 18:11   #3
kershidze
Новичок
Джуниор
 
Регистрация: 06.11.2012
Сообщений: 2
По умолчанию

К сожалению не работает.

Вот такой быдлокод у меня получился.
Что стоит исправить ?


Код:
#include <iostream>
#include <math.h>
#include<stdio.h>
using namespace std;




void main()
{
	setlocale(LC_ALL, "Russian");
	int str_l=20,k=0;
	int a=0;
	printf("Enter the number from zero to nine, please\n");
	char* str=new char[str_l];
	scanf("%s",str);
	for(int i=0; i<str_l; i++)
	{
		if( ((str[i]-'0')<10) && ((str[i]-'0')>=0) )
		{
			a+=(str[i]-'0')*pow(10,(float)k);
			k++;
		}
	}
	switch(a)
	{
	case 1:printf("one\n");break;
	case 2:printf("two\n");break;
	case 3:printf("three\n");break;
	case 4:printf("four\n");break;
	case 5:printf("five\n");break;
	case 6:printf("six\n");break;
	case 7:printf("seven\n");break;
	case 8:printf("eight\n");break;
	case 9:printf("nine\n");break;
	case 0:printf("own\n");break;
	default: printf("Введено неверное значение\n");
	}
	delete [] str;
	system("pause");
}
Изображения
Тип файла: png Снимок.PNG (36.9 Кб, 16 просмотров)

Последний раз редактировалось Stilet; 12.11.2012 в 20:54.
kershidze вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какова разница между "int** &a" и "int** a" в кач-ве параметра функции? dollemika Помощь студентам 3 15.01.2012 17:16
Двухзначное число int записать как пару однозначных int (c++) narien Помощь студентам 2 08.01.2012 15:10
функция float average(int arrray[],int from,int to) yuliyayuliya Помощь студентам 0 25.04.2011 21:55
С++:invalid types 'int[int]' for array subscript greendoom Помощь студентам 0 19.03.2011 16:53
С++ Опереатор перезагрузки ()(int,int) Jane-sad Помощь студентам 1 08.10.2010 15:26