
Invertir una palabra
C/Visual C
Publicado el 14 de Enero del 2003 por Sebastian (12 códigos)
10.199 visualizaciones desde el 14 de Enero del 2003
Invierte palabras de una frase
/*Id. programa: String 4 */
/*Autor: Nieva, Sebastian */
/*Fecha de creacion: 19/03/02 */
/*Fecha de ultima modificacion: 27/03/02 */
/*Tarea: Invierte palabras de una frase */
/*Version: 1.0 */
/*Lenguaje: ANSI C */
/*Requerimientos: Nada */
/*Recibe: Nada */
/*Entrega: Nada */
#include<stdio.h>
#include<conio.h>
#define MAX 256
void ingreso(char*);
void invertir(char *, char*);
void main(void)
{
char vec[MAX],inversion[MAX];
clrscr();
printf ("\t\t\t*****************\n");
printf ("\t\t\t* EJERCICIO 4 *\n");
printf ("\t\t\t*****************\n");
printf ("\t\t - PANTALLA PRINCIPAL -\n\n");
ingreso(vec);
invertir(vec, inversion);
printf("FRASE INGRESADA: %s\n", vec);
printf("FRASE INVERTIDA: %s\n", inversion);
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nVERSION 1.0\nCOPYRIGHT 2002-2010\n");
printf("PROGRAMA DESARROLLADO POR SEBASTIAN NIEVA \n");
printf("OPRIMA UNA TECLA PARA TERMINAR........");
getch();
}
void ingreso(char *s)
{
printf("INGRESE UNA FRASE\n");
gets(s);
}
void invertir(char *s, char *inv)
{
int strlen(char *);
void strcpys(char *, char *);
char *posAux=s; //posicion auxiliar desde donde comienza la copia
int cant=0,
longitud=strlen(s);
while(*s!=NULL)
{
if(*s==' ') //ascii del blanco
{
*s=NULL;
strcpys((inv+longitud-cant),posAux);
if(cant>0)//YA SE LEYO UN CARACTER <> " "
strcpys((inv+longitud-(cant+1))," "); //el espacio
*s=' '; //para no modificar el origen
posAux=s+1; //donde comienza la siguiente palabra
}
s++;
cant++;
}
strcpys((inv+longitud-cant),posAux);
*(inv+longitud)=NULL; //finalizo la cadena invertida
}
void strcpys(char *d, char *o)
{
while(*o!=NULL)
*d++=*o++; /*No termina con null porque sino la cadena inversion
mostraria solo la primer palabra*/
}
int strlen(char *s)
{
int cant=0;
while(*s!=NULL)
{
cant++;
s++;
}
return cant;
}
Comentarios sobre la versión: Versión 1 (0)
No hay comentarios