Ir ao conteúdo

Posts recomendados

Postado

Olá. Meu código está praticamente pronto, mas devo imprimir os valores em ordem decrescente. Podem me ajudar?

(A parte do <if> é porque devo imprimir os ímpares)

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

int main(void){

        int b;
        int *x;
        int aux;
        int i;

        int a;
        x = (int *) malloc(sizeof(int) * a);
        printf("Insira a quantidade de valores que deseja alocar: ");
        scanf("%d", &a);
        printf("Digite o valor que deseja iniciar: ");
        scanf("%d", &b);

        for(int i = 0; i <= a; i++){
                if (i % 2 == 1)
                printf("Os valores em ordem decrescente: %d\n", i);
        }    
}

 

Postado
1 hora atrás, pedro.maciel disse:

Olá. Meu código está praticamente pronto, mas devo imprimir os valores em ordem decrescente. Podem me ajudar?

 

Não parece estar praticamente pronto. . .

 

Não postou um enunciado, mas parece que precisa alocar dinamicamente um vetor de inteiros e imprimir os valores impares em ordem decrescente.

 

E o seu programa tem um lado visionário, e uma surpresa, representado por essas linhas

       int a;
        x = (int *) malloc(sizeof(int) * a);
        printf("Insira a quantidade de valores que deseja alocar: ");
        scanf("%d", &a);

 

onde aloca a partir de x uma área do tamanho de 'a' int, um valor que você nem leu ainda.

 

E depois de alocar você lê o valor de a. Pouco útil nesse caso.

 

E mesmo que o scanf() não leia nada seu programa segue, com resultados certamente surpreendentes, já que está lendo o tamanho de uma área em um valor de pode até ser negativo, mas não sabe se leu porque não testou o retorno de scanf() para ver se leu algo. E mesmo que tenha lido de nada adianta porque já tentou alocar alguma área antes de ler o tamanho.

 

Só que também não sabe se alocou nem o quando alocou, porque o valor original de 'a' provavelmente se perdeu, já que tentou ler outro valor em cima...

 

Esse trecho

 

       for(int i = 0; i <= a; i++){
                if (i % 2 == 1)
                printf("Os valores em ordem decrescente: %d\n", i);
        }

 

também não deve ser o que você imaginava: se tiver 500 ímpares vai imprimir 500 vezes a mensagem também... E se imaginava imprimir os 'a' valores de x[] esqueça, porque vai imprimir apenas o índice... algo assim
 

Os valores em ordem decrescente: 1
Os valores em ordem decrescente: 3
Os valores em ordem decrescente: 5
Os valores em ordem decrescente: 7
Os valores em ordem decrescente: 9

 

E nada fez em relação a classificar o vetor.

 

Que pretende ao ler o valor de 'b', um único int que não usou em lugar nenhum?

 

E o x que declarou e não usou em lugar algum é ponteiro para um único int. Pode até funcionar assim, mas está um pouco longe ainda...

  • Curtir 1
  • Obrigado 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!