Ir ao conteúdo

Posts recomendados

Postado

Estou com este problema:

Preciso que o usuário digite um valor entre 0 a 10, porém quando ele digita um valor proibido, não tem como ele digitar o valor certo.

Tentei validar o numero que o usuário digita com "if else". porém antes do mesmo tem uma estrutura de repetição.

Tem uma maneira que permita o usuário digite o valor de novo, para que ele digite o valor certo? 

#include<math.h>
#include<stdio.h>
#include<locale.h>
main(exe1)
{
    setlocale(LC_ALL,"Portuguese");
    //declaração de variaveis
    char nome[10];
    float n=0, sm=0, nm=0; //n=nota, sm=soma notas, nm=nota média
    int x=0; //x=sistema
    //entrada de dados e processamento
    for(x==0;x<4;x++)
    {
        printf("\n informe a %i nota: ",x+1);
        scanf("%f",&n);
    if(n<0)
        printf("\n informe a nota entre 0 a 10");
    else
        if(n>10)
        printf("\n informe a nota entre 0 a 10");
        else
        sm=n+sm;//calculo soma de notas
    }
    nm=sm/2;//calculo de media
    //saída de dados
    printf("\n A média de notas é: %2.f",nm);
    if(nm>6)
        printf("\n O aluno está  aprovado!");
    else
        if((nm>=4)&&(nm<6))
        printf("\n O aluno está de recuperação!");
        else
        printf("\n O aluno está  reprovado!");

 

Postado

@Mateus Cavalari   você pode usar o a função goto para voltar para trás ou pular para frente ,  especificando o ponto para onde quer ir , e poderia ser assim :

#define _CRT_SECURE_NO_WARNINGS
#include <math.h>
#include <stdio.h>
#include <locale.h>
int main()
{
    setlocale(LC_ALL, "Portuguese");
    //declaração de variaveis
    char nome[10];
    float n = 0, sm = 0, nm = 0; //n=nota, sm=soma notas, nm=nota média
    int x = 0; //x=sistema
    //entrada de dados e processamento
    for (x == 0; x < 4; x++)
    {
        label_1:   // ponto de refrencia para o goto
            printf(" informe a %i nota: ", x + 1);
            scanf("%f", &n);
            if (n < 0 || n > 10)
            {
               printf("\nnotas no valor de 0 ate 10\n");
               goto label_1;  // goto faz o programa ir para esse local apontado pelo label
            }
            else
                sm += n;   //  sm = sm + n   calculo soma de notas
    }
    nm = sm / 4;           //calculo de media
    //saída de dados
    printf("\n A media de notas eh : %.2f\n\n", nm);
    if (nm > 6)
        printf("\n O aluno está  aprovado . . . !");
    else
        if ((nm >= 4) && (nm < 6))
            printf("\n O aluno está de recuperação . . . !");
        else
            printf("\n O aluno está  reprovado . . . !");
    printf("\n\n\n");
    return 0;
}

 

Postado

@devair1010 Eu não acho esse exemplo muito pratico para alguém que está começando a programar, principalmente que ele quebra a lógica do programa com esse goto.

 

Um exemplo "melhor" seria assim.

#include <stdio.h>


int main(void)
{
    int numero = 0;
    /* Repete até o número estiver dentro da faixa desejada */
    do {
        /* Pega um numero */
        printf("\nDigite um numero entre 0 e 10:\t");
        scanf("%i%*c", &numero);

        /* Testa se está fora da faixa desejada */
        if (numero < 0 || numero > 10) {
            printf("\nDigite novamente!");
        }
    /* Repete se o número estiver fora da faixa */
    } while (numero < 0 || numero > 10);

    printf("\nOk\nO Numero %i foi aceito.", numero);
    getchar();      /* Pausa o programa */
    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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!