1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

programa basico em c

Discussão em 'Programação' iniciada por sarafrazao, 27 de Junho de 2012. (Respostas: 17; Visualizações: 1268)

  1. Elabore um programa, que some números inteiros fornecidos pelo utilizador, até ser introduzido o
    valor 0 (zero). No final deverá indicar a soma dos números introduzidos. Nota: O utilizador introduz
    um número de cada vez.


    #include <stdio.h>
    #include <stdlib.h>


    int main()
    {
    int num, soma=0;


    do {
    printf("introduza um numero inteiro\n");
    scanf(" %d", &num);}
    while(num != 0);
    printf("A soma dos numeros e %d\n", soma=soma+num);




    return 0;
    }


    foi o que eu fiz... Desculpem a ignorancia... Se me puderem corrigir fico desde ja agradeçida
     
  2. heyjack7

    heyjack7 Power Member

    estás a somar os numeros fora do ciclo.
     
  3. dagas46

    dagas46 Power Member

    Como o heyjack disse estás a somar os números fora do ciclo.

    Sugestão:

    1 - A seguir ao scanf faz soma=soma+num;

    2 - No último printf faz printf(".....%d\n", soma);
     
  4. Obrigado vou testar
     


  5. É isso tudo... Muito obrigado
     
  6. Desculpa estar a chatear outra vez.

    Mas se eu agora quisesse que o programa soma-se e depois calcula-se a media como faria?
     
  7. turambar1337

    turambar1337 Power Member

    Declara C=0 (de contar) e m=0(Média), e antes do while metes: c=c+1;
    depois do while fazes: printf("A média dos números é: ", m=c/soma);

    E está feito :D
     
  8. nfk

    nfk Power Member

    Tens de ter uma variável que inicializas a zero e é incrementada dentro do ciclo while. No fim, depois de fechares o ciclo, divides a soma por essa variável.
     
  9. Fiz como disseste e nao esta a funcionar, devo de ser eu que estou a fazer algo de mal.



    #include <stdio.h>
    #include <stdlib.h>




    int main()
    {
    int num, soma=0, media=0, contar=0;




    do {
    printf("introduza um numero inteiro\n");
    scanf(" %d", &num);
    soma=soma+num;
    contar=contar+1;
    }
    while(num != 0);


    printf("A soma dos numeros e %d\n", media=contar/soma);








    return 0;
    }

    foi assim que fiz, estou a fazer mal??

    desde ja muito obrigado pela ajuda
     
  10. pfv se me pudessem dizer o que estou a fazer de mal. Ajudariam muito
     
  11. dagas46

    dagas46 Power Member

    A média é soma/nº_elementos, logo no último printf tens ao contrário. Troca o media=contar/soma por media=soma/contar.

    E convém declarares a média e a soma ou o contar também como float porque senão vais ter sempre um resultado inteiro

    Assim em princípio fica correcto.

    Se quiseres, podes também alterar o contar=contar+1 por contar++ ou então por contar+=1

    Qualquer coisa deste género:
    Código:
    [COLOR=#7F4726][FONT=Menlo]#include [COLOR=#e20300]<stdio.h>
    [/COLOR][/FONT][/COLOR][COLOR=#e20300][COLOR=#7f4726]#include [/COLOR]<stdlib.h>[/COLOR]
    
    
    [COLOR=#cc00a2]int[/COLOR] main()
    {
        [COLOR=#cc00a2]int[/COLOR] num, contar=[COLOR=#3d00db]0[/COLOR];
        [COLOR=#cc00a2]float[/COLOR] soma=[COLOR=#3d00db]0[/COLOR], media=[COLOR=#3d00db]0[/COLOR];
        
        [COLOR=#cc00a2]do[/COLOR] {
    [COLOR=#e20300][COLOR=#000000]        printf([/COLOR]"introduza um numero inteiro\n"[COLOR=#000000]);[/COLOR][/COLOR]
            scanf([COLOR=#e20300]"%d"[/COLOR], &num);
            soma=soma+num;
            contar++;
        }
        [COLOR=#cc00a2]while[/COLOR](num != [COLOR=#3d00db]0[/COLOR]);
        
        media=soma/contar;
        
    [COLOR=#e20300][COLOR=#000000]    printf([/COLOR]"A soma dos numeros e %f\n"[COLOR=#000000], soma);[/COLOR][/COLOR]
    [COLOR=#e20300][COLOR=#000000]    printf([/COLOR]"A media dos numeros e %f\n"[COLOR=#000000], media);[/COLOR][/COLOR]
        
        
    [COLOR=#cc00a2][COLOR=#000000]    [/COLOR]return[COLOR=#3d00db]0[/COLOR][COLOR=#000000];[/COLOR][/COLOR]
    }
    
     
    Última edição: 27 de Junho de 2012
  12. Agora ja da qualquer coisa, mas quando faço 10+10

    o programa depois da-me media de 6 pois também conta quando o utilizador introduz zero, ou seja em vez de dividir por 2 divide por 3
     
  13. dagas46

    dagas46 Power Member

    Isso é muito fácil de resolver. Vê a solução que pus em cima para o problema. Na linha anterior a media=soma/contar metes contar--;
     
  14. É isso mesmo... Desculpem a minha burrice ... É que isto para mim ainda é chines.
     
  15. No atletismo os treinadores estão, cada vez mais, a usar técnicas informáticas para estudarem o
    movimento dos membros e articulações tendo como objectivo conseguir um maior desempenho nos
    seus atletas. Por exemplo, no salto em comprimento filmam o salto para posteriormente analisarem a
    altura, a velocidade, o comprimento e o ângulo do centro de gravidade.
    Elabore um programa que peça ao utilizador uma sequência de comprimentos de saltos até que seja
    introduzido o valor zero. No final, o programa deverá indicar o total de saltos, o maior e menor
    comprimento bem com a média de todos os comprimentos.
    O resultado deste programa deverá estar no seguinte formato:
    Indique altura do atleta: 1.8
    Indique altura do atleta: 1.65
    Indique altura do atleta: 1.85
    Indique altura do atleta: 0
    A media das alturas e: 1.77
    Introduza um comprimento: 1.4
    Introduza um comprimento: 2.3
    Introduza um comprimento: 2.0
    Introduza um comprimento: 0
    RESULTADOS
    Total de saltos: 3
    Media: 1.9
    Maior comprimento: 2.3
    Menor comprimento: 1.4

    O ultimo que tenho para fazer é este.

    nao estou a entender como vou saber qual o maior ou menor numero
     
  16. dagas46

    dagas46 Power Member

    Já todos passámos por isso. Com o tempo vais aprendendo e melhorando. Alguma coisa estamos cá para ajudar ;)

    Esse programa aproveita muito do programa que fizeste antes. Calcular a média de alturas e a média dos comprimentos é igual à média dos números introduzidos portanto a única coisa que tens a fazer é calcular o maior e menor saltos.

    Para isso declaras as variáveis maior e menor iguais a 0 e ambas como float.

    fazes um scanf para o comprimento do salto, se for diferente de 0, como é o 1º salto vai ser o maior e o menor salto simultaneamente. assim sendo fazes maior=distancia_de_salto e menor=distancia_de_salto e já não entras no ciclo que vem a seguir, logo fazes logo return 0;

    Caso não tenhas recebido o 0 tens de continuar a receber valores, logo fazes o mesmo ciclo que tinhas feito no programa anterior e lá dentro vês se o número introduzido é maior que o maior, se for, actualizas o maior. E fazes o mesmo para o menor.
     
    Última edição: 27 de Junho de 2012

  17. Mais uma vez muito obrigado... Até breve
     
  18. turambar1337

    turambar1337 Power Member

    Eheh, pus-te a média ao contrário, era soma/contar em vez de contar/soma :p

    É a pressa! Mas a lógica estava certa, já não mexo em C a bue.
     

Partilhar esta Página