Jump to content
Fórum Script Brasil
  • 0

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


zennom
 Share

Question

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 :)

Edited by zennom
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 ! ! !

 

 

Edited by Felipe-Petrópolis
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.9k
    • Total Posts
      646.8k
×
×
  • Create New...