Ho due file:

fileA.txt
fileB.txt

entrambi contenenti serie numeriche intervallate dal carattere virgola.

del tipo:

1,2,3,4
10,34,56,80
9,43,65,79
ecc...

io usando la memorizzazione in buffer di memoria li vorrei confrontare (ogni riga del fileA con ogni riga del fileB) in modo da avere ad esempio:

Per due files di es. così:

fileA.txt

1,2,3,4
10,11,12,13
30,31,32,33

fileB.txt

10,2,40,51
9,13,20,21
40,42,43,44

un raffronto-report di questo tipo:

fileA.txt VS fileB.txt

riga 1,2,3,4 VS riga 10,2,40,51 -> un valore uguale (il 2)
riga 1,2,3,4 VS riga 9,13,20,21 -> nessun valore uguale
riga 1,2,3,4 VS riga 40,42,43,44 -> nessun valore uguale

riga 10,11,12,13 VS riga 10,2,40,51 -> un valore uguale (il 10)
riga 10,11,12,13 VS riga 9,13,20,21 -> un valore uguale (il 13)
riga 10,11,12,13 VS riga 40,42,43,44 -> nessun valore uguale

ecc...

Il codice finora messo insieme sarebbe questo:

codice:
for (int k=0; k<fileDim; k++) {
    for (int y=0; y<fileDim2; y++) {
 
 cout << "dimensione fileA:";
        cout << fileDim;
        cout << "\n";
        cout << k;
        
  cout << "dimensione fileB:";
        cout << fileDim2;
        cout << "\n";
        cout << y;
 
 
 if (buff[k] == buff2[y] && buff[k] !=',' && buff2[y] !=',' &&  buff[k] !='\n' && buff2[y] !='\n' )  {
        
        
        cout << "\n";
        cout << buff[k];
        cout << "VS";
        cout << buff2[y];
        cout << "\n";
        
        
        cout << "carattere uguale";
        punti++;
        cout << "\n";
        cin.get();               
                       
 } 
 else 
  {
        cout << "\n";
        cout << buff[k];
        cout << "VS";
        cout << buff2[y];
        cout << "\n";
        cout << "carattere NON uguale";
        cout << "\n";
        cin.get();               
                       
 }   
 if (punti >5 || buff[k]=='\n' || buff2[k]=='n') {
   righeanalisi++;        
   cout << "PUNTI COMPLESSIVI PER LA RIGA ";
   cout << righeanalisi;
   cout << " : ";
   cout << punti;
   cout << "\n";
   cout << "azzeriamo punti in quanto si passa alla seconda riga...";
   punti=0;
   //cin.get();        
  }         
 cout << "PUNTI X RIGA: ";
 cout << punti;
 //cin.get();
 
}

}

cout << "FINISH!";
cin.get();
ma in questo riscontro due GROSSI PROBLEMI

(1) mi confronta ogni elemento di riga del primo file con il suo corrispettivo (per posizione) elemento del secondo file passando ogni volta dopo aver fatto questo confronto alla riga successiva senza passare al confronto con il secondo,terzo,quarto elemento della riga del secondo file...

in sostanza invece di avere un controllo di questo tipo:

fileA.txt
1,2,3,4

fileB.txt
3,10,11,12
7,20,31,85

1vs3 -> non uguale
1vs10 -> non uguale
1vs11 -> non uguale
1vs12 -> non uguale
2vs3 -> non uguale
2vs10 -> non uguale
2vs11 -> non uguale
2vs12 -> non uguale
3vs3 -> UGUALE
3vs10 -> non uguale
3vs11 -> non uguale
3vs12 -> non uguale
4vs3 -> non uguale
4 vs ecc...

e poi passare a confrontare sempre la prima riga del primo file conb la seconda riga del secondo file sempre alla stessa maniera...

mi fa...

1vs3 -> non uguale

e poi passa a confrontarmi il primo elemento del primo file con il primo elemento della seconda riga del secondo file quindi:

1vs7 -> non uguale

ecc...



Grazie infinite a chi mi dipana sta matassa logiko-programmatica...

Dimenticavo il secondo PROBLEMONE...

(2) Ogni buff[k] o buff2[y] è un singolo carattere e quindi il confronto viene eseguito correttamente solo per i numeri con una cifra... ma la maggioranza di questi ne hanno 2...
10,11,12,13 ecc... e quindi la necessità di confrontare anche questi numeri formati da due caratteri... :master: