/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Iinvertir las palabras que terminan en consonante.

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
hongee



Registrado: 16 Nov 2013
Mensajes: 27

MensajePublicado: 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

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com