Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eliezertradutor

Programa em C (Resolvido)

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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por chalamisterio
      Oi boa noite sou novo na programação e também no javaScript.
      Estou tentando fazer um Exercício onde é digitado a quantidade de Alunos é adicionada.
      Após a isso é digitado o nome do aluno e suas três notas.
      O programa deve calcula a média e dizer o status do aluno. Se é aprovado ou em exame e reprovado.
      o código parece estar corrento mas não exibe não na tela.
      Acho que nem entra no Loop do for
      Mas se alguém puder me ajudar fico grato
       



    • Por Hashira do Vento
      O exercício pede o que eu faça um código com uma matriz, onde eu peça uma linha qualquer ao usuário, e nela será feito a soma ou média dos elementos contidos.
      O problema é na hora da decisão do usuário na hora de escolher entre média ou soma, escrevendo a letra inicial de uma dessa palavras em maiúsculo. O "If" simplesmente não funciona, e eu acho que seja essa minha dificuldade, pois quando tirei o if, a soma funcionou normalmente (com o código atual a soma fica igual a zero no printf final). E sim, eu pesquisei a fundo sobre o tipo char, mas mesmo assim não consegui resposta alguma para a solução do meu problema :/
      Segue o código:
      Obs: Claramente, o meu código não está terminado (ainda falta pôr a parte da média), a partir do momento em que eu solucionar esse problema principal, creio que conseguirei finalizá-lo sem mais contratempos.
       
      #include <stdio.h> #include <stdlib.h> #include <locale> int main (void){ setlocale (LC_ALL, "Portuguese"); float M [2][2], media; int lin, x, soma1, soma2; char op[5]; printf ("Preencha a matriz: \n"); for (int l = 0; l<2; l++) { //linha for (int c = 0; c<2; c++ ) { //coluna scanf ("%f", &M[l][c]); } } printf ("Que operação você quer? S ou M?\n"); //Entrada do char, escolha da operação scanf ("%s", op); printf ("Em qual linha da matriz a operação deve ser realizada?\n"); scanf ("%d", &x); for (int l = x; l==x; l++) { for (int c = 0; c<2; c++ ){ printf ("%f \n", M[l][c]);//só mostrando os numeros da linha (ignore) if (op=="S") //tenho quase certeza que o problema se encontra aqui soma1= M[l][c]+soma1; } } printf ("O resultado da soma deu %d", soma1); //e na hora de mostrar a soma, ela sempre aparece como zero }
    • Por 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
    • Por 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?
       
    • Por 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");
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.