Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: fernaEDLP en 15 Enero 2019, 01:31 am



Título: nueva funcion en c
Publicado por: fernaEDLP en 15 Enero 2019, 01:31 am
hola de nuevo, estoy a full porque rindo en febrero 3 materias, y una de ellas es esta, tengo que crear tres funciones e implmentarlas, son las siguientes
int cuentavocales(char cad)
void suprimirletra(char cadena[,char letra)
void ponespaciosenblanco(char cadena,numblancos)
me salieron todas menos la de suprimir letra, el problema es que no me pasa como parámetro de referencia mi caracter que le paso en el main, me iguala cadena[i=='l', es decir me toma a l como caracter y yo quiero que lo use como variable, pensé en hacerlo por referencia, pero el enunciado del problema me pide que la función la defina tal cual la puse arriba, mi código quedo así:
Código
  1. int cuentavocales(char cadena[]);
  2. void suprimirletra(char cadena[],char l);
  3. void ponblancosalprincipio(char cadena[],int numblancos);
  4.  
  5. int main()
  6. {
  7.    char cad[80],c;
  8.    int x,resultado;
  9.    printf("ingrese una cadena por favor\n");
  10.    gets(cad);
  11.    resultado=cuentavocales(cad);
  12.    printf("la cantidad de vocales es %d\n",resultado);
  13.    printf("que letra desea suprimir?\n");
  14.    scanf("%c",&c);
  15.    suprimirletra(cad,c);
  16.    printf("cuantos espacios en blancos desea tener\n");
  17.    scanf("%d",&x);
  18.    ponblancosalprincipio(cad,x);
  19.    return 0;
  20.  
  21. }
  22.  
  23. int cuentavocales(char cadena[])
  24. {
  25.    int i=0,cont=0;
  26.    while(cadena[i]!='\0')
  27.    {
  28.        if(cadena[i]=='a'||cadena[i]=='e'||cadena[i]=='i'||cadena[i]=='o'||cadena[i]=='u'||cadena[i]=='A'||cadena[i]=='E'||cadena[i]=='U'||cadena[i]=='O'||cadena[i]=='I')
  29.        {
  30.            cont++;
  31.        }
  32.        i++;
  33.    }
  34.    return cont;
  35. }
  36. void suprimirletra(char cadena[],char l)
  37. {
  38.    int i=0;
  39.    while(cadena[i]!='\0')
  40.    {
  41.        if(cadena[i]=='l')
  42.        {
  43.            printf(" ");
  44.        }
  45.  
  46.        i++;
  47.    }
  48. puts(cad);
  49.    return;
  50. }
  51. void ponblancosalprincipio(char cadena[],int numblancos)
  52. {
  53.    int i=0,j;
  54.    while(cadena[i]==cadena[0])
  55.    {
  56.        for(j=0;j<numblancos;j++)
  57.        {
  58.            printf(" ");
  59.        }
  60.        i++;
  61.    }
  62.    puts(cadena);
  63.    return ;
  64. }
  65.  



pd:la gente que esta en este foro me ayuda mas que los ayudantes de mi facultad, mil gracias de antemano


Título: Re: nueva funcion en c
Publicado por: josue9243 en 15 Enero 2019, 03:12 am
qeqe?, no entendi q le paso al suprimir xd


Título: Re: nueva funcion en c
Publicado por: Beginner Web en 15 Enero 2019, 04:12 am
CADENA

Código
  1. vacio suprimir_letra(E/S: cadena hola'\0' , E: suprimir 'a')
  2. {
  3. hacer el recorrido
  4. si encuentro esa letra
  5. mover todo el arreglo 1 posicion a la izquierda
  6. cadena[i]=cadena[i+1];
  7. }
  8.  

Y si es funcion bueno extraes ese caracter , y en el main si existe pones el dato 'a' fue eliminado y si no lo encontro , no existe el dato;

Código
  1. char suprimir_letra(E/S: cadena hola'\0' , suprimir 'a')
  2. {
  3. char extraido='@';//Valor arbitrario
  4. hacer el recorrido
  5. si encuentro esa letra
  6. mover todo el arreglo 1 posicion a la izquierda
  7. extraido=cadena[i];
  8. cadena[i]=cadena[i+1];
  9. devolver extraido;
  10. }
  11.  


Título: Re: nueva funcion en c
Publicado por: fernaEDLP en 15 Enero 2019, 05:28 am
Hola creo que entendí tu idea, pero como haces para pasarle como parámetro la letra?, o sea suponete que yo ingreso  la 'a' en el main a través del caracter c, y se lo quiero pasar como parámetro a la función a través de la sentencia void suprimirletra(cad,c), en el momento que  hago eso y entra en el cuerpo de la función, mi función que esta definida como void suprimirletra(cadena,char l), no toma la letra 'a' a través de char l, sino que usa a l como caracter a suprimir


Título: Re: nueva funcion en c
Publicado por: K-YreX en 15 Enero 2019, 08:24 am
El problema que tienes es que confundes una variable de tipo char con un literal de tipo char.
Código
  1.  
  2. char a = 'e';
  3. printf("%c", a); // muestra: e
  4. printf("%c", 'a'); // muestra: a

Si usas un carácter entre comillas simples, estás usando ese caracter literalmente. Y si usas un caracter sin comillas estás usando el nombre de una variable y esa variable puede tener otro caracter guardado.

En tu función si usas 'I', estás usando el caracter 'I', pero si usas I (sin comillas), estás usando el caracter que tenga guardado la variable I que puede ser cualquier letra. Suerte :-X


Título: Re: nueva funcion en c
Publicado por: fernaEDLP en 15 Enero 2019, 20:56 pm
siii graciass!!