Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Ordinamento per data
Forum - C/C++ - Ordinamento per data

Pagine: [ 1 2 3 4 5 ] Precedente | Prossimo
Avatar
daniel007boss (Normal User)
Newbie


Messaggi: 9
Iscritto: 19/01/2018

Segnala al moderatore
Postato alle 19:56
Venerdì, 19/01/2018
ciao, mi è stato chiesto di fare un programma che dato un vettore contenenti dei nomi e un altro contente delle date, devo saper poi ordinare i nomi in ordine di data.
io essendo abbastanza inesperto pensavo di usare strcat/strncat per unire le due stringhe e poi ordinarla con sort ma ovviamente non può essere perchè strcat/strncat non si può usare..qualcuno mi può aiutare?

Ultima modifica effettuata da lumo il 19/01/2018 alle 20:14
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 966
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 20:07
Venerdì, 19/01/2018
Ciao !

Hai già abbozzato un programma, anche se incompleto ?
Le date come le memorizzi  (stringhe, vettori di char,  time_t, ecc.) ?

Per utilizzare il metodo sort, devi avere un unico vettore che memorizza oggetti. Quindi è necessario implementare una classe con i campi nome, data.
Se hai due vettori, allora l'unica soluzione è di creare un algoritmo di ordinamento, che lavori sugli indici di entrambi i vettori.


Ultima modifica effettuata da Poggi Marco il 19/01/2018 alle 20:30


Nulla va più veloce della luce, quindi rilassati.
PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 432
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 20:18
Venerdì, 19/01/2018
Ho messo un titolo più descrittivo.
La tua idea con strcat non l'ho capita molto, in teoria dovrebbe bastare il sort sulle date. Ovviamente la difficoltà è che devi anche mantenere l'informazione su come erano ordinate in precedenza, oppure devi lavorare contemporaneamente sull'array di date e quello di nomi.

Devi darci più informazioni come dice Marco.

PM Quote
Avatar
daniel007boss (Normal User)
Newbie


Messaggi: 9
Iscritto: 19/01/2018

Segnala al moderatore
Postato alle 20:37
Venerdì, 19/01/2018
Testo quotato

Postato originariamente da Poggi Marco:

Ciao !

Hai già abbozzato un programma, anche se incompleto ?
Le date come le memorizzi  (stringhe, vettori di char,  time_t, ecc.) ?

Per utilizzare il metodo sort, devi avere un unico vettore che memorizza oggetti. Quindi è necessario implementare una classe con i campi nome, data.
Se hai due vettori, allora l'unica soluzione è di creare un algoritmo di ordinamento, che lavori sugli indici di entrambi i vettori.





il programma che pensavo è tipo


#include <iostream>
#include <string.h>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
cout<<"questo programma ordina cinque nomi "<<endl;
string nomi[5];
string date[5];
for(int i=0; i<5; i++)//con questo ciclo for regolo quanti nomi posso inserire
{
cout << "inserisci i nomi da utilizzare " << i+1 << " : ";//inserimento
cin >> nomi;
}

for(int j=0; j<5; j++)//con questo ciclo for regolo quanti nomi posso inserire
{
cout << "inserisci i nomi da utilizzare " << j+1 << " : ";//inserimento
cin >> date[j];
}
strncat(nomi,date);
sort(date, date+5);//ordina i nomi

for (int i=0; i<5; i++)//vale come cosa estetica e bla bla si può omettere
cout << i+1 << " - " << nomi << endl;


system("pause");
return 0;
}



Ultima modifica effettuata da daniel007boss il 19/01/2018 alle 21:20
PM Quote
Avatar
daniel007boss (Normal User)
Newbie


Messaggi: 9
Iscritto: 19/01/2018

Segnala al moderatore
Postato alle 20:42
Venerdì, 19/01/2018
Testo quotato

Postato originariamente da lumo:

Ho messo un titolo più descrittivo.
La tua idea con strcat non l'ho capita molto, in teoria dovrebbe bastare il sort sulle date. Ovviamente la difficoltà è che devi anche mantenere l'informazione su come erano ordinate in precedenza, oppure devi lavorare contemporaneamente sull'array di date e quello di nomi.

Devi darci più informazioni come dice Marco.



lo scopo era circa
v[mario,simone,luca,lucia,maria]
v[1999,1896,1654,2003,1945]

e quindi poi collegare ogni data al rispettivo nome
e come cout ottenere

1654-luca
1896-simone
1945-maria
1999-mario
2003-lucia

PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 445
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 21:08
Venerdì, 19/01/2018
Potresti almeno evitare le bestemmie nei commenti del codice?


"Io ne ho viste cose che voi umani non potreste immaginarvi...."
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 966
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 21:17
Venerdì, 19/01/2018
L funzione strncat() serve a concatenare due vettori di char.
Come già detto devi implementare un algoritmo di ordinamento (esempio https://it.wikipedia.org/wiki/Bubble_sort).
Ovviamente gli scambi di posizione, quando necessari, vanno fatti contemporaneamente sui due vettori, tra gli stessi indici.


Nulla va più veloce della luce, quindi rilassati.
PM Quote
Avatar
daniel007boss (Normal User)
Newbie


Messaggi: 9
Iscritto: 19/01/2018

Segnala al moderatore
Postato alle 21:21
Venerdì, 19/01/2018
Testo quotato

Postato originariamente da Mikelius:

Potresti almeno evitare le bestemmie nei commenti del codice?



hai perfettamente ragione mi scuso non mi ero accorto (dato che non ero l'unico a lavorare su quel programma).
mi scuso ancora.

PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 445
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 21:25
Venerdì, 19/01/2018
Perchè strncat() non puoi usarla? Specifiche del problema?




"Io ne ho viste cose che voi umani non potreste immaginarvi...."
PM Quote
Pagine: [ 1 2 3 4 5 ] Precedente | Prossimo