Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Invertir cadena de arreglo con WHILE

Estas en el tema de Invertir cadena de arreglo con WHILE en el foro de C/C++ en Foros del Web. Gente pueden ayudarme con este codigo me falta solucionar el procedimiendo de "invertir". Varios dias metido en esto para tratar de aprender hacer el codigo ...
  #1 (permalink)  
Antiguo 25/05/2012, 10:47
 
Fecha de Ingreso: mayo-2012
Mensajes: 2
Antigüedad: 12 años, 6 meses
Puntos: 0
Invertir cadena de arreglo con WHILE

Gente pueden ayudarme con este codigo me falta solucionar el procedimiendo de "invertir".
Varios dias metido en esto para tratar de aprender hacer el codigo usando el ciclo WHILE y no el FOR, si alguien me puede explicar se lo agredeceria mucho me serviria bastante. saludos

adjunto el codigo/

Código c:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. void menu();
  5. void pause();
  6. void continuar(int*);
  7. void cargar_datos(char*);
  8. void invertir(char*);
  9. main ()
  10. {
  11.      int seguir;
  12.      char A[8];
  13.      menu();
  14.      pause();
  15.      while(seguir)
  16.           {
  17.             cargar_datos(&A);
  18.             printf("La palabra es %s\n",A);
  19.             invertir(&A);
  20.             printf("La palabra invertida es: %s\n",A);
  21.             continuar(&seguir);
  22.             printf ("seguir  %d",seguir);
  23.           }
  24. }
  25. void invertir(char *A)
  26. {
  27.      int inicio=0,final=0,aux=0;
  28.      while(inicio<final)
  29.      {
  30.      aux=A[inicio];
  31.      A[inicio]=A[final];
  32.      A[final]=aux;
  33.      inicio=inicio+1;
  34.      final=final-1;                  
  35.      }
  36. }
  37. void cargar_datos(char *A)
  38. {
  39.     printf("Ingrese una palabra\n");
  40.     scanf("%s",A);
  41. }
  42.  
  43.  
  44. void menu()
  45. {
  46.      printf("Bienvenido\n");
  47.      printf("Este programa invertira una palabra\n");
  48. }
  49.  
  50. void pause()
  51. {
  52.       system("pause");
  53. }
  54.  
  55. void continuar(int *seguir)
  56. {
  57.      char opcion;
  58.      printf("Desea continuar s/n\n");
  59.      scanf(" %c",&opcion);
  60.      
  61.      
  62.      if((opcion != 's') && (opcion != 'n'))
  63.      {
  64.        printf("ingrese s o n\n");
  65.        scanf("%c",&opcion);
  66.      }
  67.      
  68.      
  69.      printf ("\n esta es la opcion  %d  \n", opcion);
  70.      
  71.      if(opcion == 'n')
  72.      {
  73.      (*seguir)=0;
  74.      
  75.      }
  76. }
  #2 (permalink)  
Antiguo 25/05/2012, 13:55
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Invertir cadena de arreglo con WHILE

En la funcion invertir tenes que inicializar final con la longitud de la cadena.....

final = strlen(A);
  #3 (permalink)  
Antiguo 27/05/2012, 09:09
Avatar de cronopiomx  
Fecha de Ingreso: mayo-2012
Ubicación: Programing Cloud
Mensajes: 282
Antigüedad: 12 años, 6 meses
Puntos: 28
Respuesta: Invertir cadena de arreglo con WHILE

nose, pienso que te complicas mucho para hacer 1 invertir con while mira este code

#include <iostream>
using namespace std;

int main ()
{
char A[256];

int seguir;

scanf("%d", &seguir);

while(seguir--)
{
scanf("%s", A);
int len = strlen(A), i=0;
printf("Cadena Original:%s\n", A);
printf("Cadena Invertida:");
while(i<=len) printf("%c", A[len-(i++)]);
printf("\n");
strcpy(A,"");
}
system("pause");
}
  #4 (permalink)  
Antiguo 27/05/2012, 09:41
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Invertir cadena de arreglo con WHILE

Ahi lo unico que haces es imprimirlo...el a lo mejor necesita la cadena invertida en el arreglo para poder manejarla....
  #5 (permalink)  
Antiguo 28/05/2012, 08:52
Avatar de cronopiomx  
Fecha de Ingreso: mayo-2012
Ubicación: Programing Cloud
Mensajes: 282
Antigüedad: 12 años, 6 meses
Puntos: 28
Respuesta: Invertir cadena de arreglo con WHILE

#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

#include <iostream>
using namespace std;

int main ()
{
char A[256];

int seguir;

scanf("%d", &seguir);

while(seguir--)
{
scanf("%s", A);
int len = strlen(A), i=0;
char B[len];
printf("Cadena Original:%s\n", A);
printf("Cadena Invertida:");

while(i<len)
{
i++; B[i-1] = A[len-i];
}

for (int j =0; j<B[j]; j++)
cout<<B[j];

printf("\n");
strcpy(A,"");
strcpy(B,"");
}
system("pause");
}

Etiquetas: int, invertir, programa, string, arreglos, cadenas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:52.