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

Pasar puntero como parametro de entrada a una funcion

Estas en el tema de Pasar puntero como parametro de entrada a una funcion en el foro de C/C++ en Foros del Web. Hola, estoy haciendo los ejercicios de un libro y en este me pide lo siguiente: Código: 1. Escribir un programa con una función que calcule ...
  #1 (permalink)  
Antiguo 06/07/2011, 02:33
 
Fecha de Ingreso: mayo-2011
Ubicación: Almeria (España)
Mensajes: 51
Antigüedad: 10 años
Puntos: 3
Exclamación Pasar puntero como parametro de entrada a una funcion

Hola, estoy haciendo los ejercicios de un libro y en este me pide lo siguiente:

Código:
1. Escribir un programa con una función que calcule la longitud de una cadena de
caracteres. El nombre de la función será LongitudCadena, debe devolver un "int", y
como parámetro de entrada debe tener un puntero a "char". En "main" probar con
distintos tipos de cadenas: arrays y punteros.
Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3. //COPYRIGHT (C) JESUS MARTIN BERLANGA 2011 TODOS LOS DERECHOS RESERVADOS
  4. //SOLO SE PERMITE EXHIBIR ESTE TEXTO MENCIONANDO AL AUTOR Y ESTA LICENCIA
  5.  
  6. int LongitudCadena(char pcadenafn[100]);
  7. char cadena[100];
  8. char *pcadena;
  9. char comprobar;
  10. char cadenains;
  11.  
  12. int main()
  13. {
  14. // ----------
  15. cout << "Programa dessarollado por Jesus Martin Berlanga." << endl;
  16. cout << "COPYRIGHT (C) JESUS MARTIN BERLANGA 2011 TODOS LOS DERECHOS RESERVADOS" << endl;
  17. cout << "SOLO SE PERMITE EXHIBIR ESTE TEXTO MENCIONANDO AL AUTOR Y ESTA LICENCIA" << endl;
  18. cout << endl;
  19. inicio:
  20. cout << "Introduce una cadena de caracteres para averiguar su longitud" << endl;
  21. cin >> cadena;
  22. pcadena = &cadena;
  23. LongitudCadena(cadena);
  24.  
  25. cout << "Introduce 1 para reiniciar y otro caracter y/o numero para salir:" << endl;
  26. cin >> comprobar;
  27. if(comprobar == 1)
  28.     {
  29.        goto inicio;
  30.     }
  31. else
  32.     {
  33.        return 0;
  34.     }
  35. // ----------
  36. }
  37.  
  38.  
  39. int LongitudCadena(char pcadenafn[100])
  40. {
  41.     int longitudcadenavar;
  42.     longitudcadenavar = strlen(pcadenafn);
  43.     cout << "La longitud de la cadena de caracteres es:";
  44.     return *pcadenafn;
  45. }

La verdad es que no llebo muy bien esto del c++, y espero que podais echarme una mano =S.
Me dan errores por todos lados xD.

__________________________________________________
http://3dprog-blog.dyndns.org
  #2 (permalink)  
Antiguo 06/07/2011, 04:58
 
Fecha de Ingreso: marzo-2011
Mensajes: 94
Antigüedad: 10 años, 1 mes
Puntos: 3
Respuesta: Pasar puntero como parametro de entrada a una funcion

Hola, tu único error es que al asignar

Código C++:
Ver original
  1. pcadena = &cadena

cadena en si ya es una dirección de memoria, no un valor de una dirección, con lo cual tienes dos soluciones:


Código C++:
Ver original
  1. pcadena = &cadena[0]


Código C++:
Ver original
  1. pcadena = cadena

y bueno ya después de eso deberías hacer esto en la linea 43:

Código C++:
Ver original
  1. cout << "La longitud de la cadena de caracteres es: " << longitudcadenavar <<endl;

para que te muestre la longitud.

Ademas si quieres que te reconozca la variable 'comprobar' como un numero tienes dos soluciones :

O declaras la variable de tipo int (y no de char) :


Código C++:
Ver original
  1. int comprobar; //linea 9

o utilizas el valor constante del valor introducido:


Código C++:
Ver original
  1. if(comprobar == '1') //linea 27


