Ver Mensaje Individual
  #10 (permalink)  
Antiguo 31/10/2012, 19:16
Avatar de cotolon
cotolon
 
Fecha de Ingreso: octubre-2012
Mensajes: 55
Antigüedad: 11 años, 6 meses
Puntos: 10
Respuesta: 2 consultas sobre funciones en C++

Cita:
Iniciado por OscarMariano Ver Mensaje
haciendo eso tu unico problema seria los espacios en blanco y el tamaño del arreglo porque el algoritmo para ver si es palindromo ya estaria hecho

Exacto ya está hecho el programa, bueno si podría contar los espacios, solo tendría que cambiar el isalpha por !isspace o algo así creo que se escribe.

Es que igual tengo esa duda, porque si después quiero hacer otro programa con una función que retorne una palabra o frase de tipo char no voy a saber como hacerlo porque me dará error todo el tiempo y no quiero usar mucho espacio en main

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Bueno ya lo solucioné, además de cambiar las funciones a prototipo, debía colocar un char* y no un char a la función declarada de arriba de main. El tema de la funcion convertirTexto era con un char *texto (un puntero), aunque dentro de la función aún tengo la duda de por qué para cambiar el valor de la variable texto[id] debo colocarlo como texto[xx] y no como *texto[xx], bueno dejo el código aquí:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <ctype.h>
  5. #include <string.h>
  6.  
  7. using namespace std;
  8.  
  9. bool palindromo(char*, int);
  10. int nuevoSize(char*, int);
  11. void convertirTexto(char *, char*, int, int);
  12.  
  13. int main()
  14. {
  15.     char frase[120];
  16.     int size;
  17.     cout << "Ingrese Texto: " << endl;
  18.     cin.getline(frase, 120, '\n');
  19.     size = strlen(frase);
  20.     system("CLS");
  21.  
  22.     cout << "Su Frase: " << endl << endl;
  23.     cout << frase << endl << endl;
  24.     cout << "Tamanio frase: " << size << endl << endl;
  25.  
  26.     //Calculamos la cantidad de elemento que debe contener la nueva cadena de caracteres
  27.     int id = nuevoSize(frase, size);
  28.  
  29.     char texto[id];
  30.     convertirTexto(texto, frase, size, id);
  31.  
  32.     cout << "Su Frase Convertida: " << endl << endl;
  33.     cout << texto << endl << endl;
  34.     cout << "Tamanio Frase: " << id << endl << endl;
  35.  
  36.     if (palindromo(texto, id))
  37.         cout << "Su Frase si es Palindromo" << endl;
  38.     else
  39.         cout << "Su Frase no es Palindromo" << endl;
  40.  
  41.     getche();
  42.     return 0;
  43. }
  44.  
  45. bool palindromo(char texto[], int tama){
  46.     for(int x = 0; x < tama/2; x++)
  47.         if (texto[x] != texto[tama - x -1])
  48.             return false;
  49.     return true;
  50. }
  51.  
  52. int nuevoSize(char texto[], int tama){
  53.     int id = 0, x = 0;
  54.     while(x < tama){
  55.         if (!isspace(texto[x]))
  56.                 id++;
  57.         x++;
  58.     }
  59.     return id;
  60. }
  61.  
  62. void convertirTexto(char *texto, char frase[], int size, int id){
  63.     int xx = 0;
  64.     for(int i = 0; i < size; i++)
  65.         if (!isspace(frase[i]) && xx < id)
  66.             {   if (isalpha(frase[i]))
  67.                     texto[xx] = tolower(frase[i]);
  68.                 else    texto[xx] = frase[i];
  69.                 xx++;
  70.             }
  71.         else if (xx >=id) break;
  72. }

Última edición por cotolon; 01/11/2012 a las 09:19 Razón: Solucionado