Buenas a todos!!
necesito ayuda con unos ejercicios para clase, a ver si alguien puede ayudarme porque ando un poco perdida ;)
Ejercicio 1:
-Escribir una función llamada trim que tome como entrada una cadena de caracteres y de como salida la misma cadena con los espacios a la izqda y dcha eliminados.
-Utilizar una de las siguientes cabeceras, destacar los principales inconvenientes de las demas:
//void trim(char *c);
//void trim(char *c){}
//void trim(char * & c);
//void trim(const char *c);
//void trim(const char * & c);
//char * trim(const char *c);
//char * trim(char *c);
//char * trim(const char *&c);
//char * &trim(const char *&c);
//char * &trim(char *&c);
//char * &trim(char *c);
Ejercicio 2:
Realizar una función, llamada 'split' que tome como entrada 2 cadenas de caracteres. como salida, la funcion debe devolver un vector de subcadenas de caracteres, resultado de subdividir la primera cadena por la segunda.Por ejemplo:
- split("hola=adios", "=" ) , daria como salida el vector {"hola", "adios"}
- split("supercali", "per" ) , daria como salida el vector {"su", "cali"}
- split("Antonio", "n" ) , daria como salida el vector {"A", "to", "io"}
- split("examen", "n" ) , daria como salida el vector {"exame", ""}
Ejercicio3:
En el ejercicio anterior, razonar cuál de las siguientes declaraciones de funciones es la + adecuada, y comentar cuales son los principales inconvenientes de las demas:
1- void split (char *c1, char *c2);
2- void split (char *c1, char c2);
3- void split (char c1, char c2);
4- void split (char *c1, char *c&2);
5- void split (char *&c1, char *c2);
6- void split (char *&c1, char *&c2);
7- void split (char *c1, const char *c2);
8- void split (const char *c1, const char *c2);
9- void split (char *c1, const char & *c2);
10- void split (char *c1, const char * &c2);
11- void split (const char *c1, const char *c2);
12- void split (const char *c1, char *c2);
13- void split (const char *&c1, char *c2);
14- void split (const char &*c1, char *c2);
15- char split (char *c1, char *c2);
16- char *split (const char *c1, char *c2);
17- char *split (char *&c1, char *c2);
18- char *&split (char *c1, char *c2);
19- char *&split (char *&c1, char &*c2);
20- char *&split (char *&c1, char *c2);
Ejercicio Avanzado:
Un APO se representa mediante un vector, donde cada descendiente directo (hijo) a la izqda de un nodo en la posicion 'i' se encuentra en la posición 2*i+1, y el hijo a la dcha en la posición 2*i+2.
Se pide:
-Definir una estructura de datos válida para poder almacenar un APO, denominada APO. discutir que ventajas e inconvenientes tiene la estructura definida.
-Supuesto que la estrucutra para implementar un APO es un vector de enteros definida como:
struct APO{
int * componentes;
int * valores_de_nodos;
}
implementar las siguientes funciones:
-Función para crear un APO con nodos etiketados como enteros
/**
@brief Crea un apo de enteros
@param n Max.no. de nodos del arbol
@return la dirección de memoria de una estructura que almacena un apo
@pre n>0
@post las componentes y los valores de los nodos del apo se inicializan al valor -1
*/
APO * CrearAPO(int n);
-Función para eliminar un APO
/**
@brief Elimina un APO previamente reservado con la funcion CrearAPO
@param arbol APO a eliminar
@pre arbol es un APO valido, reservado con la funcion CrearAPO
@post arbol=NULL
*/
bool eliminarAPO(APO * &arbol);
-Función para insertar un elemento del tipo entero en el APO
/**
@brief inserta un elemento en el
@param arbol APO
@param n Capacidad del APO
@param e elemento a insertar en el APO
@return true si se ha podido insertar (el APO tiene capacidad suficiente para insertar otro elemento) o false en caso contrario
@pre n>0
@post se cumplen todas las caracteristicas del APO tras la inserccion
*/
bool insertarEnAPO(APO * &arbol, int n, int e);
Muchas gracias por todo, cualquier ayuda me viene bien.
saludos ;)