Jump to content

[C] Ajuda: Problemas com ciclos


Recommended Posts

Posted
{
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 ?

Mais uma vez muito Obrigada  😉

Posted

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

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Posted

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.

<3 life

Posted

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

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Posted

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

<3 life

Posted

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

Desaparecido.

Posted

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? 🙂

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.