Hola a todos, soy nuevo en este foro y tengo conocimientos básico en c++. Lo que estoy tratando de hacer es lo siguiente:
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:
#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;
}
Si hay sabe una manera de hacerlo o de hacer funcionar el código que puse arriba se los agradecería muchísimo.
Saludos.