Ir ao conteúdo

Posts recomendados

Postado

Estou com uma dúvida em um programa em C. Preciso ler um valor que seja real e que proiba do usuário digitar qualquer outra coisa a não ser número real. Caracteres e afins estão proibidos de serem aceitos. E assim gerar uma mensagem de valor inválido ao usuário. Ate aí, tudo bem. Mas meu programa após exibir a mensagem de erro não executa o loop novamente, só finaliza o programa. Alguém poderia me ajudar !?

 

int main()
{   
    
    float base;
    
    do
    {
        
    printf("\nDigite o valor da base: ");
    scanf("%f", &base);
    
        
           while  (base != scanf("%f", &base));
           printf ("\nValor invalido! Digite novamente");
           
        
            
    
    
    
    }
    while   (base != scanf("%f", &base));


	return 0;
}

 

  • Obrigado 1
Postado

A função scanf retorna o número de parâmetros que foram lidos com sucesso, então como vai ler apenas um número float, deve checar se o retorno do scanf é igual a 1.

do {
    printf("\nDigite o valor da base: ");
    if (scanf("%f", &base) == 1){
        break;
    }
    printf("Valor invalido! Digite novamente.\n");
} while(1);
Postado

O programa é o seguinte: 

    1. Calcular e escrever a potenciação. A base e o expoente deverão ser valores lidos – rejeitar a leitura de valores inválidos.
Considere: base um valor real.
Expoente: um número inteiro, positivo ou nulo(zero).
Obs: Não usar a biblioteca Math. A potenciação deverá ser calculada de forma iterativa.

 

Ainda estou com o problema  de loop infinito. Não consigo visualizar o problema.

 

 

  
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main ()
{
     int  y, pot=0,i=0, count=0;
     float x;
 
 
    do {
     printf ("Entre com o valor real: ");
     scanf ("%f",&x);
     printf ("Entre com o valor de Y: ");
     scanf ("%d",&y);
    
    
    if (y < 0 )
    printf("\n Entre com um valor positivo");
    else if (!scanf("%f",&x))
    printf("\n Valor invalido. Digite novamente!");
    }
    while (y < 0  || x
    
    
    pot = x;
     for (i=1;i<y;i++)
     {
     pot = x*(x*i);
     }
     
          printf ("\nO valor real se elevado a Y sera de: %d", pot);
 
 
     printf("\n\n\n.................FIM.................."); 
     getch();   
 
  
        
        
    
  
    return 0;
}

 

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!