Как выстроить сортировку по алфавиту - PullRequest
0 голосов
/ 14 мая 2018

Мне нужно написать код, в котором в структуре я регистрирую номерной знак, модель, марку, год и дневную стоимость автомобиля.После регистрации этих данных, мне нужно отсортировать всю структуру на основе номерного знака автомобиля, а затем отобразить на экране для пользователя.Например:

Автомобиль 1

номер автомобиля: IZA-2929
модель автомобиля: GTR
марка автомобиля: Nissan
год выпуска автомобиля: 2016
суточная стоимость автомобиля: 100

автомобиль 2

номер автомобиля: BCC-1234
модель автомобиля: Corolla
марка автомобиля: Toyota
год выпуска автомобиля: 2014
Автомобиль DailyValue: 50

Заказ ...

Автомобиль 2
Номер автомобиля: BCC-1234
Модель автомобиля: Corolla
Марка автомобиля: Toyota
Год выпуска: 2014
Автомобиль Ежедневная стоимость: 50

Автомобиль 1
Номер автомобиля: IZA-2929
Модель автомобиля: GTR
Марка автомобиля: Nissan
Год выпуска автомобиля: 2016
дневная стоимость автомобиля: 100

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

struct carro
{
char placa[50];
char marca[50];
char modelo[50];
char ano[50];
char valordiaria[50];
};

int main()
{
struct carro car[5];
struct carro temp[5];


strcpy(car[0].placa, "IZA-2929");
strcpy(car[1].placa, "HJZ-1234");
strcpy(car[2].placa, "XCV-3478");
strcpy(car[3].placa, "BSD-8329");
strcpy(car[4].placa, "AHG-8332");

strcpy(car[0].marca, "Chevrolet");
strcpy(car[1].marca, "Volkswagen");
strcpy(car[2].marca, "Ferrari");
strcpy(car[3].marca, "Nissan");
strcpy(car[4].marca, "Ford");

strcpy(car[0].modelo, "Onix");
strcpy(car[1].modelo, "Golf");
strcpy(car[2].modelo, "Enzo");
strcpy(car[3].modelo, "GTR");
strcpy(car[4].modelo, "Ka");

strcpy(car[0].ano, "2013");
strcpy(car[1].ano, "2008");
strcpy(car[2].ano, "2004");
strcpy(car[3].ano, "2017");
strcpy(car[4].ano, "2015");

strcpy(car[0].valordiaria, "45");
strcpy(car[1].valordiaria, "60");
strcpy(car[2].valordiaria, "80");
strcpy(car[3].valordiaria, "200");
strcpy(car[4].valordiaria, "65");


int q=0;
int i,j,l,x;

Здесь я показываю структуру, как она есть, еще не отсортирована.

for( x = 0; x < 5; x++ )
{
    printf("\nStruct desordenada:");
    printf("\nPlaca: %s", car[q].placa);
    printf("\nMarca: %s", car[q].marca);
    printf("\nModelo: %s", car[q].modelo);
    printf("\nAno: %s", car[q].ano);
    printf("\nValor da diaria: R$%s", car[q].valordiaria);
}

Вот моя структура Bubble Sort, вот с чем у меня проблемы

// :::BUBBLESORT::: //

for (j = 0; j < 5 - 1; j++)
{
    for (i = 0; i < 5 - 1; i++)
    {
        if ( strcmp(car[i].placa, car[i + 1].placa ) > 0)
        {
            temp = car[i];
            car[i] = car[i+1];
            car[i+1] = temp;
        }
    }
}

Здесь я показываю всю упорядоченную структуру

for( x = 0; x < 5; x++ )
{
    printf("\nStruct Ordenana:");
    printf("\nPlaca: %s", car[q].placa);
    printf("\nMarca: %s", car[q].marca);
    printf("\nModelo: %s", car[q].modelo);
    printf("\nAno: %s", car[q].ano);
    printf("\nValor da diaria: R$%s", car[q].valordiaria);
}

}

Вот сам код:

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

struct carro
{
    char placa[50];
    char marca[50];
    char modelo[50];
    char ano[50];
    char valordiaria[50];
};

int main()
{
    struct carro car[5];
    struct carro temp[5];

    strcpy(car[0].placa, "IZA-2929");
    strcpy(car[1].placa, "HJZ-1234");
    strcpy(car[2].placa, "XCV-3478");
    strcpy(car[3].placa, "BSD-8329");
    strcpy(car[4].placa, "AHG-8332");

    strcpy(car[0].marca, "Chevrolet");
    strcpy(car[1].marca, "Volkswagen");
    strcpy(car[2].marca, "Ferrari");
    strcpy(car[3].marca, "Nissan");
    strcpy(car[4].marca, "Ford");

    strcpy(car[0].modelo, "Onix");
    strcpy(car[1].modelo, "Golf");
    strcpy(car[2].modelo, "Enzo");
    strcpy(car[3].modelo, "GTR");
    strcpy(car[4].modelo, "Ka");

    strcpy(car[0].ano, "2013");
    strcpy(car[1].ano, "2008");
    strcpy(car[2].ano, "2004");
    strcpy(car[3].ano, "2017");
    strcpy(car[4].ano, "2015");

    strcpy(car[0].valordiaria, "45");
    strcpy(car[1].valordiaria, "60");
    strcpy(car[2].valordiaria, "80");
    strcpy(car[3].valordiaria, "200");
    strcpy(car[4].valordiaria, "65");


    int q=0;
    int i,j,x;

    for( x = 0; x < 5; x++ )
    {
        printf("\nStruct desordenada:");
        printf("\nPlaca: %s", car[q].placa);
        printf("\nMarca: %s", car[q].marca);
        printf("\nModelo: %s", car[q].modelo);
        printf("\nAno: %s", car[q].ano);
        printf("\nValor da diaria: R$%s", car[q].valordiaria);
    }



    // :::BUBBLESORT::: //

    for (j = 0; j < 5 - 1; j++)
    {
        for (i = 0; i < 5 - 1; i++)
        {
            if ( strcmp(car[q].placa, car[q + 1].placa ) > 0)
            {
                temp = car[q];
                car[q] = car[q+1];
                car[q+1] = temp;
            }
        }
    }

    for( x = 0; x < 5; x++ )
    {
        printf("\nStruct Ordenada:");
        printf("\nPlaca: %s", car[q].placa);
        printf("\nMarca: %s", car[q].marca);
        printf("\nModelo: %s", car[q].modelo);
        printf("\nAno: %s", car[q].ano);
        printf("\nValor da diaria: R$%s", car[q].valordiaria);
    }


}

1 Ответ

0 голосов
/ 14 мая 2018

У вас есть "опечатка" в циклах печати, вы перебираете переменную x , но распечатываете по индексу q .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...