PDA

Visualizza la versione completa : [C++] Concatenamento stringhe ed eliminazione stringhe uguali


elefante77
06-11-2006, 16:21
Salve a tutti sono nuovo di questo forum e vorrei porvi un problema, che non so risolverlo:
Ho un file di testo.txt scritto così:
Alfa 147 Roma 1
BMW 320 Napoli 2
Fiat 600 Milano 3
1 Fabio 21 Bologna
2 Maria 26 Crema
3 Giuseppe 25 Torino

Io dovrei creare dgli accoppiamenti tra le auto e i conducenti.
Le coppie equivalgono ai numeri che si trovano alla fine delle auto e i numeri che si trovano all'inizio dei nomi, tipo:
Alfa 147 Roma
Fabio 21 Bologna

E poi il programma dovrebbe controllare se nel listato siano presenti stringhe doppie, nel caso affermativo bisogna eliminarle.

C'è qualcuno chepuò darmi una mano.
Grazie

MItaly
06-11-2006, 16:23
... e quale parte del lavoro non ti è chiaro come implementare? :confused:

alka
06-11-2006, 16:34
Di quale linguaggio stiamo parlando?

E' obbligatorio indicarlo, come da Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887).

elefante77
06-11-2006, 16:36
Allora io riesco a farlo se in precedenza nel file testo "Archivio_auto.txt" imposto le coppie a priori cioe:

Alfa 147 Roma
Fabio 21 Bologna
BMW 320 Napoli
Maria 26 Crema
Fiat 600 Milano
Giuseppe 25 Torino

Lo svolgo con fscanf e il gioco è fatto. Ma se non posso modificare il file di testo, non riesco a far riconoscere le coppie al programma, cioè non riesco a impostare la funzione logica di riconoscere il numero ad es. "1" della stringa Auto con il n. "1" del proprietario e quindi poi di stamparmi a video le coppie corrette, anche se sitrovano mescolate tra di loro e di controllare se esistono stringhe uguali ed eliminarle.

elefante77
06-11-2006, 16:40
Scusa ai ragione ho dimenticato di specificarlo il C++

MItaly
06-11-2006, 16:41
Ti basta usare un array: leggi i dati delle auto e li metti nella posizione dell'array corrispondente, quindi fai lo stesso mestiere con i dati dei proprietari (ovviamente in un altro array). Quindi stampi il contenuto dei due arrays con un for. Se non sai a compile time il numero di auto e conducenti usa la classe vector della STL.

elefante77
06-11-2006, 16:46
Scusa se sono stressante, ma potresti compilarmi questa parte di alogaritmo? grazie

elefante77
06-11-2006, 19:23
Questo è il programma compilato da me, potresti corregermelo per fare le cose che ho sopra elencato. Grazie

/*LEGGE DA FILE.txt E SAMPA A VIDEO IL FILE COPPIE*/

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

typedef struct {
char auto[50];
int tipo_auto;
char citta_auto[50];
int n_auto;
int n_lui;
char nome_lui[50];
int eta_lui;
char citta_lui[50];
} COPPIE;


int main()
{
int i, ncoppie=0, res;
FILE *fp;
fp=fopen("Archivio_coppie.txt", "r");
COPPIE archivio[50];


if (fp==NULL) /*Si è verificato un errore il file Archivio_coppie non esiste*/
printf ("Errore: il file 'Archivio_coppie.txt' non esiste\n");

do
{ res=fscanf (fp,"%s %d %s %d %d %s %d %s" , archivio[ncoppie].auto,
&archivio[ncoppie].tipo_auto,
archivio[ncoppie].citta_auto,
&archivio[ncoppie].n_auto,
&archivio[ncoppie].n_lui,
archivio[ncoppie].nome_lui,
&archivio[ncoppie].eta_lui,
archivio[ncoppie].citta_lui);
}


while (res!=EOF && ++ncoppie);
fclose (fp);

for (i=0; i<ncoppie; i++)
{ printf ("\n%s\n%s\n%d\n%d\n%s\n%s\n", archivio[i].auto,
archivio[i].nome_lui,
archivio[i].tipo_auto,
archivio[i].eta_lui,
archivio[i].citta_auto,
archivio[i].citta_lui);

printf ("\nPremi INVIO per visualizzare la coppia successiva\n");
getchar();
}

printf ("\n\nPremi 'INVIO' per chiudere il programma.\n\n");
getchar();


return 0;
}

elefante77
07-11-2006, 18:03
Dai, c'è qualcuno che mi da un suggerimento per risorverlo?
Mi sto sbattendo la testa

Loading