Ir ao conteúdo
  • Cadastre-se
volpatoc

C Programa de soma dos impares e multiplicação dos pares

Recommended Posts

Preciso criar um programa aonde o usuário escolhe um numero de 1 a 20, em seguida escolhe a opção 1 para somar os impares ou 2 para multiplicar os pares utilizando o while, caso o usuário digite acima de 21 ou qualquer numero diferente de 1 ou 2 escrever opção invalida. Alguém pode me dar uma luz ai em como organizar? as contas para somar os impares e multiplicar os pares só não to conseguindo organizar certinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem vindo, @volpatoc! Tente explicar melhor o que você precisa!

Você tem uma condição: Enquanto o nº for menor que 20;

Depois  o usuário escolhe se o programa vai somar os impares e multiplicar os pares?

Já fez alguma coisa? Poste o enunciado e o que já fez, conforme o @isrnick pediu.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@isrnick @André Ferreira da Silva  Isso eu preciso criar um programa aonde o usuario escolhe um numero de 1 a 20 e logo após escolhe se quer que some os impares de 1 ate o numero escolhido ou multiplique os pares de 1 ate o numero escolhido. 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
22 horas atrás, volpatoc disse:

@isrnick @André Ferreira da Silva  Isso eu preciso criar um programa aonde o usuario escolhe um numero de 1 a 20 e logo após escolhe se quer que some os impares de 1 ate o numero escolhido ou multiplique os pares de 1 ate o numero escolhido.imageproxy.php?img=&key=932d69d8514fc575imageproxy.php?img=&key=932d69d8514fc575imageproxy.php?img=&key=932d69d8514fc575imageproxy.php?img=&key=932d69d8514fc575imageproxy.php?img=&key=932d69d8514fc575 

Vamos ver, já adianto que é complicado querer ensinar alguém a pensar porque a lógica de uma pessoa pode ser diferente da lógica de outra, mas vamos tentar ordenar os passos de um programa...

  • Recebe um número
  • Enquanto este número for maior que 20, o programa não aceita e continua pedindo este número.
  • Aceitou o número, inicie um multiplicador, um contador e um acumulador
  • Enquanto o acumulador for menor que o número aceito
  • Para o multiplicador, o mesmo atribui o valor atual vezes o valor acumulador
  • Para o somador, o mesmo atribui o valor inicial mais o valor acumulador
  • Note que após as operações, o valor do acumulador deve ser incrementado

Pode obedecer esses passos, pode inverter alguns passos... Como disse antes, é complicado ensinar alguém a pensar.

Como sempre falo em todos os tópicos sobre programação, colocando comentários nas linhas de seu programa lhe ajuda a pensar de maneira sequencial.

Desejo sucesso em seu aprendizado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue o que consegui fazer @André Ferreira da Silva @isrnick porém em um deles eu preciso modificar o for por while e eu preciso adicionar a restrição de que caso o usuário insira um numero maior que 20 e na segunda etapa insira um numero diferente de 1 e 2 ele escreva opção inválida

31870952_1772949572770016_8936260559813214208_n.jpg

31882848_1772949606103346_7122861269350088704_n.jpg

adicionado 0 minutos depois

e também preciso unir os dois em um programa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilizando um 'while' para receber um número menor que 20, você pode utilizar:

/*

scanf ("%d", a);

while a>20{

         printf("Digite um número MENOR ou IGUAL a 20, P***!:");

         scanf("%d",a);

         }

*/

***É claro que um programa de computador não deve gritar ou falar palavrões para o usuário, só fiquei rindo de uma interação assim***

Ao invés de acrescentar '1' ao contador da soma dos números impares ou multiplicação dos pares, pode acrescentar '2' a ambos.

Um exemplo para a função soma utilizando o while:

 

int soma = 1

while (soma <=a)  //a=número inserido pelo usuário//

          soma = soma + 2;

 

Quanto a escolher entre 1 ou 2 e opção inválida, procure como utilizar corretamente a função 'SWITCH ()'

Não dependa exclusivamente de fóruns e publicações já prontas. O ideal é que vá a alguma livraria ou sebo e procure por um livro que se encaixe ao seu perfil como autodidata. Como disse antes, é complicado ensinar a alguém como pensar.

Desejo sucesso em seu aprendizado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@André Ferreira da Silva consegue me dar uma luz aonde está errado?

 

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

