28/07/09 15:07
tommyprojects
Ho fatto passettini da gigante pigmeo...
Ecco qua:
#include <iostream>
#include <fstream>
using namespace std;
int main (int argc, char *argv[])
{
ofstream pippo;
pippo.open("estrazioni2.txt", ios::out);
char s[]="test file";
//SPAZIO PER LETTURA FILE...
FILE * pFile;
char string [1000];
pFile = fopen ("estrazioni.txt" , "r"
if (pFile == NULL) perror ("Errore"
else {
while(!feof(pFile))
{
fgets(string , 100 , pFile);
if(string[11]=='B' && string[12]=='A')
{
//scelta delle sole righe conteneti BA
// quello che vuoi ...
//------------------------------------
//-------prova espressione regolare
int inizio, lunghezza;
//char stringa[1000]= string;
char subs[10];
inizio=13;
lunghezza=30;
strncpy(subs,string+inizio,lunghezza);
//subs[lunghezza]=0;
//----------------------------------
pippo << subs;
//puts (subs);
}
}
}
//--------------------------
//cout << "Hello World!" << endl;
cout << "Press ENTER to continue..." << endl;
cin.get();
return 0;
}
In pratica adesso ho un file estrazioni2.txt con solo i numeri di BA separati da enne spazi... spazi piccoli tra i numeri di ciascuna estrazione e spazi grossi tra una estrazione e l'altra...
prima di passare al confronto di array... dovrei sostituire al posto degli spazi piccoli il carattere "," mettere le varie estrazioni una sotto l'altra... e infine... aggiungere alla fine di ognuna di esse un carattere ";"
Un pò di strada l'ho fatta ma me ne resta ancora moltissima davanti...
la funzione replace esiste in c++? se si.. come si usa?
THANKS a tutti gli eventuali contributi
Ecco qua:
#include <iostream>
#include <fstream>
using namespace std;
int main (int argc, char *argv[])
{
ofstream pippo;
pippo.open("estrazioni2.txt", ios::out);
char s[]="test file";
//SPAZIO PER LETTURA FILE...
FILE * pFile;
char string [1000];
pFile = fopen ("estrazioni.txt" , "r"
if (pFile == NULL) perror ("Errore"
else {
while(!feof(pFile))
{
fgets(string , 100 , pFile);
if(string[11]=='B' && string[12]=='A')
{
//scelta delle sole righe conteneti BA
// quello che vuoi ...
//------------------------------------
//-------prova espressione regolare
int inizio, lunghezza;
//char stringa[1000]= string;
char subs[10];
inizio=13;
lunghezza=30;
strncpy(subs,string+inizio,lunghezza);
//subs[lunghezza]=0;
//----------------------------------
pippo << subs;
//puts (subs);
}
}
}
//--------------------------
//cout << "Hello World!" << endl;
cout << "Press ENTER to continue..." << endl;
cin.get();
return 0;
}
In pratica adesso ho un file estrazioni2.txt con solo i numeri di BA separati da enne spazi... spazi piccoli tra i numeri di ciascuna estrazione e spazi grossi tra una estrazione e l'altra...
prima di passare al confronto di array... dovrei sostituire al posto degli spazi piccoli il carattere "," mettere le varie estrazioni una sotto l'altra... e infine... aggiungere alla fine di ognuna di esse un carattere ";"
Un pò di strada l'ho fatta ma me ne resta ancora moltissima davanti...
la funzione replace esiste in c++? se si.. come si usa?
THANKS a tutti gli eventuali contributi
Ultima modifica effettuata da tommyprojects 28/07/09 15:08
aaa
02/08/09 9:55
tommyprojects
Dunque anche questo STEP ^ l'ho risolto adesso sono in possesso di due file FILE1 e FILE2 regolarmente formattati... e devo inserirne le rispettive righe in due relativi arrays...
Ecco il codice di lettura di uno dei due file con la tentata... implementazione dell'inserimento in array...
32 C:\Dev-Cpp\cisonoquasi\cisonoquasi\CARICAMENTOARRAY1-prova2.cpp invalid operands of types `std::string[5000]' and `char' to binary `operator<<' riferito alla riga:
//---------------------------------------------------------------
Ecco il codice di lettura di uno dei due file con la tentata... implementazione dell'inserimento in array...
# include <iostream> // librerie # include <fstream> // necessarie per le seguenti operazioni using namespace std; int main (int argc, char *argv[]) { string linea; string array[4600]; int numrighe=0; ifstream read("file1.txt",ios::in); // apre il file 'file1 in lettura' if(read) { while(!read.eof()) //mentre non siamo arrivati alla fine del file { getline(read,linea,'\n'); cout << linea << endl; numrighe++; //provo a caricare un VETTORE (array) con le stringhe ricavate... string ARRAY1[5000]; //inizializzo array1 //cerco di popolare il vettore... array... di ogni singola riga-stringa-linea... for (int i=0;i<5000;i++) { ARRAY1 << linea[i]; // Ma nulla... al momento della compilazione ottengo:
32 C:\Dev-Cpp\cisonoquasi\cisonoquasi\CARICAMENTOARRAY1-prova2.cpp invalid operands of types `std::string[5000]' and `char' to binary `operator<<' riferito alla riga:
ARRAY1 << linea[i]; }
//---------------------------------------------------------------
} //numero righe: 4537 cout << "\n\n\n"; cout << "NUMERO RIGHE:"; cout << numrighe; cout << "\n\n\n"; cout << "Press ENTER to continue..." << endl; cin.get(); read.close(); /* chiude il file */ } }
Ultima modifica effettuata da tommyprojects 02/08/09 10:04
aaa
02/08/09 10:01
theprogrammer
Postato originariamente da tommyprojects:
Dunque anche questo STEP ^ l'ho risolto
Dunque anche questo STEP ^ l'ho risolto
Dire che lo hai risolto mi sembra eccessivo ... te lo hanno risolto, sarebbe meglio ... :-)
adesso sono in possesso di due file FILE1 e FILE2 regolarmente formattati... e devo inserirne le rispettive righe in due relativi arrays...
Perche' non lo facevi durante la scrittura di FILE2?
aaa
02/08/09 10:07
tommyprojects
Postato originariamente da tommyprojects:
Dunque anche questo STEP ^ l'ho risolto
Dunque anche questo STEP ^ l'ho risolto
Dire che lo hai risolto mi sembra eccessivo ... te lo hanno risolto, sarebbe meglio ... :-)
Io in primis devo ricostruire il programma + veloce poi mi dedicherò allo studio approfondito della materia che devo dire comincia davvero ad affascinarmi...
Perche' non lo facevi durante la scrittura di FILE2?
adesso sono in possesso di due file FILE1 e FILE2 regolarmente formattati... e devo inserirne le rispettive righe in due relativi arrays...
Perche' non lo facevi durante la scrittura di FILE2?
Non ho capito la domanda...
aaa
02/08/09 10:14
theprogrammer
La prima era una affermazione ... diciamo che lo hai avuto risolto.
Per la domanda, se devi caricare i dati in un array perche' non farlo quando stai leggendo da FILE1 per scrivere in FILE2? Intendo, nello stesso codice ?
Per la domanda, se devi caricare i dati in un array perche' non farlo quando stai leggendo da FILE1 per scrivere in FILE2? Intendo, nello stesso codice ?
aaa
02/08/09 10:20
tommyprojects
Perchè FILE1 e FILE2 non devono venir sovrascritti...
Meglio parlare di uno solo FILE1...
FILE1 ad esempio deve venir letto e inserito nel totale delle sue righe in rispettivi elementi di ARRAY1
Es.
FILE1:
1,2,3,4,5;
14,5,26,7,8;
7,3,9,10,16;
deve diventare...
ARRAY1=([0]=1,2,3,4,5[1]=14,5,26,7,8[2]=7,3,9,10,16);
lasciamo stare FILE2 che non è altro che un altro file da elaborare successivamente allo stesso modo...
Meglio parlare di uno solo FILE1...
FILE1 ad esempio deve venir letto e inserito nel totale delle sue righe in rispettivi elementi di ARRAY1
Es.
FILE1:
1,2,3,4,5;
14,5,26,7,8;
7,3,9,10,16;
deve diventare...
ARRAY1=([0]=1,2,3,4,5[1]=14,5,26,7,8[2]=7,3,9,10,16);
lasciamo stare FILE2 che non è altro che un altro file da elaborare successivamente allo stesso modo...
Ultima modifica effettuata da tommyprojects 02/08/09 10:21
aaa
02/08/09 10:40
tommyprojects
Postato originariamente da tommyprojects:
Perchè FILE1 e FILE2 non devono venir sovrascritti...
Meglio parlare di uno solo FILE1...
FILE1 ad esempio deve venir letto e inserito nel totale delle sue righe in rispettivi elementi di ARRAY1
Es.
FILE1:
1,2,3,4,5;
14,5,26,7,8;
7,3,9,10,16;
deve diventare...
ARRAY1=([0]=1,2,3,4,5[1]=14,5,26,7,8[2]=7,3,9,10,16);
lasciamo stare FILE2 che non è altro che un altro file da elaborare successivamente allo stesso modo...
Perchè FILE1 e FILE2 non devono venir sovrascritti...
Meglio parlare di uno solo FILE1...
FILE1 ad esempio deve venir letto e inserito nel totale delle sue righe in rispettivi elementi di ARRAY1
Es.
FILE1:
1,2,3,4,5;
14,5,26,7,8;
7,3,9,10,16;
deve diventare...
ARRAY1=([0]=1,2,3,4,5[1]=14,5,26,7,8[2]=7,3,9,10,16);
lasciamo stare FILE2 che non è altro che un altro file da elaborare successivamente allo stesso modo...
Risolto... anche questo grazie ad un altro amico programmatore... così non importa che vai a verificare adesso procedendo... dovrei:
riprendere ogni elemento (stringa) dell'array...
ritrasformarlo in array ARRAY1diSTRINGA1
e confrontarlo con un qualcosa di analogo a array_intersect (php) in c++ infine con ARRAY2diSTRINGA2 (proveniente dallo stesso tipo di elaborazione ma per FILE2) per vedere quante occorrenze risultino eventualmente verificate.
GRAZIE
CIAO
e
BUONA SUNDAY!
aaa