Ir ao conteúdo

Posts recomendados

Postado

pessoal, boa tarde! Sou iniciante em programação, e estou com esse exercício em C, porém travei na parte que tenho que mostrar quais são os pares e impares, alguém consegue me dar uma luz? Pesquisei sobre vetores, porém só consegui fazer ele armazenar o último valor lido. Por exemplo, teria que imprimir assim:

 

Digite um numero ou Digite 0 para encerrar: 2
Digite um numero ou Digite 0 para encerrar: 4
Digite um numero ou Digite 0 para encerrar: 5
Digite um numero ou Digite 0 para encerrar: 7
Digite um numero ou Digite 0 para encerrar: 0

Os pares sao: 2, 4 
Os impares sao: 5, 7

A soma dos pares e: 6
A soma dos impares e: 12

o que fiz até agora:



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

int main(void)
{
    int num = 0;
    int soma_par = 0;
    int soma_impar = 0;
    int i, j;
    int vetPar[i];
    int vetImpar[j];
  



     printf("Digite um numero ou Digite 0 para encerrar: ");
      scanf("%d", &num);



    while(num != 0){

            if(num%2 == 0){
               soma_par = soma_par + num;
               vetPar[i] = num;



      }else if(num%2 != 0){
              soma_impar = soma_impar + num;
              vetImpar[j] = num;
      }


         printf("Digite um numero ou Digite 0 para encerrar: ");
           scanf("%d", &num);

    }


    printf("\nOs pares sao: %d\n", vetPar[i]);
    printf("Os impares sao: %d\n", vetImpar[j]);
    printf("\nA soma dos pares e: %d\n", soma_par);
    printf("A soma dos impares e: %d\n", soma_impar);


    return 0;
}


 

Postado

@phililipe realmente é necessário usar vetores?

 

Poste o enunciado também para ficar mais fácil de te ajudar.

 

Aqui você está iniciando o vetor com zero posições, porque você não iniciou as variáveis i e j então os valores delas são indefinidos.

    int i, j;
    int vetPar[i];
    int vetImpar[j];

por isso você só está conseguindo armazenar um valor nos vetores vetPar e vetImpar.

Postado

@kgin então, foi a forma que pensei a princípio, tentei fazer de outras formas (por exemplo, usando somente if/else), porém não consegui. Consegui caminhar com o vetor

 

9 minutos atrás, kgin disse:

Poste o enunciado também para ficar mais fácil de te ajudar.

ENUNCIADO: Elabore um programa que leia uma sequência de números inteiros. A leitura deverá terminar com o número 0. Em seguida determine e mostre na tela quais são os números pares e quais são os números ímpares. O programa deverá também apresentar a soma dos valores pares e a soma dos valores ímpares.

 

 

 

 

8 minutos atrás, kgin disse:

Aqui você está iniciando o vetor com zero posições, porque você não iniciou as variáveis i e j então os valores delas são indefinidos.

pensei em deixar indefinido, pois o usuário pode entrar com dados até que ele digite 0, por isso não coloquei um tamanho (não sei se entendi errado)

Postado
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int num = 0;
    int soma_par = 0;
    int soma_impar = 0;
    int countPar = 0;
    int countImpar = 0;
    int vetPar[100];
    int vetImpar[100];
    int i=0;
    
    printf("Digite um numero ou Digite 0 para encerrar: ");
    scanf("%d", &num);

    while(num != 0){
       
           if(num%2 == 0){
               soma_par+= num;
               vetPar[countPar] = num;
               countPar++;
           }else{
               soma_impar+= num;
              vetImpar[countImpar] = num;
              countImpar++;
           }
             
         printf("Digite um numero ou Digite 0 para encerrar: ");
         scanf("%d", &num);
    }

     printf("\nOs pares sao: ");
     
     for(i = 0; i< countPar; i++){
            printf(" %d,",vetPar[i]);    
     }
     printf("\nOs impares sao: ");
     
     for(i = 0; i < countImpar; i++){
         printf(" %d,",vetImpar[i]);    
    }

    printf("\nA soma dos pares e: %d\n", soma_par);
    printf("A soma dos impares e: %d\n", soma_impar);

    return 0;
}

 

Fiz rápido, pode está errado, mas funcionou aqui...

  • Curtir 1
Postado

@Davi Henrique Silva Cara, funcionou sim! te agradeço demais

 

7 minutos atrás, Davi Henrique Silva disse:

if(num%2 == 0){                

soma_par+= num;              

vetPar[countPar] = num;                

countPar++;

           

}else{              

soma_impar+= num;            

vetImpar[countImpar] = num;              

countImpar++;

}

não estava sabendo como fazer essa parte, consegui entender como fazer a parte de contador de vetor, muito obrigado!

  • Curtir 1
Postado
23 minutos atrás, phililipe disse:

pensei em deixar indefinido, pois o usuário pode entrar com dados até que ele digite 0, por isso não coloquei um tamanho (não sei se entendi errado)

Em C não funciona assim, você tem que definir o tamanho do vetor na declaração do mesmo.

 

Você não precisa definir esses dois vetores para guardar os números pares e impares, você só precisa definir um único vetor para guardar os números digitados.

Depois verificar se o numero e impa ou par dessa maneira.

#include <stdio.h>

#define MAX_NUMEROS 500

int main(void)
{
    int numeros[MAX_NUMEROS], contador = 0;
    
    /* Repete enquanto for diferente de 0 */
    do {
        puts("Digite um numero, para sair digite 0");
        scanf("%d%*c", &numeros[contador]);
        /* Checa se ainda tem expaço no vetor */
        if (contador >= MAX_NUMEROS-2) {
            puts("Numero maximo de registros excedido");
            numeros[contador] = 0;
        }
        /* Incrementa a variavel contador */
        contador++;
    } while (numeros[contador-1]);

    /* Mostra o vetor */
    puts("Os numeros digitados");
    for (contador = 0; numeros[contador] && contador < MAX_NUMEROS; contador++) {
        printf("%d, ", numeros[contador]);
    }
    putchar('\n');

    /* Mostra os numeros pares */
    puts("Os numeros pares foram");
    for (contador = 0; numeros[contador] && contador < MAX_NUMEROS; contador++) {
        if (!(numeros[contador]%2))
            printf("%d, ", numeros[contador]);
    }

    putchar('\n');

    getchar();
    return(0);
}

 

  • Curtir 2
Postado

@kgin

11 minutos atrás, kgin disse:

Em C não funciona assim, você tem que definir o tamanho do vetor na declaração do mesmo.

entendi! não estava compreendendo isso, agradeço pela explicação.

 

13 minutos atrás, kgin disse:

Você não precisa definir esses dois vetores para guardar os números pares e impares, você só precisa definir um único vetor para guardar os números digitados.

Depois verificar se o numero e impa ou par dessa maneira

interessante, na minha cabeça conseguia fazer apenas se utilizasse 2 vetores diferentes! vou testar dessa forma, obrigado!

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...