C++ Qual codigo que ordena


29-03-2003 por Andreia_Sp
C++ Qual codigo que ordena
Ola Pessoal,

alguem sabe qual eh o codigo certinho que ordena nomes???
Assim.... eu tenho 3 variaveis que eu vo digita informações e no fim do programa eu tenho que exibir e depois outra lista que exibi ordenado por um certo campo. Ex.: Pede nome, endereço e cidade. Digito e na hra de listar, tem que ordena pelo nome e logo as informações que seguem esta informação....



valeu
29-03-2003 por FrecoRulez
Preciso de mais detalhes, que tipo de variavel? String? STL? Lista encadeada?

Você que uma função de biblioteca ou o codigo que faz isso?
29-03-2003 por Andreia_Sp
Citação:
Postado Originalmente por FrecoRulez
Preciso de mais detalhes, que tipo de variavel? String? STL? Lista encadeada?

Você que uma função de biblioteca o...
variavel do tipo string
29-03-2003 por romulo
Isso depende muito de como você vai armazenar os dados, se é em uma lista, árvore, etc. No caso de ser uma lista, existem vários métodos para ordenação, tipo bubble (o mais simples e também mais lento), radix, select, insert, shell, quick, merge, etc. Mas eu acho mais fácil criar uma árvore e imprimir ordenadamente usando recursão.
29-03-2003 por Andreia_Sp
Citação:
Postado Originalmente por romulo
Isso depende muito de como você vai armazenar os dados, se é em uma lista, árvore, etc. No caso de ser uma lista, exi...
Romulo,
vc complica-me rsss... meu c++ naum eh tao avançado assim
29-03-2003 por romulo
Citação:
Postado Originalmente por Andreia_Sp
Romulo,
vc complica-me rsss... meu c++ naum eh tao avançado assim
Como você está pensando em implementar o armazenamento desses dados?
29-03-2003 por Andreia_Sp
Citação:
Postado Originalmente por romulo
Como você está pensando em implementar o armazenamento desses dados?
Romulo,

o problema é o seguinte, meu "amavel" professor passou um exercicio em C++. O programa é assim:
Programa que lê 15 carros e depois ordena por modelo.
Certo? mas como meu professor eh o melhor do mundo, ele nao corrigiu o exercicio, nao nos ensinou como ordena e se negou a nos explicar e vai colocar em prova... Entaum viu porque da minha pergunta. Pelo meu pouco conhecimento nessa droguinha de linguagem eu consegui fazer alguma coisa, porem naum roda, veja como eu fiz:

#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
void main()
{struct carro
{char modelo[61];
char fabricante[41];
int ano_fab;
};
char modelo[61];
carro carro[15];
int temp=0;
int i;
for (i=0;i<15;i++)
{cout<<"\n Digite o modelo do carro \n";
cin>>carro[i].modelo;
cout<<"\n Digite o nome do fabricante \n";
gets(carro[i].fabricante);
cout<<"\n Digite o ano de fabricacao \n";
cin>>carro[i].ano_fab;
}
clrscr();
cout<<"\n\n Relatorio \n\n";
for(i=0;i<15;i++)
{
for(int j=i+1;j<15;i++)
if(modelo[i]>modelo[j])
{temp = modelo[i];
modelo[i] = modelo[j];
modelo[j] = temp;
getch();
}
}
}


você consegue localizar o erro, porque eu discuti com meu professor esta questao e ai ele resolver colaborar e viu meu exercicio, mas ai ele soh disse que está certo mas que falta uma coisinha..... mas essa coisinha ele naum disse....


valeu
29-03-2003 por romulo
Citação:
Postado Originalmente por Andreia_Sp
Romulo,

o problema é o seguinte, meu "amavel" professor passou um exercicio em C++. O programa é assim:
Programa ...
Ôpa, na verdade esse código tem alguns erros. Vou jogar aqui no Dev-C++ e depois posto as correções. Só pra constar, esse método que você usou é o bubble sort, o mais simples e também mais lento.
29-03-2003 por Andreia_Sp
Citação:
Postado Originalmente por romulo
Ôpa, na verdade esse código tem alguns erros. Vou jogar aqui no Dev-C++ e depois posto as correções. Só pra constar, ...
poize, mas nunca ouvi essa palavra.... com disse, meu professor eh uma maravilha, pior naum há!!!


obrigada pela sua ajuda :wink:
30-03-2003 por tonchan
Neste site tem um exemplo legal de como funciona alguns algoritmos de ordenação (bubblesort, quicksort e mergesort) e outros métodos.
É só procurar em "algoritmo computacional".
http://www.manzano.pro.br/menu.html

