Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
vitor de jesus

Como Verificar se String e Numerica

Recommended Posts

Tipo Pegar uma String do usuario e verificar se ela contem apenas numeros 

pois estou fazendo um programa que pede um int ao usuario mas se o usuario digitar um char o programa e interrompido 

tem algum codigo que verfico se a string e numerica e se for converto ela para int..

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@vitor de jesus Você pode usar o Integer.parseInt( ); e ignorar os caracteres.

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
 
 

Compartilhar este post


Link para o post
Compartilhar em outros sites
 

@vitor de jesus   quando você diz  "uma string numérica" creio que está dizendo que ela é

constituída apenas por números, então você pode usar esse código para verificar se ela é 

numérica ou não e aí tomar as medidas adequadas.

#include <iostream> 
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
string a;
int b,c,d;

int main()
{
    d=0;
    cout << "Digite uma palavra  ";
    getline(cin,a);
    b=a.size();
    cout << "tamanho da palavra= " << b << endl;
    for(c=0;c<b;c++)
    {
        cout << char(a[c])<<endl;
        if(isdigit(a[c])){cout << "Este é Um Digito Decimal " << a[c] << endl;d++;}
    }
    if(d==b){cout<<"Todos os caracteres sao numeros. Continua O Programa"<<endl;}//só digitos de 0 ate 9
    if(d< b){cout<<"Existe Caracteres Char Nessa string. Fechar Programa"<<endl;}//o ponto ou virgula é char
    cout << "Digite Um Numero E Tecle Enter ";
    cin >> a;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas tem que lembrar que números também podem ter sinal - ou +, e se for float também pode ter ponto . (ou vírgula dependendo do "locale").

 

Dependendo da situação outros formatos de entrada de dados também podem ser admissíveis como na forma exponencial (123.4E3 = 123400), ou hexadecimal (0xAF). Aí depende se você quer permitir que o usuário entre números nesses formatos, aí teria que checar as condições para obter números válidos nesses formatos.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
 

@devair1010

Bom Fiz Algumas Alteraçoes Para Meu Programa E Ficou Assim :

#include <iostream> 
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
string a;
int b,c,d;

int main()
{

	do{
		
    d=0;
    cout << "Digite uma Senha Que Contenha Apenas Numeros : ";
    getline(cin,a);
    b=a.size();
  
    for(c=0;c<b;c++)
    {
    	system("cls");
        if(isdigit(a[c])){d++;}
    }


    }while(d<b);
    
 
}

O Código Iria Funcionar Perfeitamente No Meu Programa, Mas só tem um porém : quando digito enter sem colocar um numero ou um carácter o Programa continua...

 

e preciso Obrigar o usuário a digitar um (numero) que tenha no máximo 9 dígitos, acho que teria como alterar o programa e limitar o usuário a digitar um numero que contenha no máximo 9 dígitos, mas não sei como poderia fazer para caso o usuário digitar espaço sem digitar mas alguma coisa o programa voltar para a condição 

 

 


    do{
	                                           
    cout << " Digite um Login Para O Usuario : ";        // Pedindo Nome
    getline(cin,wordTemp);                            // Armazenando Nome
    int posicao = administrador.usuarioAdmin.size();  // Pegando Qtd de Admin
    int controle = 0;                                 // Ira Verficar
	    
		for(int i = 0; i < posicao; i++ ){                 // Verifica todos os 
			if(wordTemp==administrador.usuarioAdmin[i]){   // Adiministradores
				controle++;                                // Armazenados
			}
		}
		
		if(controle>0){                           // Se Condiçao Retorna 1 Faça
        cout << " Este Login Ja Esta em Uso ";    // Imprimi 
        cout << " \" Fechando Programa \"  ";     // Imprimi
        cout <<  endl << endl;                    // Pula 2 Linhas 
        exit(0);                                  // Fechando Programa
		}else{                                    // Se nao retorna 1 Faça
        administrador.usuarioAdmin[tam-1]= wordTemp; // Armazenando Admin
        
        
        
        cout << " Digite uma Senha Para O Admin ";      // Imprimi
        cout << " \" Que So Contenha Numeros \" : ";    // Imprimi
		 
        cin >> numbersTemp;                             // Armazenando Senha 
  	    pessoa.senhaUsuar.push_back(wordTemp);	        // Armazenando Senha
  	    retorno=1;
  	    system("cls");                                  // Limpando a Tela
  	    cout << endl << endl;
		}
		
		
		}while(retorno!=1)
		

 A parte que Preciso verificar se o usuario digitou um numero que tenha no máximo 9 caracteres e a parte que pede o usuario uma senha e armazena o numero em numbersTemp

 

então pensei no seguinte colocar o que o usuário digitar em uma string verficar se a string e numerica e tenha no  maximo 9 digitos  se for converte-la em int mantendo os numeros armazenados nela(Teria como?)  e por fim fazer numbersTem = a string convertida e depois armazenar numberstem no vector... 

 

acho que ficou meio confuso mas acho que deu pra entender

 

sei que seria mais fácil se a senha fosse uma string como o usuário mas para o programa que estou fazendo se torna funcional e preciso que a senha seja um int com no maximo 9 digitos

 

e nao sei como fazer essa verificaçao pois como o programa pede um int se o usuario digitar um caracter acaba com o programa..

 

Mas Estou Pensando aqui Agora --> tem como colocar um numero em uma string automaticamente sempre que a função for chamada 

tipo:

 

funçao (){

 

static numero = 0;

++numero;

string nome = "Vazio"; nessa parte  aqui teria como fazer algo que eu possa fazer  para colocar o numero

dentro da string  ai ficar tipo : "Vazio1" 1 que e o valor de numero 

}

 

pois sempre que a função for chamada a string seria diferente : vazio1,vazio2,vazio3....

essa seria uma solução também,na verdade acho que ainda mais funcional para o meu programa.

 

se tiver como fazer isto me falem,,,

Obrigado!!

 

@isrnick @devair1010@Math.Pi

Editado por vitor de jesus
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@vitor de jesus quando cin recebe uma entrada invalida ele define failbit.

basta colocar cin dentro de um laço e sempre que receber uma entrada invalida, resetar o failbit com cin.clear() e ignorar a entrada com cin.ignore().

int main(int argc, char** argv)
{
	int numero;
  
	while (true)
	{
		cin >> numero;

		// cin recebeu uma entrada válida
		if (!cin.fail())
		{
			cin.ignore();
			break; // sai do laço
		}

		cin.clear();
		cin.ignore();
	}
	cout << numero << endl;
  
  	return 0;
}

 

51 minutos atrás, vitor de jesus disse:

preciso que a senha seja um int com no maximo 9 digitos

#include <iostream>
#include <string>

using namespace std;

int main(int argc, char** argv)
{
	string senha;

	// Verifica se a entrada possui no máximo 9 caracteres
	while (true)
	{
		getline(cin, senha);

		// senha possui um tamanho menor que 9
		if (senha.length() <= 9)
			break; // sai do laço

		// senão rodará o laço até a condição ser satisfeita
	}
	cout << senha << " :" << senha.length() << " caracteres.\n";

	return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
 

@Gustavo Andretto Obrigado!

 

O 1 código foi bem útil com ele não irei precisar de fazer as verificações da string...

Ficou Assim :

#include <iostream>

using namespace std;

int main(int argc, char** argv)
{
	int numero;
  
	while (true)
	{
		cin >> numero;

		// cin recebeu uma entrada válida
		if (!cin.fail())
		{
			
			cin.ignore();
			if (numero <=  2147483647){
			break; // sai do laço
			}
		
		}

		cin.clear();
		cin.ignore();
	}
	cout << numero << endl;
  
  	return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×