Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida em exercício de programação em C - While


zennom

Pergunta

Bom dia pessoal!!

Estou no primeiro semestre de Ciências da Computação e estou fazendo algumas atividades em Linguagem C. Entretanto, estou com dificuldade nesse exercício:

Faça um programa que receba como entrada, uma lista de números positivos ou
negativos, finalizando as entradas com o número zero e forneça como saída, a soma dos
números positivos, soma dos números negativos e a soma das duas somas parciais.


Pelo que eu entendi eu devo solicitar numeros positivos ou negativos ao usuários, se ele digitar o número 0 devo finalizar o programa, somar os positivos e negativos e mostrar o resultado deles. Mas, estou com muita dificuldade para resolver, estamos no módulo while, então preciso resiolver utilizando while ou do while.
Tentei desenvolver o programa e ficou mais ou menos assim:
 

 

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

main ()

{
int contador=0,resultado,n1;

contador=0;

while (contador<=5)
{
printf("digite um numero :");
scanf("%d",&n1);
contador ++;
}

if (n1!=0)
{
resultado=(n1+n1+n1+n1+n1);
printf("o resultado e %d",resultado);
}

else 
{
printf("encerrando programa");
}

system ("pause");
}
 

 

Observações: Quando eu vou digitar 0 o programa não se encerra, queria saber o porquê disso.

Lembrando que eu sou iniciante em programação e gostaria que vocês, experientes nisso me dessem dicas ou clareassem a minha cabeça para que eu possa resolver esse problema e entender.

Obrigada pessoal :)

Editado por zennom
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olá!

 

Sou iniciante em C, mas acho que posso lhe ajudar . . .

 

A forma como vou lhe explicar é baseada em um código antigo que tenho e que acho que pode lhe ser bem simples de entender.

 

- Você vai ter de criar 4 variáveis:

 

uma para a entrada dos números digitados – int numeros_entrada = 1;

uma para somar apenas os números positivos – int numeros_positivos = 0;

uma para somar apenas os números negativos – int numeros_negativos = 0;

uma para somar o total de números positivos com o de números negativos – int soma_numeros = 0;

 

- sendo que eu iniciei essa variável int numero_entrada = 1; porque caso eu iniciasse com ” 0 ” a condição do laço while() se tornaria falsa e o código não seria executado, sendo essa a exceção todas as outras você pode iniciar com “ 0 ”

 

- Bom você vai ter que criar um laço while que seja executado continuamente ate que a condição se torne falsa, ou seja, ate que o numero “ zero ” seja digitado, então não faz sentido você colocar while ( contador < 5 ), a não ser que você tenha pensado em limitar o numero máximo de números que o usuário possa vir a digitar ! ! ! O ideal seria while ( numeros_entrada != 0 ), então a sua variável “ contador ” pelo menos neste programa com estas especificações não serve para nada, apague ela do seu código

 

- da forma que eu vou lhe ajudar esta parte é completamente irrelevante, além de estar errada, então vou simplesmente retirá-la do programa:

 

if (n1!=0)
{
resultado=(n1+n1+n1+n1+n1);
printf("\no resultado e %d",resultado);
}
else
{
printf("\nencerrando programa\n");
}

 

Aqui está o código + ou – como deve ser e com alguns comentários:

 

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

int main ()

{

/*lembrando que se iniciasse a variavel numero_entrada com " zero ", o while não será executado*/

int numero_entrada = 1;

int numeros_positivos = 0;
int numeros_negativos = 0;
int soma_numeros = 0;

/*enquanto numero_entrada for diferente de " 0 " o codigo dentro do while será executado*/

while ( numero_entrada != 0 )

     {
        printf ( "\nDigite um numero :" );
        scanf ( "%d", &numero_entrada );

/* é aqui onde a magica acontece, voce tem de criar uma estrutura com IFs que vão avaliar o numero digitado e decidir
como o numero vai ser processado, e tendo em mente que os IFs serão executados DENTRO do laço while */

        if ( numero_entrada > 0 ) /*se o numero digitado for maior que " zero " POSITIVO ele será somado a variavel numeros_positivos*/
          {
             numeros_positivos = numeros_positivos + numero_entrada;
          }
           else /* caso contrario se o numero digitado for menor que " zero " NEGATIVO ele será somado a variavel numeros_negativos*/
                {
                   numeros_negativos = numeros_negativos + numero_entrada;
                }
     }

/* aqui é realizada a soma do total de números positivos com a do total números negativos apenas observando
que tive de multiplicar numeros_negativos por " -1 " convertendo-o para positivo pois caso contrario o
computador realizaria o calculo de forma diferente ! ! ! */

         soma_numeros = ( numeros_negativos * -1 ) + numeros_positivos;

         printf ( "\nA Soma dos Números Positivos é %d\n", numeros_positivos );
         printf ( "\nA Soma dos Números Negativos é %d\n", numeros_negativos );

         printf ( "\nA Soma dos Positivos com os Negativos é %d\n", soma_numeros );

         return 0;

}

 

Acho que este código e dicas possam lhe dar alguma luz para resolver o problema . . .

 

Ubuntu 14.04  GCC 4.8  CodeBlocks 13.12

 

Espero Ter Ajudado ! ! !

 

 

Editado por Felipe-Petrópolis
Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde Felipe,

entendi o que você quis dizer (: 

 

só que, não deveria ter colocado uma "quantia" exata para os números digitados?

 

por exemplo, se você for testar o código, e eu digitar um número que não seja zero ele não vai calcular nada...

 

apenas mostrar 'digite um número:' infinito xD

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...