none
Soma dos múltiplos de 7 menores do que 1000.

    Pergunta

  • Qual o erro deste código ? ?

    #include <stdio.h>

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

    for(i=1; soma<1000; i++);
    {
       if (i%7==0)
            {
                soma += i;

            }


    }
        printf("%d", soma);

    return 0;
    }

    Cumprimentos...

    quinta-feira, 31 de outubro de 2013 23:26

Respostas

  • Léo, se você quer somar todos os números que são divisores por 7.

    Por Exemplo: 7 + 14 + 21 + 28, então você terá que deixar seu código assim:

    #include <stdio.h>
     
    
    int main()
     {
       
     int i = 7,soma=0;
     
     
     while (i%7==0 && i <= 1000)
             {
                 soma = soma + i;
                 i = i+7;
             }
             
     
        printf("%d", soma);
         
         getch("");
     
    return 0;
     }
     
    
    



    Espero ter ajudado, bons Estudos !


    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.


    quinta-feira, 31 de outubro de 2013 23:54
  • Você já pensou que se são multiplos de 7, você pode simplesmente ir somando 7 no seu iterador?

    Da seguinte forma:

    #include <stdio.h>
    int main()
    {
    int i=0, soma=0;
    
    while(i<=1000);
    {
       i+=7;
       soma += i;
    
    }
        printf("%d", soma);
    
    return 0;
    }

    Assim fica mais rápido e correto da mesma maneira.

    O erro no seu código é que você está verificando a soma <1000 e não seu iterador.
    Se foi útil marca como resposta!

    Abraço!


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski


    sexta-feira, 1 de novembro de 2013 00:41
  • Boa tarde,

    Eu não entendi o porque de você colocar o return 0; no seu código.

    Se você tirar o return 0; e colocar um system("pause"); ele ira retornar um resultado para você. 

    Porem, não será o correto, pois você precisa validar se o numero é divisor de 7. fazendo um if

    if(i % 7 == 0){

    \\...

    }

    Faça dessa forma que ira funcionar:

    #include<stdio.h>
    
    int main(){
    
    int i, soma;
    
    soma = 0;
    
    for(i = 0; i < 1000; i++){
    if(i % 7 == 0){
    soma = soma += i;
    }
    }
    printf("A soma e: %d", soma);
    printf("\n\n");
    system("pause");

    Att,


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Léo29 sábado, 2 de novembro de 2013 00:31
    sexta-feira, 1 de novembro de 2013 15:26

Todas as Respostas

  • Léo, se você quer somar todos os números que são divisores por 7.

    Por Exemplo: 7 + 14 + 21 + 28, então você terá que deixar seu código assim:

    #include <stdio.h>
     
    
    int main()
     {
       
     int i = 7,soma=0;
     
     
     while (i%7==0 && i <= 1000)
             {
                 soma = soma + i;
                 i = i+7;
             }
             
     
        printf("%d", soma);
         
         getch("");
     
    return 0;
     }
     
    
    



    Espero ter ajudado, bons Estudos !


    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.


    quinta-feira, 31 de outubro de 2013 23:54
  • Você já pensou que se são multiplos de 7, você pode simplesmente ir somando 7 no seu iterador?

    Da seguinte forma:

    #include <stdio.h>
    int main()
    {
    int i=0, soma=0;
    
    while(i<=1000);
    {
       i+=7;
       soma += i;
    
    }
        printf("%d", soma);
    
    return 0;
    }

    Assim fica mais rápido e correto da mesma maneira.

    O erro no seu código é que você está verificando a soma <1000 e não seu iterador.
    Se foi útil marca como resposta!

    Abraço!


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski


    sexta-feira, 1 de novembro de 2013 00:41
  • Sim ajudou, dessa forma dá o resultado e faz sentido (tirando o ; do while)... Agradeço.

    Já percebi que algumas partes do meu código não fazem sentido, mas estava era a achar estranho ele não devolver nada... 

    Neste caso que me parece que já faria sentido na mesma num ciclo for e continua sem devolver nada:

    #include <stdio.h>

    int main()
    {
    int i, soma, x;

    for(i=1; x<994; i++);
    {
    soma += 7 *i;
    x = 7*i;
    }

    printf("%d", soma);

    return 0;
    }

    Passando o meu raciocínio do meu ciclo for para do while já dá o mesmo resultado que o seu código. 

    #include <stdio.h>

    int main()
    {
    int i=1, soma=0, x;

    do
    {
    soma+= 7 *i;
    x = 7*i;

    i++;
    }


        while(x<994);

        printf("%d",soma);
    return 0;

    }

    A minha questão é qual o problema deste cilco for para ele não funcionar ? 

    Cumprimentos...


    • Editado Léo29 sábado, 2 de novembro de 2013 00:25 correção
    sexta-feira, 1 de novembro de 2013 00:50
  • Boa tarde,

    Eu não entendi o porque de você colocar o return 0; no seu código.

    Se você tirar o return 0; e colocar um system("pause"); ele ira retornar um resultado para você. 

    Porem, não será o correto, pois você precisa validar se o numero é divisor de 7. fazendo um if

    if(i % 7 == 0){

    \\...

    }

    Faça dessa forma que ira funcionar:

    #include<stdio.h>
    
    int main(){
    
    int i, soma;
    
    soma = 0;
    
    for(i = 0; i < 1000; i++){
    if(i % 7 == 0){
    soma = soma += i;
    }
    }
    printf("A soma e: %d", soma);
    printf("\n\n");
    system("pause");

    Att,


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Léo29 sábado, 2 de novembro de 2013 00:31
    sexta-feira, 1 de novembro de 2013 15:26
  • Boa noite, 

    Giovani Cruzara,

    Eu estou a começar agora a aprender a programar em c... Não sei o porquê do  return 0; mas se o seu código em vez de ter system("pause"); tiver return 0; funciona da mesma forma.

    O que eu não percebo é o porquê deste ciclo for não devolver nenhum valor, eu no ciclo for que fiz, a maneira como valido se são múltiplos de 7 é multiplicando 7 por i e ir somando. 

    soma += 7*i;

    ou seja, o i vai incrementando soma = 0 + 7 * 1 que vai dar soma =7, de seguida soma = 7 + 14, de seguida soma = 21 + 21.. ok, percebi agora porque não vai somar os múltiplos de 7.

    Só faltou fechar no seu ciclo }.

    Muito obrigado a todos !!

    Cumprimentos...

    sábado, 2 de novembro de 2013 00:23
  • Boa noite, 

    Jean Carlos Galhardi


    Muito obrigado, o seu código funciona na perfeição, eu é que estava a pensar mal... 

    De qualquer das formas mesmo o código não fazendo sentido para o problema estava à espera que ele devolve-se na mesma algum valor.

    Cumprimentos, 

    Bom trabalho.

    sábado, 2 de novembro de 2013 00:30