El codigo se podría mejorar pero por lo menos compila y hace lo que tú quieres :

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3. //COPYRIGHT (C) JESUS MARTIN BERLANGA 2011 TODOS LOS DERECHOS RESERVADOS
  4. //SOLO SE PERMITE EXHIBIR ESTE TEXTO MENCIONANDO AL AUTOR Y ESTA LICENCIA
  5.  
  6. int LongitudCadena(char pcadenafn[100]);
  7. char cadena[100];
  8. char *pcadena;
  9. char comprobar;
  10. char cadenains;
  11.  
  12. int main()
  13. {
  14. // ----------
  15. cout << "Programa dessarollado por Jesus Martin Berlanga." << endl;
  16. cout << "COPYRIGHT (C) JESUS MARTIN BERLANGA 2011 TODOS LOS DERECHOS RESERVADOS" << endl;
  17. cout << "SOLO SE PERMITE EXHIBIR ESTE TEXTO MENCIONANDO AL AUTOR Y ESTA LICENCIA" << endl;
  18. cout << endl;
  19. inicio:
  20. cout << "Introduce una cadena de caracteres para averiguar su longitud" << endl;
  21. cin >> cadena;
  22. pcadena = &cadena[0];
  23. LongitudCadena(cadena);
  24.  
  25. cout << "Introduce 1 para reiniciar y otro caracter y/o numero para salir:" << endl;
  26. cin >> comprobar;
  27. if(comprobar == '1')
  28.     {
  29.        goto inicio;
  30.     }
  31. else
  32.     {
  33.        return 0;
  34.     }
  35. // ----------
  36. }
  37.  
  38.  
  39. int LongitudCadena(char pcadenafn[100])
  40. {
  41.     int longitudcadenavar;
  42.     longitudcadenavar = strlen(pcadenafn);
  43.     cout << "La longitud de la cadena de caracteres es: " << longitudcadenavar <<endl;
  44.     return *pcadenafn;
  45. }

Un saludo!

Última edición por Checho360; 06/07/2011 a las 05:07
  #3 (permalink)  
Antiguo 06/07/2011, 07:30
 
Fecha de Ingreso: mayo-2011
Ubicación: Almeria (España)
Mensajes: 51
Antigüedad: 10 años
Puntos: 3
Respuesta: Pasar puntero como parametro de entrada a una funcion

Cita:
Iniciado por Checho360 Ver Mensaje
Hola, tu único error es que al asignar

Código C++:
Ver original
  1. pcadena = &cadena

cadena en si ya es una dirección de memoria, no un valor de una dirección, con lo cual tienes dos soluciones:


Código C++:
Ver original
  1. pcadena = &cadena[0]


Código C++:
Ver original
  1. pcadena = cadena

y bueno ya después de eso deberías hacer esto en la linea 43:

Código C++:
Ver original
  1. cout << "La longitud de la cadena de caracteres es: " << longitudcadenavar <<endl;

para que te muestre la longitud.

Ademas si quieres que te reconozca la variable 'comprobar' como un numero tienes dos soluciones :

O declaras la variable de tipo int (y no de char) :


Código C++:
Ver original
  1. int comprobar; //linea 9

o utilizas el valor constante del valor introducido:


Código C++:
Ver original
  1. if(comprobar == '1') //linea 27


El codigo se podría mejorar pero por lo menos compila y hace lo que tú quieres :

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3. //COPYRIGHT (C) JESUS MARTIN BERLANGA 2011 TODOS LOS DERECHOS RESERVADOS
  4. //SOLO SE PERMITE EXHIBIR ESTE TEXTO MENCIONANDO AL AUTOR Y ESTA LICENCIA
  5.  
  6. int LongitudCadena(char pcadenafn[100]);
  7. char cadena[100];
  8. char *pcadena;
  9. char comprobar;
  10. char cadenains;
  11.  
  12. int main()
  13. {
  14. // ----------
  15. cout << "Programa dessarollado por Jesus Martin Berlanga." << endl;
  16. cout << "COPYRIGHT (C) JESUS MARTIN BERLANGA 2011 TODOS LOS DERECHOS RESERVADOS" << endl;
  17. cout << "SOLO SE PERMITE EXHIBIR ESTE TEXTO MENCIONANDO AL AUTOR Y ESTA LICENCIA" << endl;
  18. cout << endl;
  19. inicio:
  20. cout << "Introduce una cadena de caracteres para averiguar su longitud" << endl;
  21. cin >> cadena;
  22. pcadena = &cadena[0];
  23. LongitudCadena(cadena);
  24.  
  25. cout << "Introduce 1 para reiniciar y otro caracter y/o numero para salir:" << endl;
  26. cin >> comprobar;
  27. if(comprobar == '1')
  28.     {
  29.        goto inicio;
  30.     }
  31. else
  32.     {
  33.        return 0;
  34.     }
  35. // ----------
  36. }
  37.  
  38.  
  39. int LongitudCadena(char pcadenafn[100])
  40. {
  41.     int longitudcadenavar;
  42.     longitudcadenavar = strlen(pcadenafn);
  43.     cout << "La longitud de la cadena de caracteres es: " << longitudcadenavar <<endl;
  44.     return *pcadenafn;
  45. }

Un saludo!
Muchas gracias funciona perfect !
  #4 (permalink)  
Antiguo 06/07/2011, 10:56
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 11 años
Puntos: 228
Respuesta: Pasar puntero como parametro de entrada a una funcion

No es por nada pero no creo que la idae del ejercicio sea aprender a usar la funcion strlen..No se de donde es el ejercicio pero me parece que la idea seria calculara a mano la longitud sin usar funciones de string.h.

Es solo mi impresion, lo demas esta bien hecho.

Etiquetas: caracteres, entrada, funcion, parametro, pasar, programa, puntero, cadenas
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 07:44.