Jump to content
Fórum Script Brasil
  • 0

Vetor de Struct


Vitor123

Question

Boa Tarde,

Pessoal, eu venho aqui pedir uma ajudinha com esse exercício que estou fazendo, a minha dúvida se refere a função "ordena".

Preciso ordenar um vetor structs de acordo com o nome do carro, porém, não estou conseguindo trazer todos os dados do carro junto com o seu nome. Da forma como coloquei aqui estou apenas ordenando o nome, até ai tudo certo, mas sera que teria algum jeito de ordenar toda o vetor sem ficar repetindo as linhas com o strcpy??

já tentei utilizar apenas o "x" ao invés do "x.nome" porém, ele não compila.

Desde já agradeço!!!

// Exercício 7.5.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "string.h"
#include "stdlib.h"
#include "ctype.h"


typedef struct{
    int dia;
    int mes;
    int ano;
} DATA;

typedef struct{
    char marca[30];
    char nome[30];
    int ano;
    double valor_venda;
    char chassis[20];
    char combustivel;
    DATA d;
} CARRO;

void ordena(CARRO []);
int busca(char [],CARRO [],int);

void main()
{
    CARRO carros[15] = {
        {"MARCA","KA",1999,1450.54,"12345",'E',{17,1,1999}},
        {"MARCA","Kombi",1999,1450.54,"54321",'G',{17,1,1999}},
        {"MARCA","Opala",1999,1450.54,"45321",'D',{17,1,1999}},
        {"MARCA","Civic",1999,1450.54,"43215",'E',{17,1,1999}},
        {"MARCA","Fusca",1999,1450.54,"45124",'G',{17,1,1999}},
        {"MARCA","Parati",1999,1450.54,"11354",'D',{17,1,1999}},
        {"MARCA","Gol",1999,1450.54,"42135",'E',{17,1,1999}},
        {"MARCA","Uno",1999,1450.54,"55114",'D',{17,1,1999}},
        {"MARCA","Golf",1999,1450.54,"33222",'G',{17,1,1999}},
        {"MARCA","Croosfox",1999,1450.54,"14521",'D',{17,1,1999}},
        {"MARCA","Chevete",1999,1450.54,"33325",'E',{17,1,1999}},
        {"MARCA","KA",1999,1450.54,"55555",'G',{17,1,1999}},
        {"MARCA","Fusca",1999,1450.54,"44512",'G',{17,1,1999}},
        {"MARCA","Uno",1999,1450.54,"22554",'D',{17,1,1999}},
        {"MARCA","Gol",1999,1450.54,"11452",'E',{17,1,1999}},
    };


    int i;
    ordena(carros);
    int m = busca("12345",carros,15); //usuario irá digitar um chassis, para encontrar o carro
    if( m != -1)    
        printf("Carro: %s",carros[m].nome); //Mostra o carro de acordo com o chassis encontrado
    

    getchar();
}

void ordena(CARRO x[])
{

    bool ordenado=true;
    char aux[30];
    int i,tam=15;

    do{
        ordenado = true;
        for(i=0; i<tam; i++)
        {
            if(stricmp(x[i].nome, x[i + 1].nome) > 0)
            {
                strcpy(aux, x[i].nome);
                strcpy(x[i].nome, x[i + 1].nome);
                strcpy(x[i + 1].nome, aux);
                ordenado=false;
            }
        }
        tam--;
    }while (ordenado==false);

    for(i=0;i<15;i++) //Mostra os carros em ordem alfabetica
    {
        printf("nome: %s",x[i].nome);
        printf("\n");
    }

}
int busca(char nome[],CARRO L[],int n)
{

    int i, f, m,compare;
    i = 0;
    f = n-1;

    while(i <= f)
    {
        m = (i+f)/2;

        compare = strcmp(nome,L[m].chassis);

        if(strcmp(nome,L[m].chassis) == 0)
            return m;
        if(strcmp(nome,L[m].chassis) < 0)
            f = m-1;
        else
            i = m+1;
    }
    return -1;
}

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...