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

Ordenamiento de letras En C?

Estas en el tema de Ordenamiento de letras En C? en el foro de C/C++ en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C: Ver original #include <stdio.h> #define p printf #define s scanf   void reordenar ( char x [ ] ) {   ...
  #1 (permalink)  
Antiguo 03/06/2011, 14:36
 
Fecha de Ingreso: enero-2011
Mensajes: 33
Antigüedad: 13 años, 10 meses
Puntos: 0
Ordenamiento de letras En C?

Código C:
Ver original
  1. #include <stdio.h>
  2. #define p printf
  3. #define s scanf
  4.  
  5. void reordenar(char x[]){
  6.     int i,i2;
  7.     char temp;
  8.  
  9.     for (i2='A' ; i2< 'I' ; i2++){
  10.         for (i=(i2+1) ; i< 'J' ; i++)
  11.             if(x[i] < x[i2]){
  12.                 temp=x[i2];
  13.                 x[i2]=x[i];
  14.                 x[i]=temp;
  15.             }
  16.     }}
  17.  
  18. main(){
  19.     int i;
  20.     char x[10];
  21.  
  22.     for(i='A' ; i<'J' ; i++){
  23.         p("Introduzca Una Letra: \n");
  24.         s("%s", &x[i]);
  25.     }
  26.  
  27.     p("----Lista Organizada----\n");
  28.  
  29.     reordenar(x);
  30.  
  31.     for(i='A' ; i<'J' ; i++){
  32.         p("%c\n", x[i]);
  33.     }
  34.  
  35.     s("%d");
  36. }

Ese ejercicio Funciona perfecto, pero agarra hasta 10 letras, puede agarrar mas si lo modifico, pero lo que quiero es que funcione hasta donde el usuario especifique, hasta ahora tengo esto:

Código C:
Ver original
  1. #include <stdio.h>
  2. #define p printf
  3. #define s scanf
  4.  
  5. void reordenar(char n, char x[]){
  6.     int i,i2;
  7.     char temp;
  8.  
  9.     for (i2='A' ; i2< n-1 ; i2++){
  10.         for (i=(i2+1) ; i< n ; i++)
  11.             if(x[i] < x[i2]){
  12.                 temp=x[i2];
  13.                 x[i2]=x[i];
  14.                 x[i]=temp;
  15.             }
  16.     }}
  17.  
  18. main(){
  19.     int i;
  20.     char x[10];
  21.     char n;
  22.  
  23.     p("Hasta que letra deben ser ordenados: ");
  24.     s("%c", &n);
  25.  
  26.     for(i='A' ; i < n ; i++){
  27.         p("Introduzca Una Letra: \n");
  28.         s("%s", &x[i]);
  29.     }
  30.  
  31.     p("----Lista Organizada----\n");
  32.  
  33.     reordenar(n,x);
  34.  
  35.     for(i='A' ; i<'J' ; i++){
  36.         p("%c\n", x[i]);
  37.     }
  38.  
  39.     s("%d");
  40. }

Pero el programa se queda en un bucle en el primer for, espero me ayuden, Saludos!
  #2 (permalink)  
Antiguo 05/06/2011, 22:36
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 7 meses
Puntos: 71
Respuesta: Ordenamiento de letras En C?

Hola:

No he probado con tu código, pero recuerdo que escribir el elemento de un vector con
Código C:
Ver original 
no debe de ser como lo veo en la línea:
Código C:
Ver original
  1. s("%s", &x[i]);

Borra & y vuelve a correr.
  #3 (permalink)  
Antiguo 07/06/2011, 13:55
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Ordenamiento de letras En C?

No es que se quede atorado, si continuas introduciendo letras llega a un punto en el que pasa a la siguiente parte del codigo..

No se si entiendes lo que estas poniendo en el codigo, pero existen varias inconsistencias la primera y fundamental es que sin importar cuantas letras introduzcas solo se van a acomodar 10 ya que es el maximo que esta permitodo aqui
Código:
char x[10];
Por lo que parece que tu programa no sale del primer for es porque resta el valor de A con la letra que esta introduciendo el usuario, te recomiendo cheques la tabla ANSI, no estas tan equivocado en tu codigo solo te falta entenderlo mejor

Saludos y animo
__________________
Bienvenidos los karmas.
Quejas, sugerencias o dudas, se awantan......

Etiquetas: letras, ordenamiento
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 11:44.