elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con funcion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con funcion  (Leído 2,897 veces)
Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Problema con funcion
« en: 30 Septiembre 2012, 00:02 am »

Pues en el libro que estoy leyendo he empezado con las funciones y para ir probando intente cambiar un codigo que tenia yo, usando una funcion, aqui el codigo original:

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5.    int i;
  6.    char cadena [80];
  7.    scanf("%s%c", cadena);
  8.    for (i=0;cadena [i]!='\0';i++);
  9.    printf ("\nEl texto tiene %d caracteres.\n",i);
  10.    printf ("\nPresione ENTER para salir:");
  11.    while (getchar()!='\n')
  12.        ;
  13.    return 0;
  14. }

Y aqui el codigo usando una funcion:

Código
  1. #include <stdio.h>
  2.  
  3. int contador(int i, char letras){
  4. i = 0;
  5. for (i=0;letras [i]!='\0';++i);
  6. return i;
  7.  
  8. }
  9.  
  10. int main() {
  11.  
  12.    int x;
  13.    char cadena [80];
  14.    scanf("%s%c", cadena);
  15.    x = int contador(int i, char cadena);
  16.    printf ("\nEl texto tiene %d caracteres.\n", x);
  17.    printf ("\nPresione ENTER para salir:");
  18.    while (getchar()!='\n')
  19.        ;
  20.    return 0;
  21. }

Al compilarlo el segundo, me da los sigueintes errores:

En la funcion 'contador': 12:19: el valor del subindice no es ni matriz ni puntero ni vector

22:9 error: expected expression before 'int'

El primer fallo creo lo entiendo, se refiere al subindice de letras, letras, pero no entiendo el fallo, el segundo ya ni idea.

Saludos


« Última modificación: 30 Septiembre 2012, 00:14 am por Caster » En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Problema con funcion
« Respuesta #1 en: 30 Septiembre 2012, 00:18 am »

Algunos errores que he encontrado:

- En el prototipo de la función, tienes que declarar "letras" como un puntero, puesto que sino estás declarando un carácter en vez de una cadena de caracteres:

Código
  1. int contador(int i, char *letras)

- Cuando en main llamas a la función, no tienes que poner el tipo de cada variable, es decir, debes poner esto:

Código
  1. x =  contador(i,  cadena);

- La variable "i" no es necesaria pasarla por parámetros, puesto que la declaras en la propia función y después devuelves el resultado.

- La función scanf solo lee las cadenas de caracteres hasta el primer espacio encontrado. Para leer cadenas es mejor usar gets. Por tanto, el programa quedaría así:

Código
  1. #include <stdio.h>
  2.  
  3. int contador(char* letras){ //Es un array, no un solo carácter. No es necesario pasar "i" por parámetros.
  4. int i;
  5. for (i=0;letras [i]!='\0';++i);
  6. return i;
  7. }
  8.  
  9. int main() {
  10.    int x;
  11.    char cadena [80];
  12.    gets(cadena); //Scanf solo lee hasta el primer espacio. Para leer cadenas es recomendable usar gets
  13.    x =  contador(cadena); //No se ponen los tipos de las variables.
  14.    printf ("\nEl texto tiene %d caracteres.\n", x);
  15.    printf ("\nPresione ENTER para salir:");
  16.    while (getchar()!='\n')
  17.        ;
  18.    return 0;
  19. }
  20.  


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Problema con funcion
« Respuesta #2 en: 30 Septiembre 2012, 00:42 am »

Todo puede ser más fácil, sobre todo usando funciones:
Código
  1. #include <stdio.h>
  2.  
  3. int contador(char* letras){
  4. int i;
  5. for (i=0;letras [i]!='\0';++i);
  6. return i;
  7. }
  8.  
  9. int main() {
  10.    char cadena [80];
  11.    fgets(cadena,80,stdin);/*con gets te puedes "pasar" de caracteres*/
  12.    printf ("\nEl texto tiene %d caracteres.\n",contador(cadena));
  13.    printf ("\nPresione ENTER para salir:");
  14.    while (getchar()!='\n')
  15.        ;
  16.    return 0;
  17. }
  18.  
En línea

Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: Problema con funcion
« Respuesta #3 en: 30 Septiembre 2012, 08:59 am »

Ya funciona perfectamente, muchas gracias a los dos.

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROBLEMA CON FUNCIÓN CASE:
Programación Visual Basic
CRAB 8 2,717 Último mensaje 3 Septiembre 2005, 21:28 pm
por NYlOn
Problema con la funcion Chr
Programación Visual Basic
sircid 2 1,775 Último mensaje 9 Agosto 2006, 14:50 pm
por sircid
Problema con la función de comparación en el set de STL (C++)
Programación C/C++
placa4 0 1,547 Último mensaje 26 Noviembre 2012, 11:42 am
por placa4
Problema con Función.. « 1 2 »
ASM
Vaagish 16 9,624 Último mensaje 22 Mayo 2013, 20:19 pm
por Vaagish
Problema con función en c
Programación C/C++
Gigasnike95 1 1,672 Último mensaje 14 Diciembre 2014, 12:32 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines