Informática, perguntado por CarlosTWD2669, 1 ano atrás

como escrever um algoritmo que ordene e imprima um vetor em ordem crescente

Soluções para a tarefa

Respondido por rodrigooliver2
0
include <stdio.h>
#include <locale.h>

main(){

    setlocale(LC_ALL, "Portuguese");

    int vetor[10];       // vetor de inteiros
    int i, tamanho_vetor;
    void OrdemCrescente (int vetor[], int tamanho_vetor);       // vetor de inteiros

    printf("Digite uma sequência de 10 números e o colocaremos em ordem crescente:\n");

    scanf(" %d", &vetor[1]);      // Evitar bufferização
    scanf(" %d", &vetor[0]);      //        "
    scanf(" %d", &vetor[1]);      //        "
    scanf(" %d", &vetor[2]);      //        "
    scanf(" %d", &vetor[3]);      //        "
    scanf(" %d", &vetor[4]);      //        "
    scanf(" %d", &vetor[5]);      //        "
    scanf(" %d", &vetor[6]);      //        "
    scanf(" %d", &vetor[7]);      //        "
    scanf(" %d", &vetor[8]);      //        "
    scanf(" %d", &vetor[9]);      //        "

    tamanho_vetor = sizeof(vetor) / sizeof(int);       // Maneira correta para obter o 'tamanho' de um array

    printf("\n%d\n\n", tamanho_vetor);
    OrdemCrescente (vetor, tamanho_vetor);

    puts("\nOrdem crescente: ");

    for(i=0; i<10; i++){
        printf("%d ", vetor[i]);
    }
}

void OrdemCrescente (int vetor[], int tamanho_vetor){       // vetor de inteiros

    int i, f, temporaria;

    for(i=0; i<tamanho_vetor; i++){
        for(f=0; f<tamanho_vetor; f++){    // Erro = Do modo anterior o último elemento não era comparado, assim não mudava.
            if(vetor[i] < vetor[f]){       // A lógica estava invertida, gerando sequência 'int' em ordem reversa.
                temporaria = vetor[i];
                vetor[i] = vetor[f];
                vetor[f] = temporaria;
            }
        }
    }
}
Perguntas interessantes