Autor
|
Tema: [Ayuda] Ejercicio simple (Leído 2,823 veces)
|
Cracky7
Desconectado
Mensajes: 22
|
Mi enunciado es: Crear una función que reciba una cadena y una letra, y devuelva la cantidad de veces que dicha letra aparece en la cadena. Y hasta ahora tengo: #include <stdio.h> #include <string.h> int numeroVeces(char c, char cadena[80]) { int i=0, b=0; for (i=0; i<strlen(cadena); i++) { if (strcmp(c , cadena [i ]) == 0) b++; } return b; } int main() { char a; char linea[80]; printf("Introduce la letra a buscar: "); printf("Introduce la cadena donde buscarla: "); printf("%d", numeroVeces (a , linea )); return 0; }
Por más que lo intento, se cierra siempre después de introducir mi cadena, y el debugger dice que el problema está en la línea: printf("%d", numeroVeces (a , linea ));
|
|
|
En línea
|
|
|
|
eleon
Desconectado
Mensajes: 99
|
Claro porque estás intentando pasar una cadena por valor. Las matrices/tablas/vectores/cadenas (son lo mismo) no pueden pasarse a una función directamente, es como si intentaras hacer esto: tabla1 = tabla2;
No se puede asignar una tabla a otra sino que hay que hacerlo elemento a elemento. Para pasar una tabla a una función debes usar paso por referencia. Saludos.
|
|
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
Hola! todos las cadenas pasan por referencia ya que el el nombre de una cadena es un puntero al inicio del arreglo.
El error esta en strcmp. Esta funcion recibe dos punteros a char (char *) y vos le estas pasando como primer argumento un char. Para contar las veces que aparece la letra solo basta con poner if (c==cadena)) b++;
|
|
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
Cracky7
Desconectado
Mensajes: 22
|
Vaya, hombre. Eso lo tenía puesto antes, lo cambié por strcmp y, como seguía sin funcionar, no lo volví a poner. Algo debo de haber cambiado y no me acuerdo qué.
De todas maneras ya funciona. ¡Gracias, durasno!
|
|
|
En línea
|
|
|
|
Anastacio
Desconectado
Mensajes: 111
|
A que te refieres con elemento por elemento???
|
|
|
En línea
|
You, stop to close my post, you were novice too!!!!!!!!!!!!
|
|
|
armizh
Desconectado
Mensajes: 187
His brain caught in a hole...
|
No debiese ser: if (c==cadena[i])) b++;
?? Ademas es redundante hacer esto: //le das valor a i int i=0
y luego //le vuelves a dar valor a i ???? for (i=0; i<strlen(cadena); i++)
Tal vez esto podria resultar... int numeroVeces(char c, char cadena[80]) { int i, b=0; for (i=0; i<strlen(cadena); i++) { if (c==cadena[i]) //tambien puede ser if (strcmp((char *)c, cadena[i]) == 0) b++; } return b; }
Saludos
|
|
|
En línea
|
Visita mi blog: http://armizh.10h.us/Fnx, fork de FreeNOS: git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++: git clone https://github.com/armizh/Hamster
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Dos detalles a considerar ... El primero es solo para reducción del código fuente. Ya que se deben verificar cada uno de los caracteres de la cadena no es necesario el uso de la función "strlen", basta con verificar si el carácter es el indicador del final de la cadena (el '\0'): int i, b = 0; for (i = 0; cadena[i] != '\0'; i++) if (cadena[i] == c) b++;
El segundo es un error en el comentario: if (c==cadena[i]) //tambien puede ser if (strcmp((char *)c, cadena[i]) == 0)
Eso no funcionara ya que el valor almacenado en la variable "c" se tomaría como una dirección en memoria, tampoco vale como segundo argumento "cadena[ i ]" ya que es un carácter. Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Explicacion de un simple ejercicio
Java
|
camaleon123
|
1
|
2,840
|
6 Enero 2010, 06:07 am
por Leyer
|
|
|
Ayuda con C++, Ejercicio Simple [Soy Novato]
Programación C/C++
|
xmbeat92
|
3
|
5,015
|
1 Octubre 2010, 07:47 am
por xmbeat92
|
|
|
Un ayuda con un ejercicio muy simple de python pero que no...
Programación General
|
AlexKurban
|
1
|
1,911
|
7 Noviembre 2013, 18:33 pm
por AlexKurban
|
|
|
Ejercicio simple estructuras
Programación C/C++
|
Ja_90
|
4
|
2,440
|
13 Octubre 2014, 20:33 pm
por Ja_90
|
|
|
Ejercicio simple de C++
Programación C/C++
|
sjav96
|
0
|
1,300
|
20 Marzo 2016, 19:27 pm
por sjav96
|
|