• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

suzy

[C] Ajuda: Problemas com ciclos

8 mensagens neste tópico

{
int nota, falta, i, al=1, contarf=0,contarn=0,contaa=0,total=0,media;

  for(i=0;i<=12;i++);
  {
   printf(" numero de faltas do aluno %d\n",al);
   scanf("%d",&falta);
   al++;
    
        if(falta<13)
        {
        printf(" voce esta reprovado por faltas\n");
        contarf=contarf+1;
        }
        else
            printf(" qual o valor da sua nota\n");
            scanf("%d",&nota);
            
                  if(nota<10)
                  {
                  printf(" esta reprovado\n");
                  contarn=contarn+1;
                  }
            else
                 contaa=contaa+1;
                 total=total+nota;
                 media=total/12;
                 
                 }
                 
    printf( "o numero de alunos aprovados e %d\n",contaa);
    printf(" o numero de alunos reprovados e %d\n",contarf+contarn);
    printf( " a media das notas da turma e %d\n", media);
    
    fflush(stdin);
    getchar();
    }

                 

    Viva!!! tenho aquim mais um problema, tenho que pedir a 12 alunos que inseram as suas faltas e  ea sua nota, por isso fiz o ciclo, acontece que ele so pede a nota de um aluno o programa, tenho de fazer outro ciclo, dentro deste :eek:

Mais uma vez muito Obrigada  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só te vai pedir a nota se introzuzires um numero de faltas superior ou igual a 12.

Tens de rever os if´s pois não estão lá muito bem pensados.

PS: Tenta abrir e fechar os parêntesis em todos os ciclos e mete-os alinhados senão é dificil ajudar. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tenho muito tempo, mas tens ai uns erros de lógica e sintaxe, deixo aqui uma versão corrigida à pressa, não testei.

int main(void) 
{
    int nota, falta, i, al=1, contarf=0,contarn=0,contaa=0,total=0,media;

    for(i=0;i<=12;i++, al++)
    {
        printf("numero de faltas do aluno %d: \n",al);
        scanf("%d",&falta);
        /*al++;*/
        
        if (falta > 13)
        {
            printf("voce esta reprovado por faltas!\n");
            contarf++;
            continue;
        }
        else
        {
            printf("qual o valor da sua nota: \n");
            scanf("%d",&nota);
            
            if (nota < 10)
            {
                printf(" esta reprovado\n");
                contarn++;
            }
            else 
            {
                contaa++;
                total+=nota;
            }
        }
    }

    media=total/12;
    printf( "o numero de alunos aprovados e %d\n",contaa);
    printf(" o numero de alunos reprovados e %d\n",contarf+contarn);
    printf( " a media das notas da turma e %d\n", media);
            
    fflush(stdin);
    getchar();

    return 0;
}

PS: Ganha hábitos de formatação de código, eu olhei para o teu código e ao início não percebia nada porque estava todo desorganizado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu tou a ver que se o aluno tiver um numero de faltas inferior a 13 é reprovado. Não será ao contrário?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu tou a ver que se o aluno tiver um numero de faltas inferior a 13 é reprovado. Não será ao contrário?

Exacto, não revi o código a esse nível, mas também me parece que não seja o pretendido. Código corrigido. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema principal é teres um ponto e virgula a seguir ao for, por isso é que as instruções só executam uma vez: não pertencem ao ciclo for.

Outra coisa: se os alunos que reprovam por faltas não têm direito a inserir a nota, tens que contar o número de alunos que conseguiram inserir a nota para depois calcular a média. Ou então deixar os alunos reprovados por faltas inserir a nota e dividir sempre por 12...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora um pequeno reparo: Se não usas a variável i para mais nada podes meter o numero de aluno a ser incrementado no for, ou seja,

for(al=1;al<=12;al++)

Já agora, Triton um for com 3 ponto e vírgula? :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora