nueva funcion en c

Iniciado por fernaEDLP, 15 Enero 2019, 01:31 AM

0 Miembros y 1 Visitante están viendo este tema.

fernaEDLP

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í:
int cuentavocales(char cadena[]);
void suprimirletra(char cadena[],char l);
void ponblancosalprincipio(char cadena[],int numblancos);

int main()
{
   char cad[80],c;
   int x,resultado;
   printf("ingrese una cadena por favor\n");
   gets(cad);
   resultado=cuentavocales(cad);
   printf("la cantidad de vocales es %d\n",resultado);
   printf("que letra desea suprimir?\n");
   scanf("%c",&c);
   suprimirletra(cad,c);
   printf("cuantos espacios en blancos desea tener\n");
   scanf("%d",&x);
   ponblancosalprincipio(cad,x);
   return 0;

}

int cuentavocales(char cadena[])
{
   int i=0,cont=0;
   while(cadena[i]!='\0')
   {
       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')
       {
           cont++;
       }
       i++;
   }
   return cont;
}
void suprimirletra(char cadena[],char l)
{
   int i=0;
   while(cadena[i]!='\0')
   {
       if(cadena[i]=='l')
       {
           printf(" ");
       }
     
       i++;
   }
puts(cad);
   return;
}
void ponblancosalprincipio(char cadena[],int numblancos)
{
   int i=0,j;
   while(cadena[i]==cadena[0])
   {
       for(j=0;j<numblancos;j++)
       {
           printf(" ");
       }
       i++;
   }
   puts(cadena);
   return ;
}




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

josue9243

qeqe?, no entendi q le paso al suprimir xd

Beginner Web

#2
CADENA

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


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 (cpp) [Seleccionar]

char suprimir_letra(E/S: cadena hola'\0' , suprimir 'a')
{
char extraido='@';//Valor arbitrario
hacer el recorrido
si encuentro esa letra
mover todo el arreglo 1 posicion a la izquierda
extraido=cadena[i];
cadena[i]=cadena[i+1];
devolver extraido;
}
7w7

fernaEDLP

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

K-YreX

El problema que tienes es que confundes una variable de tipo char con un literal de tipo char.

char a = 'e';
printf("%c", a); // muestra: e
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
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

fernaEDLP