| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
hongee
Registrado: 16 Nov 2013 Mensajes: 27
| Publicado: 23/09/2014 9:47 am | | | Título: Iinvertir las palabras que terminan en consonante. |
| Estimados, tengo que hacer lo siguiente. Desarrollar una función que reciba una cadena de caracteres e invierta aquellas palabras que finalizan en consonante.
Ej: hola casas gente hola sasac gente
En mi caso solo puse la opcion de las palabras que terminan con la vocal a, para probar, pero tendria que tener la opcion de todas las vocales. El problema que tengo es que cuando concateno, me deja basura entre las palabras y al final.
Tengo entendido que cuando se concatena la palabra destino empieza donde esta el \0 de la primer cadena y se pasa el \0 al final y asi segun las palabras q usemos.
| Código: | #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h>
#define max 80 void invertir (char cad2[80]);
int main() { char cad[max],cad2[max], cad3[max]; int i,j,largo; printf("Ingrese una frase: "); gets(cad); cad3[0]='\0'; for (i=0;cad[i];i++) { while (cad[i]!=' ' && cad[i]!='\0'&& cad[i]!='\n') { cad2[j]=cad[i]; j++; i++; } cad2[j]='\0'; if (cad2[j-1]!='a') { invertir(cad2); largo=strlen(cad2); cad2[largo]=' '; strcat(cad3,cad2); j=0; cad2[j]='\0'; } else { largo=strlen(cad2); cad2[largo]=' '; strcat(cad3,cad2); j=0; cad2[j]='\0'; } }
puts ("La frase queda: "); printf ("%s ",cad3); system ("pause"); return 0; }
void invertir (char cad2[80]) { int i,cont=0,j; char aux; for (i=0; cad2[i];i++) cont++; for (i=cont-1,j=0;i>j ;i--,j++) { aux=cad2[i]; cad2[i]=cad2[j]; cad2[j]=aux; } }
|
|
| | Volver arriba | |  | hongee
Registrado: 16 Nov 2013 Mensajes: 27
| Publicado: 27/09/2014 11:58 am | | | Título: |
| Depure bastante el programa y no funciona. Me toma la basura que sigue despues de la ultima palabra de la cadena :S
Si alguno se da cuenta donde esta el error desde ya le agradezco!!!!
| Código: |
/* 2) Desarrollar una función que reciba una cadena de caracteres e invierta aquellas palabras que finalizan en consonante. Ej: hola casas Hola sasac */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h>
#define max 80 void invertir (char cad2[80]);
int main() { char cad[max],cad2[max], cad3[max]; int i,j,largo; printf("Ingrese una frase: "); gets(cad); cad3[0]='\0'; j=0; i=0; while (cad[i]!='\0') { while (cad[i]!=' ' && cad[i]!='\0' && cad[i]!='\n') { cad2[j]=cad[i]; j++; i++; } cad2[j]='\0'; if (strchr("aeiou",cad2[j-1])==NULL)// termina en consonante { invertir(cad2); strcat(cad3,cad2); j=0; cad2[j]='\0'; i--; } else { largo=strlen(cad2); cad2[largo]=' '; cad2[largo+1]='\0'; strcat(cad3,cad2); j=0; cad2[j]='\0'; } i++; }
printf ("La frase queda: "); printf ("%s ",cad3); printf ("\n"); system ("pause"); return 0; }
void invertir (char cad2[80]) { int a,b,largo=0; char aux; largo=strlen(cad2); for (a=largo-1,b=0;a>b;a--,b++) { aux=cad2[a]; cad2[a]=cad2[b]; cad2[b]=aux; } cad2[largo]=' '; cad2[largo+1]='\0'; }
|
|
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |