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

C - Somador

Discussão em 'Programação' iniciada por Yannick, 24 de Fevereiro de 2008. (Respostas: 19; Visualizações: 1710)

  1. Yannick

    Yannick Power Member

    Olá, eu queria fazer algo do tipo, eu digo ao programa qual é o máximo que vai somar e ele soma até aí de um a um... tipo digo que o máximo vai ser 10 e ele soma 1+2+3+4, dizendo qual foi o último número k foi somado.
     
  2. sapropel

    sapropel Power Member

    basta um loot, como não disseste a linguagem fica aqui um em C:
    Código:
    int N = 10;
    int resultadoFinal = 0;
    
    for( int i = 1; i < N; i++ )
        resultadoFinal += i;
    
    btw: ali no for é i < N ou i <= N conforme se é para incluir o maximo ou não.
     
  3. Isso faz-se com um ciclo e um acumulador. ;)
     
  4. Yannick

    Yannick Power Member

    n e bem assim k eu keria o programa...Soma de de 1 a 1 até a soma ser igual a 10 dizendo o ultimo numero.
    porque aí parece-me que vai somar tudo até ao ultimo numero antes do máximo...
    é qualquer coisa do tipo: Defino máximo=6 ele vai somar, 1+2+3 = 6, e o ultimo numero é o 3.
     
  5. Baderous

    Baderous Banido

    Corrigindo o código do sapropel:
    Código:
    int N = 10;
    int resultadoFinal = 0;
    
    for( int i = 1; [color=red]resultadoFinal[/color] < N; i++ )
        resultadoFinal += i;
     
  6. sapropel

    sapropel Power Member

    peço desculpa se estiver errado mas o que ele quer não é somar todos os numeros anteriores a um numero dado?

    o exemplo 10 outra vez: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45
    no código que postei faz exactamente isso, soma ao resultadoFinal o numero em i, antes que este chegue a N

    ou então percebi a pergunta mal =)
     
  7. Yannick

    Yannick Power Member

    não, não... é somar numeros até o resultado dessa soma ser 10...
     
  8. Baderous

    Baderous Banido

    Percebeste mal.
     
  9. balute

    balute Power Member

    Re-corrigindo o código do sapropel:
    Código:
    int N = 10;
    int resultadoFinal;
    int [COLOR=Red]soma[/COLOR] = 0;
    
    for( int i = 1; [COLOR=red]soma[/COLOR] < N; i++ )
    {
        soma += i;
        resultadoFinal = i;
    }
    Penso que seja isto
     
  10. Baderous

    Baderous Banido

    Não era preciso mais uma variável, bastava que se devolvesse o i-1 para obter o último número somado.
     
  11. balute

    balute Power Member

    Como é que fazias isso?
     
  12. Yannick

    Yannick Power Member

    #include <stdio.h>

    int main(void){
    int limite;
    int numerofinal;
    int i;

    printf("Qual e o limite? ");
    scanf("%d",limite);

    for(i=1;numerofinal<limite;i++){
    numerofinal +=i;

    }
    printf("O ultimo numero e %d",numerofinal);
    }



    Tenho isto, e dá-me k o numerofinal é 0...
     
  13. Yannick

    Yannick Power Member

    vou experimentar o do Baderous...
     
  14. Baderous

    Baderous Banido

    Com aquele código realmente não fazia, porque o i desaparece no fim do ciclo, mas podia fazer asism:

    Código:
    int main() {
    
        int i,soma=0,n;
        printf("Qual o limite?");
        scanf("%d",&n);
        for (i=1;soma<n;i++)
            soma+=i;
        printf("O ultimo numero somado: %d",i-1);
        return 0;
    }
     
  15. Yannick

    Yannick Power Member

    Isto...resultado diz que o numero final é 0.



    #include <stdio.h>

    int main(void){
    int limite;
    int numerofinal;
    int i;
    int soma=0;


    printf("Qual e o limite? ");
    scanf("%d",limite);

    for(i=1;soma<limite;i++){
    soma +=i;
    numerofinal = i;


    }
    printf("O ultimo numero e %d",numerofinal);
    }
     
  16. balute

    balute Power Member

    Então sempre precisas de mais uma variável :P
     
  17. Yannick

    Yannick Power Member

    Estranho, dá sempre 0....
     
  18. balute

    balute Power Member

    Yannick, o 2º argumento da função scanf tem que ser passado por referência. Ou seja,
    Código:
    scanf("%d",[U][B]&[/B][/U]limite)
     
  19. Baderous

    Baderous Banido

    Não, porque eu ali considero o i uma variável (mesmo que esteja dentro do ciclo). Assim tu usas 4 e eu uso 3. :D

    Yannick testa o meu código que dá.
     
  20. Yannick

    Yannick Power Member

    Baderous, obrigado... o problem era mesmo do &...lol esqueço-me sempre deste
     

Partilhar esta Página