Ei romulo, que método é esse radix?
Tem algum site que tenha algum exemplo?
30-03-2003 por romulo
Tó:

Código:
#include <iostream> #include <cstring> #include <conio.h> //Pra rodar no Dev-C++ tem que usar conio.c using std::cout; using std::cin; int main() { const int NUM_CARROS = 15; typedef struct carro { char modelo[61]; char fabricante[41]; int ano_fab; }; carro vet_carro[NUM_CARROS]; carro temp; int i; for (i = 0; i < NUM_CARROS;i++) { cout << "\nDigite o modelo do carro:\n"; cin >> vet_carro[i].modelo; cout << "\nDigite o nome do fabricante:\n"; cin >> vet_carro[i].fabricante; cout << "\nDigite o ano de fabricacao:\n"; cin >> vet_carro[i].ano_fab; } //Ordenação for (i = 0; i < NUM_CARROS; i++) for (int j = i + 1; j < NUM_CARROS; j++) if (strcoll(vet_carro[i].modelo, vet_carro[j].modelo) > 0) { strcpy(temp.modelo, vet_carro[i].modelo); strcpy(temp.fabricante, vet_carro[i].fabricante); temp.ano_fab = vet_carro[i].ano_fab; strcpy(vet_carro[i].modelo, vet_carro[j].modelo); strcpy(vet_carro[i].fabricante, vet_carro[j].fabricante); vet_carro[i].ano_fab = vet_carro[j].ano_fab; strcpy(vet_carro[j].modelo, temp.modelo); strcpy(vet_carro[j].fabricante, temp.fabricante); vet_carro[j].ano_fab = temp.ano_fab; } clrscr(); cout << "\n\n Relatorio \n\n"; for (i = 0; i < NUM_CARROS; i++) cout << "Carro[" << i + 1 << "]\n" << "Modelo: " << vet_carro[i].modelo << "\n" << "Fabricante: " << vet_carro[i].fabricante << "\n" << "Ano: " << vet_carro[i].ano_fab << "\n\n"; }
Fiz algumas alterações pra ficar em código ANSI C++ puro, pois tava uma mistureba de C e C++.
30-03-2003 por romulo
Citação:
Postado Originalmente por tonchan
Ei romulo, que método é esse radix?
Tem algum site que tenha algum exemplo?
Cara, pra falar a verdade eu nem lembro. Vou dar uma olhada pra relembrar.
30-03-2003 por Andreia_Sp
Citação:
Postado Originalmente por romulo
Tó:

[code]
#include <iostream>
#include <cstring>
#include <conio.h> //Pra rodar no Dev-C++ t...
Tonchan obrigada pela dica do site, dei uma olhada aqui e achei bem interessante.
Romulo, eu testei o codigo que vc me passou, mas deu varios erros, acredito que seja por causa do compilador, eu uso o turbo C++
30-03-2003 por romulo
Citação:
Postado Originalmente por Andreia_Sp
Tonchan obrigada pela dica do site, dei uma olhada aqui e achei bem interessante.
Romulo, eu testei o codigo que vc ...
É verdade, o Turbo C++ é muito antigo, não tem suporte ao ANSI C++. Tente usar o Dev-C++ (ou se puder o Visual C++):

http://www.bloodshed.net

Se o seu professor insistir em usar o Turbo C++, saiba que você vai aprender muita coisa errada, pois hoje em dia tudo é baseado no ANSI C++.
30-03-2003 por Andreia_Sp
Citação:
Postado Originalmente por romulo
É verdade, o Turbo C++ é muito antigo, não tem suporte ao ANSI C++. Tente usar o Dev-C++ (ou se puder o Visual C++):
...
Ola Romulo,

obrigada pelo link, vou pegar este compilador.
Meu professor pede que a gente use o TCLite, mas como eu só achei po turbo C e C++ acabei ficando com ele mesmo.
Ah, na mensagem anterior sua esqueci de comentar.... o mistureba de C e C++ é assim mesmo, meu professor faz isso, num mesmo programa ele coloca printf, scanf e cin e cout...... mistura tudo...
30-03-2003 por romulo
Citação:
Postado Originalmente por Andreia_Sp
Ola Romulo,

obrigada pelo link, vou pegar este compilador.
Meu professor pede que a gente use o TCLite, mas como ...
Hehe, o cara parece que é enrolado... sml0181 sml0180
31-03-2003 por Lgub
Para funcionar o codigo no tc, faça as seguintes alterações.

Nos includes.
Mude #include<iostream> para: #include<iostream.h>
Mude #include<cstring> para: #include<string.h>

E retire os dois
using sdt:cin e
using sdt: cout


Só isso.
 
Guia do Hardware Melhores Tópicos