Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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: 969
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
PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 449
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: 525
Iscritto: 14/04/2017

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

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
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.

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: 525
Iscritto: 14/04/2017

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



PM Quote
Pagine: [ 1 2 3 4 5 ] Precedente | Prossimo