Programação Progressiva

Fórum para dúvidas dos sites: Programação Progressiva, Java Progressivo, C Progressivo


Você não está conectado. Conecte-se ou registre-se

Duivida com testes e laços

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 Duivida com testes e laços em Seg Jul 06, 2015 3:47 pm

Sou novo na programação me perdoem por isso, sinto que estou cometendo um erro grotesco.
Alguém poderia apontar o erro que estou cometendo nesse código:

Código:
#include<stdio.h>
int main()
{
 int cont = 1;
 int QA;
 int a = 1;
 int CA = 1, CR = 1;
 float n;
 
 printf("Digite a quantidade de alunos na sala:"); scanf("%f",&QA);
 
 for ( cont = 1 ; cont <= QA ; cont ++)
    {
     printf("Digite a nota do Aluno %d:",a); scanf("%f",&n);
     while(n > 10)
   {
   if ( n >= 6)
   {
   printf("Aluno Aprovado\n");
   printf("\n");
   CA++;
   }
   else
   {
      printf("Aluno Reprovado\n");
      printf("\n");
      CR++;
   }
   a++;
   }
    printf("Somente notas entre 1 e 10");
    }
    printf("Alunos Aprovados: %d , Aluno Reprovados: %d",CA,CR);
return 0;
}

Ver perfil do usuário

2 Re: Duivida com testes e laços em Seg Jul 06, 2015 5:39 pm

Fiz umas alterações no código, agora tá funcionado: dá uma estudadinha nele.  Very Happy

Código:
#include<stdio.h>

int main()
{
    int cont = 1;
    int QA;
    int a = 1;
    int CA = 0, CR = 0; // inicializar essas variáveis com zero
    float n;

    printf("Digite a quantidade de alunos na sala:");
    scanf("%d", &QA); // "%f" é pra números de ponto flutuante

    for (cont = 1; cont <= QA; cont++)
    {
        do
        {   // essa parte dentro do laço pra que seja repetida em caso
            printf("Digite a nota do Aluno %d:", a); // de nota inválida
            scanf("%f", &n);

            // se for uma nota entre 6 e 10
            if (n >= 6.0 && n <= 10.0)
            {
                printf("Aluno Aprovado\n");
                printf("\n");
                CA++;
            }
            else // se for entre 1 e 6
                if (n >= 1.0 && n < 6.0)
                {
                    printf("Aluno Reprovado\n");
                    printf("\n");
                    CR++;
                }
                else // se chegou aqui é porque é uma nota inválida
                    printf("Somente notas entre 1 e 10\n");

        }   // o laço vai continuar enquanto a nota digitada
        while (n < 1.0 || n > 10.0); // não for válida

        a++;
    }

    printf("Alunos Aprovados: %d, Aluno Reprovados: %d", CA, CR);

    return 0;
}

Acho que o laço "do while" é o melhor nesse caso.

Ver perfil do usuário

3 Re: Duivida com testes e laços em Seg Jul 06, 2015 9:52 pm

Ah já entendi agora, acho que o erro foi mais de lógica mesmo. Valeu Cara!

Ver perfil do usuário

Conteúdo patrocinado


Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum