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
  • Autor do tópico
  • @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
  • Autor do tópico
  • @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

    ×