Problema, se me come el ultimo ?
Publicado por marx (1 intervención) el 07/04/2006 00:06:36
/*ordenar alfabeticamente una lista de cadenas de caracteres, utilizando una formacion bidemiensional*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void reordenar(int n,char x[][12]); /* prototipo de funcion */
main()
{
int i,n=0;
char x[10][12];
printf("Introducir debajo cada cadena en una linia\n\n");
printf("Escribir \'FIN\' para terminar\n\n");
/* leer la lista de cadenas de caracteres */
do{
printf("cadena %d: ",n+1);
scanf("%s",x[n]);
}while (strcmp(x[n++], "FIN"));
/*ajustar el valor de n */
n--;
/* reordenar la lista de cadenas de caracteres */
reordenar(n,x);
/* escribir la lista reordenada de cadenas de caracteres */
printf("\n\nLista reordenada de cadenas:\n");
for(i=0;i<n;++i)
printf("\ncadena %d: %s",i+1,x[i]);
}
void reordenar(int n,char x[][12]) /* reordenar la lista de cadenas de caracteres */
{
char temp[12];
int i,elem;
for(elem=0;elem<n-1;++elem)
/*encontrar la menor de las cadenas restantes */
for(i=elem+1;i<n;++i)
if(strcmp(x[elem],x[i])>0); {
/* intercambiar las dos cadenas */
strcpy(temp,x[elem]);
strcpy(x[elem],x[i]);
strcpy(x[i],temp);
}
return;
}
Se me come un espacio sin pongo 4 palabras al final pone el FIN en la posicion 4.
Es algun for? pq segun el libro es asi?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void reordenar(int n,char x[][12]); /* prototipo de funcion */
main()
{
int i,n=0;
char x[10][12];
printf("Introducir debajo cada cadena en una linia\n\n");
printf("Escribir \'FIN\' para terminar\n\n");
/* leer la lista de cadenas de caracteres */
do{
printf("cadena %d: ",n+1);
scanf("%s",x[n]);
}while (strcmp(x[n++], "FIN"));
/*ajustar el valor de n */
n--;
/* reordenar la lista de cadenas de caracteres */
reordenar(n,x);
/* escribir la lista reordenada de cadenas de caracteres */
printf("\n\nLista reordenada de cadenas:\n");
for(i=0;i<n;++i)
printf("\ncadena %d: %s",i+1,x[i]);
}
void reordenar(int n,char x[][12]) /* reordenar la lista de cadenas de caracteres */
{
char temp[12];
int i,elem;
for(elem=0;elem<n-1;++elem)
/*encontrar la menor de las cadenas restantes */
for(i=elem+1;i<n;++i)
if(strcmp(x[elem],x[i])>0); {
/* intercambiar las dos cadenas */
strcpy(temp,x[elem]);
strcpy(x[elem],x[i]);
strcpy(x[i],temp);
}
return;
}
Se me come un espacio sin pongo 4 palabras al final pone el FIN en la posicion 4.
Es algun for? pq segun el libro es asi?
Valora esta pregunta
0