Ordinamento alfabetico di un nome

di il
22 risposte

Ordinamento alfabetico di un nome

Salve ho difficoltà nel ordinare in ordine alfavetico un nome vi spiego ho uno struct data contente dei nomi devo ordinare in ordine alfabetico ogni singolo nome ovvero tipo marco lo dovrei far riuscire a stampare come acmor il problema una volta impostato un bubble sort il nome mi viene stampato sempre uguale allo stato di partenza come potrei fare?

22 Risposte

  • Re: Ordinamento alfabetico di un nome

    Guarda il mio post sul void c'è una parte di programma che si occupa di questo ma non riesco ad eliminare i nomi uguali tu lo sai fare?
  • Re: Ordinamento alfabetico di un nome

    ...ogni carattere corrisponde ad un numero nel codice ASCII......
  • Re: Ordinamento alfabetico di un nome

    Ma esiste un codice da controllare?
  • Re: Ordinamento alfabetico di un nome

    vinci998 ha scritto:


    Salve ho difficoltà nel ordinare in ordine alfavetico un nome vi spiego ho uno struct data contente dei nomi devo ordinare in ordine alfabetico ogni singolo nome ovvero tipo marco lo dovrei far riuscire a stampare come acmor il problema una volta impostato un bubble sort il nome mi viene stampato sempre uguale allo stato di partenza come potrei fare?
    Se hai fatto qualcosa tipo char * nome = "Marco"; devi sapere che la stringa è inserita in una zona di memoria a sola lettura...se applichi cambiamenti ad essa quando ti va bene crasha tutto così ti accorgi dell'errore....quando ti va male il programma fila liscio ma non vedi cambiamenti nella stringa.

    Comunque è solo una ipotesi, se non posti il codice come possiamo aiutarti?
  • Re: Ordinamento alfabetico di un nome

    //questa è una prova con uno struct con un solo nome


    #include<iostream>
    #include<fstream>
    #define lung.nom 5
    using namespace std;
    typedef struct nominativi{
    char nome[100];
    }data;
    int main(){
    data nominativi[100];
    int i;
    cout<<"Inserisci un nome: "<<endl;
    cin>>nominativi.nome;
    //stampa nomi inseriti
    cout<<""<<nominativi.nome;
    char *temp;
    temp=new char[100];
    //vorrei usare questo bubble sort
    //considerando che la lunghezza del nome è di 5
    for(i=0;i<4;i++){
    if(nominativi.nome>nominativi[i+1].nome){
    temp=nominativi.nome;
    nominativi.nome=nominativi[i+1].nome;
    nominativi[i+1].nome=temp;
    }
    }
    for(int i=0;i<5;i++){
    cout<<nominativi.nome<<"";
    }}
  • Re: Ordinamento alfabetico di un nome

    Usa i tag CODE per il codice sul forum ... Comunque hai fatto un bel po' di confusione ...

    In lung.nom non puoi usare il .

    Se provi con 5 nominativi li devi inserire tutti e 5 e i deve partire da 0 ...

    Le copie di stringhe non le puoi fare con = ma devi usare la funzione strcpy ...
  • Re: Ordinamento alfabetico di un nome

    Si ho fatto anche con le funzioni strcpy e strcmp il confronto inziale ma non va mi ristampa il nome normalmente
  • Re: Ordinamento alfabetico di un nome

    Io usai questo per ordinare il file in ordine alfabetico ed è tutto funzionante ora ho un problema simile sempre da file devo prendere questi nomi ma invece di ordinare in ordine alfabetico l'elenco dei nomi devo oridnare ogni singolo nome in ordine alfabetico

    #include<iostream>
    #include<fstream>
    #include<string.h>
    using namespace std;
    typedef struct vita{
    char nome[100];
    int numero;
    }data;
    void carica_vettore(fstream&miofile,data v[]);
    void stampa_vettore(data v[]);
    void controlla_ordine(data v[]);
    int main(){
    char nome_file[20];
    data mare[200];
    data vita[200];
    fstream miofile;
    cout<<"Inserisci il file da aprire: "<<endl;
    cin>>nome_file;
    miofile.open(nome_file,ios::in);
    if(!miofile){
    cout<<"Il file che si desidera non puo' essere aperto"<<endl;
    exit(1);
    }
    carica_vettore(miofile,vita);
    stampa_vettore(vita);
    controlla_ordine(vita);
    }
    void carica_vettore(fstream&miofile,struct vita v[]){
    while(!miofile.eof()){
    int i=0;
    for(i=0;i<4;i++){
    miofile>>v.nome;
    miofile>>v.numero;
    }}miofile.close();}
    void stampa_vettore(struct vita v[]){
    int i=0;
    for(i=0;i<4;i++){
    cout<<v.nome<<" "<<endl;
    cout<<v.numero<<" "<<endl;}
    }
    void controlla_ordine(struct vita v[],struct mare t[]){
    char temp[100];
    int i;
    for(int i=0;i<3;i++){
    if(strcmp(v.nome,v[i+1].nome)>0){
    cout<<"Il file non e' ordinato alfabeticamente"<<endl;
    strcpy(temp,v.nome);
    strcpy(v.nome,v[i+1].nome);
    strcpy(v[i+1].nome,temp);}}
    cout<<"Il file ordinato alfabeticamente e': "<<endl;
    for(int i=0;i<4;i++){
    cout<<v.nome<<" "<<endl;
    }}
  • Re: Ordinamento alfabetico di un nome

    Usa i tag CODE !
  • Re: Ordinamento alfabetico di un nome

    //file testo con un solo nome
    #include<fstream>
    #include<string.h>
    #include<iostream>
    using namespace std;
    typedef struct nominativi{
    char nome[100];
    }data;
    int main(){
    int i;
    data nominativi[100];
    fstream miofile;
    miofile.open("nomi1.txt");
    miofile>>nominativi.nome;
    miofile.close();
    cout<<"Mostra il nome preso da file"<<endl;
    cout<<nominativi.nome<<" ";
    char temp[100];
    int n=5;
    //n=lunghezza nome contenuto nel file
    for(i=0;i<n-1;i++){
    if(strcmp(nominativi.nome,nominativi[i+1].nome)>0){
    strcpy(temp,nominativi.nome);
    strcpy(nominativi.nome,nominativi[i+1].nome);
    strcpy(nominativi[i+1].nome,temp);
    }}
    //stampa del nome ordinato in ordine alfabetico
    for(i=0;i<5;i++){
    cout<<nominativi.nome<<"";
    }}
    il problema è che non mi ordina il nome con questo bubble sort ma lo stampa uguale al nome di partenza come posso fare;?
  • Re: Ordinamento alfabetico di un nome

    Usa i tag CODE per favore.
  • Re: Ordinamento alfabetico di un nome

    Penso di non aver capito proprio cosa sono
  • Re: Ordinamento alfabetico di un nome

    Usa il pulsante Code
  • Re: Ordinamento alfabetico di un nome

    Mi puoi fare un esempio applicato al ultimo codice che ho mandato?
Devi accedere o registrarti per scrivere nel forum
22 risposte