Logo

Foro sobre los Ciclos Formativos de Grado Medio ( SMR ) y Superior ( ASIR, DAI, DAM y DAW ).

Corrección ejercicio

Foro sobre el módulo > Programación en lenguajes estructurados.

Corrección ejercicio

Notapor akila88 el 15 Jun 2011, 08:04

Muy buenas a tod@s

Bueno, por desgracia para mi, me toca examinarme al final de programación con todo y me estoy repasando ejercicios que me sean difíciles.
El caso es que me he encontrado con uno que me esta dando guerra y quería ver si me podíais ayudar =)
El ejercicio hace lo siguiente

Con un array de punteros a char, tienes que llenarlo de cadenas y pasarlo a una funcion Hola que recibira como parametro esa cadena de punteros a char y que devolvera un true o un false.

El caso es que de momento llevo algo asi:

**********************************************


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAM 10
#define TRUE 1
#define FALSE 0

//Defino un un elemento BOOL para la funcion Hola
typedef int BOOL;

BOOL Hola(char *[]);

void main(void){
char *array[TAM];
int i=0;

//Asigno memoria para cada uno de los punteros del array
for(i=0; i<=TAM; i++)
array[i]=(char *)malloc(sizeof(char)*TAM);

//Escribo las cadenas
for(i=0; i<=TAM; i++){
printf("Escriba palabras\n");
fgets(array[i], TAM, stdin);
}
//Aqui me salta el error, no funciona a partir de aqui
for(i=0; i<=TAM; i++)
printf("%s", *array[i]);

//Si es la funciona hola es verdadera...
if(Hola(array))
printf("La palabra hola esta en el texto");
else //si no...
printf("La palabra hola no esta en el texto");

return;
}

BOOL Hola(char *array[TAM]){
char cadenaaux="hola"; //Cadena que me permitira comparar con el array de cadenas
int i=0;

//intento de comparacion
while(i<TAM){
if(strcmp(array[i], cadenaaux))
return TRUE;

i++;
}

return FALSE;
}

Paso el array tal cual, sin pasarla por referencia, si no por valor(quiero intentar hacerlo asi aunque no estoy seguro de que se pueda, se que es una tontería ya que crearía otro array de las mismas características )
A ver si podéis echarme una mano, me examino mañana =S

un saludo
Avatar de Usuario
akila88
Visitante
Visitante
 
Mensajes: 12
Registrado: 09 May 2011, 21:01
Ciclo Formativo: DAI / DAM
Curso:
Acceso por: Prueba de Acceso
Provincia: Madrid
Instituto: I.E.S Clara del rey

Re: Corrección ejercicio

Notapor RODLON el 15 Jun 2011, 08:33

Que curioso, nunca habia utilizado un array de esa forma, poniendo *array[X], ni hecho nada sin poner corchetes y tal :blink1: . Pero lo he probado y cuando se lo pasas al printf no has de ponerle el asterisco. Asi funciona bien. Tambien creo que en los for has de hacer mientras i<TAM, en vez de i<=TAM, ya que asi comprobabas de las posiciones 0 a la 10, y solo tiene hasta la 9.

Al crear e instanciar "cadenaaux" me da error el compilador(uso el gcc de mingw en windows), yo lo he hecho asi:
char cadenaaux[4];
strcpy(cadenaaux,"hola");

El intento de comparar las cadenas podrias hacerlo con un for mejor que con el while, queda mas......mejor.
Debe registrarse para ver este enlace. Gracias por su visita.
Nada más lejos. Se que este foro lo visitan otros muchos del IES Sierra de guara: Hola!
Avatar de Usuario
RODLON
Iniciado
Iniciado
 
Mensajes: 174
Registrado: 01 Oct 2010, 23:31
Ciclo Formativo: DAI / DAM
Curso:
Acceso por: Prueba de Acceso
Provincia: Huesca
Instituto: IES Sierra de guara


Volver a PLE

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados