Jump to content

Recommended Posts

Pessoal estou com problemas ao fazer um programa para calcular a media de duas notas. Segue o codigo:


int main(int argc, char *argv[]) {
    float nota1,nota2, media;
    printf ("Digite a primeira nota");
    scanf ("%d", &nota1);
    do {
        printf ("digite 1 como nota\n");
        scanf ("%d", &nota1);
    } while (nota1==0);
    if (nota1 !=0)
    {
        printf ("digite a nota 2\n");
        scanf ("%d", &nota2);
        
    }
        media=(nota1+nota2)/2;
        printf ("a media eh %d.2\n ",media);
    return 0;
    
    
    
}

Ele compila legal e roda. Só que aparece a mensgem "Digite 1 como nota que só deveria aparecer quando o usuário digitasse 0 (Zero).

  a ideia é que o usuario nunca possa registrar zero como nota, no minimo 1.

Edited by eliezertradutor
Problema resolvido

Share this post


Link to post
Share on other sites

eliezertradutor

Você está usando o DO WHILE e este comando DO SEMPRE faz o que estã entre { } pelo menos uma vez.

 

Eu recomendo você a trocar o comando DO WHILE por apenas WHILE que tem o comportamento diferente, que é FAÇA SE ATENDER A CONDIÇÃO, no seu caso se ele digitar 0 ele atende então ele faz, caso contrário ele não faz.

 

Recomendo você ler esse artigo explicando sobre DO/WHILE e apenas WHILE: DevMedia - Do/While e apenas While.

 

Troque isso:

   do {
        printf ("digite 1 como nota\n");
        scanf ("%d", &nota1);
    } while (nota1==0);

Por isso:

   while (nota1==0) {
        printf ("digite 1 como nota\n");
        scanf ("%d", &nota1);
        nota1= nota1 + 1;
    };

Se a minha resposta for útil não esqueça de agradecer e votar positivo.

 

Espero ter ajudado de alguma forma.

 

Att
Felipe Guedes Coutinho

Share this post


Link to post
Share on other sites

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

  • Similar Content

    • By jonata paulino
      Eu tenho 4 colunas com valores numéricos e gostaria de tirar a média linha por linha dessas colunas e criar uma nova com essas médias.
      Obrigado
    • By EliseuFirmino
      Bom dia pessoal!
       
      Tenho a seguinte consulta: 
       
      SELECT
          to_char(a.dt_entrada,'yyyy') ano,
          COUNT(A.NR_ATENDIMENTO) total_atendimento,
          COUNT(A.NR_ATENDIMENTO)/12 media

      FROM TASY.ATENDIMENTOS_V A
      WHERE decode(upper(:tp_data), 'E', a.dt_entrada, 'A', a.dt_alta)  BETWEEN :DT_INICIAL AND TASY.FIM_DIA(:DT_FINAL)
      and a.dt_cancelamento is null
      and a.cd_setor_atendimento in (126,130, 132, 29)
      and to_number(a.cd_estabelecimento) = 1
      group by to_char(a.dt_entrada,'yyyy')
      order by 1 desc
       
      Com o seguinte retorno:
      ano       total_atendimento                    media
      2018              21570                                1797,5
      2017              21369                                1780,75
      2016              16469                                1372,41666666667
      2015              10736                                894,666666666667
       
      Nela vejo a média de atendimentos em casa ano. Numa consulta de 1 de jan de 2015 até 31 de dez de 2017, tudo funciona normalmente. Mas se eu colocar por exemplo de 1 de jan de 2015 até  30 de set de 2018, tenho um problema. Deveria dividir por 9 e não por 12.
      Alguém saberia me indicar como devo realizar esta consulta de forma a calcular os meses que estão no período indicado, com quebra por ano?
       
    • By 555545asasasa
      Alguem podia fazer um pequeno codigo de uma Media Ponderada em PHP, com datas ?
       
      $date1 = strtotime("12/16/2016");
      $date2 = strtotime("12/23/2016");
      $date3 = strtotime("01/01/2017");
    • By darthmagus
      Escreva um programa que calcule a média dos números digitados pelo usuário, se eles forem pares. O programa deve terminar a leitura se o usuário digitar zero.
       
      Isso foi o que fiz até agora, mas não deu muito certo:
       
        main(void){
              setlocale(LC_ALL,"Portuguese");
              int n1, n2, n3;
              float media;
              int i;
              printf("Digite o 1º número: ");
              scanf("%d", &n1);
              printf("Digite o 2º número: ");
              scanf("%d", &n2);
              printf("Digite o 3º número: ");
              scanf("%d", &n3);
              while (n1%2 ==0 && n2%2 ==0 && n3%2 == 0) {
                  media = (n1 + n2 + n3)
              }
              printf("%d", media);
          return 0;
          system ("pause");
      }
       
    • By rickbonini
      Olá, meu nome é Henrique, sou iniciante na área de programação e estou começando a fazer uns projetos simples no javascript, só pratica mesmo. Estou tentando fazer o exemplo clássico de tirar a média do aluno, pra mim , de novo iniciante na área, parece tudo certo, mas quando vou executar dá erro. Olhem e me dizem o que não estou vendo :) 
       
      alunos = []                  for (i=1; i<=1; i++) {             nome = prompt("Digite o nome do aluno.");             nota1 = parseInt(prompt("Digite a primeira nota do aluno " + nome));             nota2 = parseInt(prompt("Digite a segunda nota do aluno " + nome));             aluno = {                 nomes: nome,                 notas1: nota1,                 notas2: nota2,                 media: 0,                 situacao: ""             }             alunos.push(aluno)         }         for (i=0; i<alunos.length; i++){             alunos.media = (alunos.notas1 + alunos.notas2) / 2         }         media_all_alunos = 0;         for (i=0; i<alunos.length; i++) {             media_all_alunos = media_all_alunos + alunos.media         }             media_real = media_all_alunos / alunos.length             document.write("A média da classe: " + media_real + "<br>")         if (alunos.media>=6){             situacao = "Aprovado"         }         else if (alunos.media<=4){             situacao = "Reprovado"         }         else{             situacao = "Recuperação"         }         alunos.situacao = situacao           document.write("Aluno: " + alunos.nomes + "<br>");         document.write("1ª Nota:  " + alunos.notas1 + "<br>");         document.write("2ª Nota:  " + alunos.notas2 +  "<br>");         document.write("Média:  " + alunos.media + "<br>")         document.write("===================================================== <br>")                  alunos_Aprovado = 0;         alunos_Reprovado = 0;         alunos_rec = 0;         for (i=0; i<alunos.length; i++){             if (alunos.situacao == "Aprovado") {                 alunos_Aprovado = alunos_Aprovado + 1             }             else if (alunos.situacao == "Reprovado") {                 alunos_Reprovado = alunos_Reprovado + 1             }             else {                 alunos_rec = alunos_rec + 1             }         }         document.write("Alunos Aprovados: " + alunos_Aprovado + "<br>")         document.write("Alunos Reprovados: " + alunos_Reprovado + "<br>")         document.write("Alunos em Recuperação: " + alunos_rec + "<br>")  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.