Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Leer un archivo input.txt y obtener otro output.txt

Estas en el tema de Leer un archivo input.txt y obtener otro output.txt en el foro de C/C++ en Foros del Web. Hola, tengo esta funcion que me dice las coordenadas de una palabra en una matriz, en este caso la palabra es hard y proporciono tambien ...
  #1 (permalink)  
Antiguo 03/03/2007, 17:10
 
Fecha de Ingreso: febrero-2007
Mensajes: 6
Antigüedad: 17 años, 2 meses
Puntos: 0
Leer un archivo input.txt y obtener otro output.txt

Hola, tengo esta funcion que me dice las coordenadas de una palabra en una matriz, en este caso la palabra es hard y proporciono tambien la sopa[30][6]

"blahardblablablablablablablabla",
"imtriyingtodomybestbutisharda",
"blablahardblablabblablablablabl",
"blablablablabblablablablablabla",
"blablablablabblablablablablabla",
"blablablablabblablablablablabla",


Si corro el programa obtengo esto:

"hard" : (1,4) ///la fila y la columna en donde "hard" esta//
"hard" : (2,25)
"hard" : (3,7)


pero necesito un programa que lea un archivo input.txt que contiene:
1.- el numero de palabras a encontrar
2.- las palabras a encontrar
3.- la matriz que contiene a las palabras a encontrar

Como puedo modificar este codigo para que al momento de correrlo obtenga un archivo output.txt con la siguiente info:


"word1" : (1,4)
"word2" : (3,7)
.......
.......
"wordn" : (5,8)

POR FAVOR AYUDENME, CUALQUIER AYUDA ES BUENA.





#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define FILAS 30

int coordenada (const char *s, const char *t)
{
const char *p;
for (p=s; *p!='\0';p++){
const char *x=p, *y=t;
for (;*x!='\0' && *y!='\0' && *x==*y; x++, y++);
if(*y=='\0')
return p-s+1;
}
return -1;
}

int main (void)
{clrscr();
const char *sopa[]={"blahardblablablablablablablabla",
"imtriyingtodomybestbutisharda",
"blablahardblablabblablablablabl",
"blablablablabblablablablablabla",
"blablablablabblablablablablabla",
"blablablablabblablablablablabla",};
const char *palabra ="hard";
int i;
for (i = 0; i < FILAS; i++){
int col = coordenada ( sopa[i-1], palabra );
if ( col != -1 )
printf ( "\"%s\" : (%d,%d)\n", palabra, i, col );
}
getch();
return 0;
}
  #2 (permalink)  
Antiguo 05/03/2007, 19:13
 
Fecha de Ingreso: diciembre-2006
Mensajes: 13
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Leer un archivo input.txt y obtener otro output.txt

Fijate si hubiera algun otro error, pero = estaba muy bien, perdona si lo vi un poco apurado pero por ahora no tengo más tiempo ...
Código:
#include <stdio.h>
//#include <conio.h> en verdad ya esta obsoleta por eso nadie la quiere...
#include <stdlib.h>

#define FILAS 6
#define COLUMNAS 30// hubo un pequeño error aca

#define win32
#define linux	// en el foro se dio a conocer la utilidad de system 
#ifdef win32	// en este caso particular como un buen reemplazo de 
#define clrscr() system( "cls" );	//clrscr() de conio.
#else
#define clrscr() system( "clear" );
#endif

int coordenada (const char *s, const char *t)
{
	const char *p;
	for (p=s; *p!='\0';p++)
	{
		const char *x=p, *y=t;
		for (;*x!='\0' && *y!='\0' && *x==*y; x++, y++);
		if(*y=='\0')
			return p-s+1;
	}
	return -1;
}

int main (void)
{
	FILE *archivo;
	const char *palabra ="hard";
	int i;
	const char *sopa[]={"blahardblablablablablablablabla",
		"imtriyingtodomybestbutisharda",
		"blablahardblablabblablablablabl",
		"blablablablabblablablablablabla",
		"blablablablabblablablablablabla",
		"blablablablabblablablablablabla",};
	
		clrscr();
	
	archivo=fopen("output.txt","w");
	
	if(archivo==NULL)
		printf("No se puede acceder al archivo\n");
	else
	{
		for (i = 0; i < FILAS; i++){ // Anteriormente evaluabas por columnas 
			int col = coordenada ( sopa[i], palabra );//no empezas desde el -1, no existe :).
			if ( col != -1 )
				fprintf ( archivo,"\"%s\" : (%d,%d)\n", palabra,i+1, col ); 
		}
	//	getch();// usa getchar o getc(stdin); Ahora para los expertos Algún código
	}										// en ensamblador o una buena sugerencia ;)
	return 0;							// para no tener que usar por ej la curses solo para eso.
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:54.