Tengo un archivo de texto en el cual están lineas como estas:
s123456_00045
s893264_00125
s893264_00032
s123456_00005
s112221_00452
s112221_00030
s893264_00025
s123456_00015
s112221_00001
s135133_00011
lo que quiero es generar a partir de ese un archivo como este:
s123456_00065
s893264_00182
s112221_00483
s135133_00011
es decir, en cada linea seleccionar la cadena antes del "_" como por ejemplo "s123456", ver si en la linea siguiente hay otra cadena igual y si lo hay entonces sumar su valor numérico después del guión. Para el ejemplo de arriba para "s123456" como hay otras lineas con la misma cadena, se sumaria 45+5+15 =65 por lo que la primera linea del nuevo archivo es: s123456_00065.
Se como leer el archivo, como crear el nuevo, como extraer las cadenas que necesito; pero lo que no me sale es hacer ese procedimiento de buscar los repetidos y sumar sus valores.
Unas de las cosas que estoy probando es ingresar las lineas en dos vectores y de hay realizar la operación pero no me ha funcionado el siguiente código que estaba probando.
Código:
Si hay sabe una manera de hacerlo o de hacer funcionar el código que puse arriba se los agradecería muchísimo.#include <iostream> #include <string.h> using namespace std; int existe(char *serie,char (*)[6]); int main(int argc,char *argv[]) { char series[8][6]={"65425","12345","12546","12345","12546","65425","98564","12546"}; int saldos[8]={2,6,9,5,4,9,7,3}; char *escritos[6]; int esaldos[8]; int ne=0; char cadena[6]; //int saldo=0; for(int i=0;i<8;i++) { //cout<<series[i]<<" -> "<<saldos[i]<<endl; strcpy(cadena,series[i]); if(existe(series[i],escritos)==0) { for(int j=i+1;j<8;j++) { if(series[i]==series[j]) { saldos[i]=saldos[i]+saldos[j]; strcpy(escritos[ne],series[i]); esaldos[ne]=saldos[i]; ne++; } } } } for(int k=0;k<ne;k++) cout<<escritos[k]<<" -> "<<esaldos[k]<<endl; return 0; } int existe(char *serie,char *escrito) { for(int i=0;i<8;i++) { if(strcmp(serie,escrito[i])==0) return 1; } return 0; }
Saludos.