Ordenação por bubble sort [RESOLVIDO]

1. Ordenação por bubble sort [RESOLVIDO]

lucas
ljparaujo

(usa Debian)

Enviado em 26/01/2018 - 02:06h

Boa noite.
Caros gostaria de saber por que este codigo que criei não esta fazendo a ordenação, pois ao meu ver esta tudo certo.

#include <iostream>
#include <string.h>

#define MAX 10

using namespace std;

class Carro
{
    public:
        char modelo[100];
        char cor[20];
        char placa[20];
        double preco;
};
//ordenacao por bubble sort
void ordenar(Carro carros[], int tam)
{
    int i, j;
    Carro aux;

    for(i = tam; i >= 0; i--) {

        for(j = 1; j <= i; j++) {

            if(strcmp(carros[j - 1].modelo, carros[j].modelo) == 1) {

                aux = carros[j-1];
                carros[j-1] = carros[j];
                carros[j] = aux;
            }
        }
    }

}


int main()
{
    int i = 0;
    Carro carros[MAX];

    while(true) {
        char opcao;

        cout << "Modelo do carro: ";
        cin >> carros[i].modelo;

        cout << "Preço: ";
        cin >> carros[i].preco;

        cout << "\nDeseja continuar ? <S>Sim / <N> Não ";
        cin >> opcao;

        if(opcao != 's')
            break;

        cout << "\n"    ;

        i++;
    }

    cout << "\n";

    for(int j = 0; j <= i; j++) {

        cout << "\nModelo do carro: " << carros[j].modelo;
        cout << "\nPreço: " << carros[j].preco;
        cout << "\n";
    }

    ordenar(carros, i);

    cout << "\n\nOrdem alfabética dos modelos";

     for(int j = 0; j <= i; j++) {

        cout << "\nModelo do carro: " << carros[j].modelo;
        cout << "\nPreço: " << carros[j].preco;
        cout << "\n";
    }

    return 0;
}
 


Desde ja agradeço a atençao


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 26/01/2018 - 16:26h

Por que você está testando “strcmp(carros[j-1].modelo, carros[j].modelo)==1”?

Geralmente não se sabe o valor exato de strcmp(). O que o padrão determina é que se o primeiro argumento for menor que o segundo, o valor de retorno será negativo, se ambos forem iguais, o valor será zero, e, caso contrário, o valor será positivo.

Assim sendo, você provavelmente quis dizer “strcmp(carros[j-1].modelo, carros[j].modelo)>0”.

3. Re: Ordenação por bubble sort [RESOLVIDO]

lucas
ljparaujo

(usa Debian)

Enviado em 26/01/2018 - 18:43h

Obrigado esse realmente era o problema.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts