Ir ao conteúdo
  • Cadastre-se

C Exercício de programação em C


phil96

Posts recomendados

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;
}


 

Link para o comentário
Compartilhar em outros sites

@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.

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

#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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

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...