diegomrodrigues

Somatório de valores pares e ímpares

Nov 5th, 2020 (edited)
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.38 KB | None | 0 0
  1. /*
  2.  * Receber um valor que representa a quantidade de inteiros positivos que o
  3.  * usuário final precisa digitar. Depois, recerber essa quantidade de valores
  4.  * inteiros do usuário.
  5.  * Desconsiderar os valores repetidos digitados pelo usuário.
  6.  * Não utilizar vetores.
  7.  * Exibir a somatória dos valores pares e a somatória dos valores ímpares.
  8.  *
  9.  * Diego Mendes Rodrigues
  10.  */
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13.  
  14. // Verificar se um número está dentre os valores armazenados na memória alocada
  15. int verificar_numero(int *valores, int posicao_atual, int valor) {
  16.   if (posicao_atual > 0) {
  17.     int *ptr_verificar;
  18.     ptr_verificar = valores;
  19.  
  20.     for(int i=0;i<posicao_atual;i++) {
  21.       if (*ptr_verificar == -1) {
  22.         ptr_verificar -= i;
  23.         return 1;
  24.       }
  25.       else if (*ptr_verificar == valor) {
  26.         ptr_verificar -= i;
  27.         return 0;
  28.       }
  29.       else {
  30.         ptr_verificar++;
  31.       }
  32.     }
  33.   }
  34.   return 1;
  35. }
  36.  
  37. // FUnção principal do sistema
  38. int main(void) {
  39.   int qtd=0;
  40.  
  41.   int *valores;
  42.   int *ptr;
  43.  
  44.   printf("Quantidade de inteiros: ");
  45.   scanf("%d", &qtd);
  46.  
  47.   if (qtd < 1) {
  48.     printf("A Quantidade deve ser maior do que zero\n");
  49.     return 1;
  50.   }
  51.  
  52.   // Os valores digitados pelo usuário ficarão em uma memória alocada
  53.   // dinamicamente para armazenar inteiros
  54.   valores = (int*)malloc(sizeof(int)*qtd);
  55.   if (valores == NULL)
  56.   {
  57.     printf("Memória insuficiente!\n");
  58.     return 1;
  59.   }
  60.   ptr = valores;
  61.  
  62.   // Colocar o valor -1 em todas as posições da memória alocada
  63.   for(int i=0;i<qtd;i++) {
  64.     *ptr = -1;
  65.     ptr++;
  66.   }
  67.   ptr -= qtd;
  68.  
  69.   // Valores dos somatórios
  70.   int somapar = 0, somaimpar = 0, valor = 0;
  71.  
  72.   for(int i=0;i<qtd;i++) {
  73.     printf("Digite o %dº valor inteiro positivo: ", i+1);
  74.     scanf("%d", &valor);
  75.  
  76.     if (valor < 0){
  77.       printf("Todos os inteiros devem ser positivos!\n");
  78.       return 1;
  79.     }
  80.  
  81.     *ptr = valor;
  82.     ptr++;
  83.  
  84.     // Somar o valor na vairável somapar ou somaimpar
  85.     if (verificar_numero(valores, i, valor)) {
  86.       if (valor % 2 == 0) {
  87.         somapar += valor;
  88.       }
  89.       else {
  90.         somaimpar += valor;
  91.       }
  92.     }
  93.   }
  94.  
  95.   // Exibir os resultados
  96.   printf("Soma dos inteiros positivos pares sem repetição = %d\n", somapar);
  97.   printf("Soma dos inteiros positivos ímpares sem repetição = %d\n", somaimpar);
  98.  
  99.   return 0;
  100. }
Add Comment
Please, Sign In to add comment