Matrice di caratteri ( inseriti da tastiera ) ordinati in ordine alfabetico

MegaMind

Nuovo Utente
12 Mag 2019
2
0
0
Salve,
ho trovato questo programmino dove vengono ordinate in ordine alfabetico le parole ma vorrei modificarlo un po': vorrei che i caratteri che verranno ordinati vengano inseriti da tastiera.
ho provato varie volte senza riuscirci… :(

Ecco il programma:
Codice:
#include <cstdlib>
#include <iostream>
#include <string.h>


using namespace std;

const int PAROLE=10, CARATTERI_PER_PAROLA=15; //in realtà sono 14 col carattere di terminazione stringa

int ordinamento_alfabetico ( char matrice_da_ordinare[PAROLE][CARATTERI_PER_PAROLA]);

int main(int argc, char *argv[])
{
char strarray [PAROLE][CARATTERI_PER_PAROLA] = {"allocchi", "albergoni", "cornetti", "basandri", "abbonati", "CIAO", "A", "mera", "LAURA", "gufo"};

//visualizzo matrice di stringhe iniziale
for (int i=0;i<PAROLE;i++)
cout<< strarray<<endl;

//ordino alfabeticamente
ordinamento_alfabetico (strarray);

//visualizzo matrice ordinata
cout<< endl<<endl<<endl;
for (int i=0;i<PAROLE;i++)
cout<< strarray<<endl;


system("PAUSE");
return EXIT_SUCCESS;
}



//ordinamento con algoritmo Boubble sort
int ordinamento_alfabetico ( char matrice_da_ordinare[PAROLE][CARATTERI_PER_PAROLA])
{
char hold [CARATTERI_PER_PAROLA];
for(int x = 0; x < (PAROLE -1); x++)
{
for(int y = (x+1); y < PAROLE; y++)
{

if(strcmp(matrice_da_ordinare[x], matrice_da_ordinare[y]) > 0)
{
strcpy (hold, matrice_da_ordinare[x]);
strcpy (matrice_da_ordinare[x], matrice_da_ordinare [y]);
strcpy (matrice_da_ordinare[y], hold);
}
}
}
}
 
Ultima modifica di un moderatore:
@MegaMind

Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code.gif
quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box inserisci 2.png.JPG

Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
 
Salve,
ho trovato questo programmino dove vengono ordinate in ordine alfabetico le parole ma vorrei modificarlo un po': vorrei che i caratteri che verranno ordinati vengano inseriti da tastiera.
ho provato varie volte senza riuscirci… :(

Ecco il programma:
Codice:
#include <cstdlib>
#include <iostream>
#include <string.h>


using namespace std;

const int PAROLE=10, CARATTERI_PER_PAROLA=15; //in realtà sono 14 col carattere di terminazione stringa

int ordinamento_alfabetico ( char matrice_da_ordinare[PAROLE][CARATTERI_PER_PAROLA]);

int main(int argc, char *argv[])
{
char strarray [PAROLE][CARATTERI_PER_PAROLA] = {"allocchi", "albergoni", "cornetti", "basandri", "abbonati", "CIAO", "A", "mera", "LAURA", "gufo"};

//visualizzo matrice di stringhe iniziale
for (int i=0;i<PAROLE;i++)
cout<< strarray<<endl;

//ordino alfabeticamente
ordinamento_alfabetico (strarray);

//visualizzo matrice ordinata
cout<< endl<<endl<<endl;
for (int i=0;i<PAROLE;i++)
cout<< strarray<<endl;


system("PAUSE");
return EXIT_SUCCESS;
}



//ordinamento con algoritmo Boubble sort
int ordinamento_alfabetico ( char matrice_da_ordinare[PAROLE][CARATTERI_PER_PAROLA])
{
char hold [CARATTERI_PER_PAROLA];
for(int x = 0; x < (PAROLE -1); x++)
{
for(int y = (x+1); y < PAROLE; y++)
{

if(strcmp(matrice_da_ordinare[x], matrice_da_ordinare[y]) > 0)
{
strcpy (hold, matrice_da_ordinare[x]);
strcpy (matrice_da_ordinare[x], matrice_da_ordinare [y]);
strcpy (matrice_da_ordinare[y], hold);
}
}
}
}
Ciao! Se non ho capito male l'aiuto che cerchi è in riferimento all'inserimento da input di una matrice di parole?
Allora per fare ciò ci sono 2 vie che ti consiglio:
1) Se vuoi mantenere l'utilizzo dei 'char' come tipo di variabile puoi usare la seguente sintassi

C++:
char matrix[5][10];
    
    cin.getline(matrix[0], 9);
    cin.getline(matrix[1], 9);
    cin.getline(matrix[2], 9);
    cin.getline(matrix[3], 9);
    cin.getline(matrix[4], 9);
    
    for(int i = 0 ; i < 5; i++)
        cout << matrix[i] << endl;

2)Altrimenti se utilizzi le string (e ti consiglio fortemente di iniziare a farlo se ancora non l'hai fatto) puoi usare la seguente sintassi


C++:
string matrix[5];
    
    cin >> matrix[0];
    cin >> matrix[1];
    cin >> matrix[2];
    cin >> matrix[3];
    cin >> matrix[4];
    
    for(int i = 0 ; i < 5; i++)
        cout << matrix[i] << endl;

Per ulteriori chiarimenti commenta altrimenti lascia un like :)
 

Discussioni simili