Ir ao conteúdo

Posts recomendados

Postado

Olá, estou com uma duvida de como proceder, quero exibir uma mensagem de erro caso o usuário  tente cadastrar em algum dos cin>> no meu código, um valor em branco, ou seja, caso ele aperte ENTER sem digitar nada ou escreva um monte de barra de espaço e de ENTER.

 

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
using namespace std;

int
main ()
{
    //Declarando variaveis Globais
  char c_Quantidade[100] = "";//quantidade no estoque
  char c_Venda[100] = "";//quantidade vendida
  int i_Quantidade;//recebe a quantidade do estoque
  int i_Venda;//recebe a quantidade vendida
  int total;//Efetua operação de subtração entre estoque e venda
    //Declarando variaveis globais
    
  cout << "DIGITE a quantidade: \n";
  cin >> c_Quantidade;//Entra com a quantidade em estoque
  cout << "Digite a venda: \n";
  cin >> c_Venda;//Entra com a quantidade vendida
  if (isdigit (c_Quantidade[0]) && isdigit (c_Venda[0]))//Verifica se as variaveis são digitos
    {//se sim
      i_Quantidade = atoi (c_Quantidade);
      i_Venda = atoi (c_Venda);
      total = i_Quantidade - i_Venda;
      cout <<total;
    }
  else//se nao for digito em alguma das entradas
    {
      cout << "DIGITE UM NUMERO ANTA";
    }


  return 0;
}

pensei em usar o isblank ou isspace mas não deu certo, não sei se é por falta de conhecimento  ou de como aplicar usei o Reference do c++ , mas pelo que entendi ele só identifica se tem espaços em brancos ou não, no caso eu desejo usar também esse tipo de código para cadastro de clientes então deve ser possível usar barra de espaço para separar do sobrenome

  • Curtir 1
Postado

@William Omar Olá!

 

1- Para verificar se a posição no array é null/empty.

Exemplo, em código:

char userInput[5];

if (userInput[0] == '\0')
{
	// Ações caso seja null/empty
}

 

2- Para verificar se contém apenas espaço.

Exemplo, em código:

if (userInput[0] == ' ')
{
	// Ações caso contenha apenas espaços
}

 

Alterei um pouco o seu código ficou assim:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
using namespace std;

int main()
{
    //Declarando variaveis Globais
    char c_Quantidade[100]; //quantidade no estoque
    char c_Venda[100];      //quantidade vendida
    int i_Quantidade;            //recebe a quantidade do estoque
    int i_Venda;                 //recebe a quantidade vendida
    int total;                   //Efetua operação de subtração entre estoque e venda
                                 //Declarando variaveis globais

    cout << "DIGITE a quantidade: \n";
    cin >> c_Quantidade; //Entra com a quantidade em estoque

    // Testa os valores de c_Quantidade[0] se forem nulos ou apenas espaços em branco
    if ((c_Quantidade[0] == '\0') || (c_Quantidade[0] == ' '))
    {
        cout << " NENHUM VALOR PASSADO, SAINDO...\n";
        return 1;
    }
    
    // Testa os valores de c_Quantidade[0] se são digitos
    if (((isdigit(c_Quantidade[0])) == 0) && ((isdigit(c_Quantidade[0])) == 0))
    {
        cout << "DIGITE UM NUMERO ANTA\n";
        return 1;
    }

    cout << "Digite a venda: \n";
    cin >> c_Venda; //Entra com a quantidade vendida

    // Testa os valores de c_Venda[0] se forem nulos ou apenas espaços em branco
    if ((c_Venda[0] == '\0') || (c_Venda[0] == ' '))
    {
        cout << " NENHUM VALOR PASSADO, SAINDO...\n";
        return 1;
    }
    
    // Testa os valores de c_Venda[0] se são digitos
    if (((isdigit(c_Venda[0])) == 0) && ((isdigit(c_Venda[0])) == 0))
    {
        cout << "DIGITE UM NUMERO ANTA\n";
        return 1;
    }

    // Executa ação caso os requerimentos sejam validos
    i_Quantidade = atoi(c_Quantidade);
    i_Venda = atoi(c_Venda);
    total = i_Quantidade - i_Venda;
    cout << total;

    return 0;
}

 

