Ir ao conteúdo
  • Cadastre-se

C Ordem decrescente em uma sequência de números


pedro.maciel

Posts recomendados

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

 

Link para o comentário
Compartilhar em outros sites

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