saludos amigos..
tengo un problemilla con mi programa la cual necesito encontrar la coordenada en al que se encuentra una cadena en un archivo...
por ejemplo
juan es estudiante de medicina
pedro no hace nada
juan esta en la posicion (renglon 1, columna 1)
estudiante en la posicion (renglon 1, columna 9)
y asi respectivamente con cada renglon..
este es mi codigo.. les agradesco su ayuda..
Código:
#include <stdio.h>
#include <string.h>
#include <conio.h>
char renglon[80];
char palabras[100][80]; /* Todos los palabras */
char palabras_diferentes[100][80]; /* Solo palabras diferentes */
int i, j, k, total=0 /* Numero total de palabras*/,
diferentes=0 /* Numero de palabras diferentes */;
int Rep[100]; /* Repeticiones de cada palabra diferente */
void separador(char *renglon, char palabras[100][80], int *total);
void ocurrencias(char *nombre_archivo);
void coordenadas();
int main()
{
char nombre_archivo[100] = "palabras.txt";
clrscr();
ocurrencias(nombre_archivo);
coordenadas();
getch();
return 0;
}
/*
Recibe una cadena y devuelve las palabras de dicha cadena.
Los espacios y saltos de linea son los separadores entre palabras.
*/
void separador(char renglon[80], char palabras[100][80], int *total)
{
int i, j=0;
for(i=0; i<strlen(renglon); i++)
{
/* Si es un caracter distinto de espacio y salto de linea */
if(renglon[i]!=' ' && renglon[i]!='\n')
{
palabras[*total][j] = renglon[i];
j++;
}
/* Si es espacio o salto de linea */
else if(renglon[i]==' ' || renglon[i]=='\n')
{
/* Si el caracter anterior no es espacio ni salto de linea */
if(i>0 && renglon[i-1]!=' ' && renglon[i-1]!='\n')
{
palabras[*total][j] = '\0'; /* Indica fin de palabra */
*total = *total+1; /* Aumenta el numero de palabras */
j=0;
}
}
}
}
void ocurrencias(char nombre_archivo[100])
{
FILE *archivo;
archivo=fopen(nombre_archivo,"r");
if(archivo==NULL)
{
printf("No se encuentra archivo: %s\n", nombre_archivo);
return ;
}
/* Lee el archivo linea a linea y obtiene las palabras de esa linea */
while(fgets(renglon,80,archivo))
{
separador(renglon,palabras, &total);
}
fclose(archivo);
/* Saca copia del arreglo original */
for(i=0; i<total; i++)
strcpy(palabras_diferentes[i], palabras[i]);
/* Saca palabras diferentes */
diferentes = total;
for(i=0;i<diferentes;i++)
{
for(j=i+1;j<diferentes;j++)
{
/* Si encuentra palabra repetida */
if(!strcmp(palabras_diferentes[i], palabras_diferentes[j]))
{
/* Recorre una posicion elementos posteriores */
for(k=j+1;k<diferentes;k++)
strcpy(palabras_diferentes[k-1], palabras_diferentes[k]);
diferentes--;
j--;
}
}
}
/* Halla repeticiones de cada palabra distinta */
for(i=0; i<diferentes; i++)
Rep[i] = 0;
for(i=0; i<diferentes; i++)
for(j=0;j<total;j++)
if(!strcmp(palabras_diferentes[i], palabras[j]))
Rep[i]++;
gotoxy(10,5);printf("PALABRA\t\tREPETICIONES\t\tCOORDENADAS");
int y=7;
for(i=0; i<diferentes; i++)
{
gotoxy(11,y);printf("%s", palabras_diferentes[i]);
gotoxy(31,y);printf("%d",Rep[i]);
y=y+1;
}
}