main(){

int a, b;

printf("\n Insira um numero inteiro, positivo, menor ou igual a 20: ");
scanf("%d", &a);
printf("\n Digite 1 para somar os impares ou 2 para multiplicar os pares até o numero indicado: ");
scanf("%d", &b);
{
    if (b=1);
}

int i=a;

int soma=0;

for(i=0 ; i<=a ; i++)

{
if(i%2!=0)

soma=soma+i;

}

printf("\n O valor da soma dos impares e:\%d", soma);
}
{
    if (b=2);
}
{

int i=a;

int multiplicacao=2;
while (a!=20){
        if(a%2==0){
                multiplicacao *= a;
        }
        ++a;
}
printf("multiplicacao dos numeros pares: %d", multiplicacao);
{
    if (b>=3);
    {
        printf("\n Opcao invalida");
            }
}

{
    if (a>20);
    {
        printf ("\n Opcao invalida");
    }
}
{
    if (a<0);
    {
        printf ("\n Opcao invalida");
    }
}
{
    if (b<=0);
    {
        printf ("\n Opcao invalida");
    }
}
system ("pause");
return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, volpatoc disse:

@André Ferreira da Silva consegue me dar uma luz aonde está errado?

 


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

main(){

int a, b;

printf("\n Insira um numero inteiro, positivo, menor ou igual a 20: ");
scanf("%d", &a);
printf("\n Digite 1 para somar os impares ou 2 para multiplicar os pares até o numero indicado: ");
scanf("%d", &b);
{
    if (b=1);
}

int i=a;

int soma=0;

for(i=0 ; i<=a ; i++)

{
if(i%2!=0)

soma=soma+i;

}

printf("\n O valor da soma dos impares e:\%d", soma);
}
{
    if (b=2);
}
{

int i=a;

int multiplicacao=2;
while (a!=20){
        if(a%2==0){
                multiplicacao *= a;
        }
        ++a;
}
printf("multiplicacao dos numeros pares: %d", multiplicacao);
{
    if (b>=3);
    {
        printf("\n Opcao invalida");
            }
}

{
    if (a>20);
    {
        printf ("\n Opcao invalida");
    }
}
{
    if (a<0);
    {
        printf ("\n Opcao invalida");
    }
}
{
    if (b<=0);
    {
        printf ("\n Opcao invalida");
    }
}
system ("pause");
return 0;
}

 

 

Boa tarde

 

Devo lhe perguntar, por que poe ";"(ponto e virgula) na frente dos "if"?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o @Leonardo0308 mencionou acima, operadores condicionais (if, else, while) verificam uma condição e executam um procedimento, não são um procedimento.

Você pode declarar uma variável para acumular os valores processados e uma variável para contador.

Vamos tentar ajudar...

int a, b, st1, cont1;                                                                           //declaração das variáveis

printf ("Insira um número menor ou igual a 20:");         //Solicitação de entrada

scanf ("%d",a);                                                              //Leitura do dado de entrada

while (a>20)                                                                 //Verificação condicional para executar o programa

{

  printf("Insira um número MENOR ou IGUAL a 20");

  scanf("%d",&a);

}                                                                                   

/*Até aqui, é só para o programa aceitar um número até 20

agora vamos as instruções do programa*/

printf("Digite:"\n);

printf("1 - para somar os números impares até %d",a)\n;   

printf("2 - para multiplicar os números pares até %d",a)\n;

scanf("%d",&b);

if (b==1)                 //Condição para fazer a contagem dos impares//

/*Cuidado para não confundir o operador de atribuição (=) com o de igualdade (==)*/

{

st1 = 1;

cont1=3;                //O primeiro número impar é 1, o próximo é 3// 

while (cont1 <= a)

         {

         st1 = st1+cont1;                                      //Operação de soma//

         cont1 = cont1 + 2;                                   //Somar 2 faz a variável 'cont1' ir para o próximo número impar//

          }                                 

         printf ("Soma dos impares ="%d,st1);    //Impressão do valor armazenado//

                                                                    //Finaliza este 'while'//

}                             //Finaliza o if//

 

else                       //abre o outro condicional para o if//

{

    if (b==2)           //Abre um outro 'if' dentro do 'else'//

    {

    st1=2;              //O primeiro número par é 2//

   cont1=0;             //Se colocar 2, pode gerar um resultado errado, mas a primeira iteração do programa será = 0//

         while (cont1<=a)  

         {

          st1=st1 * cont1;             //Operação de multiplicação//

          cont1=cont1 + 2;

          }

          printf("Multiplicação dos pares: %d", st1);

    else

    printf ("Opção inválida")                      // Opção para qualquer outro valor de b//

    }         //fecha um if//

}             //fecha outro if//

 

*Escrevi sem compilar, sem testar, tudo da cabeça na hora...Pode ser que o CTRL C / CTRL V para o compilador não funcione...*

**Lembra que eu disse para colocar comentários nas linhas?**

***Utilizando a função 'switch ()' ficaria mais simples...***

****Essa foi a minha maneira de programar o que descreveu, com base no que já fez. Por isso que eu disse que é complicado ensinar alguém a pensar****

 

Desejo sucesso em seu aprendizado! Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×