Espero ter lhe ajudado, até!

  • Curtir 2
Postado

@William Omar     o código do @sannoy   está bom , mas para verificar se foi digitado números ou letras ou outros tipos de caracteres , precisa comparar todos os caracteres das strings , e ali você está comparando apenas o primeiro caractere , então você precisaria colocar esses teste dentro de um loop que pode ser um loop  for , assim :

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
using namespace std;
int main(){
    // Declarando variaveis Globais , não , aqui dentro da main elas são locais .
    // as variáveis globais são as que estivertem lá em cima antes da função main
    char c_Quantidade[100] = "";  //quantidade no estoque
    char c_Venda[     100] = "";  //quantidade vendida
    int i_Quantidade           ;  //recebe a quantidade do estoque
    int i_Venda                ;  //recebe a quantidade vendida
    int total                  ;  //Efetua operação de subtração entre estoque e venda
    do{
        cout<<"DIGITE a quantidade em estoque --: ";
        cin >>c_Quantidade;          //Entra com a quantidade em estoque
        cout<<"Digite a quantidade vendida  ----: ";
        cin >>c_Venda;               //Entra com a quantidade vendida
    
        int flag = 0;
        for(int j=0; j<strlen(c_Quantidade); j++   ){
            if( ! isdigit(c_Quantidade[j] ) ) flag=1;    
            if( ! isdigit(c_Venda[     j] ) ) flag=2; 
        }
         if( ! flag ){
             // se estiver certo
             total = i_Quantidade - i_Venda;
             cout<<"Total -> "<<total<<endl;  
        }  // se estiverem as entradas erradas
        if( flag == 1 )cout<<c_Quantidade<<" Para Quantidade esta Errado , Nao eh Numero !"<<endl;
        if( flag == 2 )cout<<c_Venda     <<" Para Venda esta Errado , Nao eh Numero !"     <<endl;
    }while( flag );    
    return 0;
}

ou um pouca menos linhas , assim :

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
using namespace std;
int main(){
    // Declarando variaveis Globais , não , aqui dentro da main elas são locais .
    // as variáveis globais são as que estivertem lá em cima antes da função main
    char c_Quantidade[100] = "";  // quantidade no estoque
    char c_Venda[     100] = "";  // quantidade vendida
    int i_Quantidade           ;  // recebe a quantidade do estoque
    int i_Venda                ;   / /recebe a quantidade vendida
    int total                  ;   // Efetua operação de subtração entre estoque e venda

    cout<<"DIGITE a quantidade em estoque --: ";
    cin >>c_Quantidade;            // Entra com a quantidade em estoque
    cout<<"Digite a quantidade vendida  ----: ";
    cin >>c_Venda;                 // Entra com a quantidade vendida

    i_Quantidade = atoi (c_Quantidade);
    i_Venda      = atoi (c_Venda     );

    if( i_Quantidade != NULL && i_Venda != NULL ){    // Verifica se as variaveis são digitos
        //se sim

        total = i_Quantidade - i_Venda;
        cout<<"Total -> "<<total<<endl;
    }
    else{                                           // se nao for digito em alguma das entradas
        cout<<"DIGITE UM NUMERO ANTA"<<endl;
    }
    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Postado
Citação

@sannoy ,

Citação

 

Muito obrigado a ambos, eu estava tentando == NULL e não estava indo kkk, e não tinha parado para pensar que estava apenas verificando a primeira posição do char, vou implementar agora, Boa noite, e desculpe pelo cout<<"DIGITE um  numero anta", tinha me esquecido desse else =D

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!