¡auxilio no encuentro donde esta el herror !

michell
30 de Marzo del 2004
Hola amigos como estan espero que bien,
Bueno tengo un pequeño problema, lo que pasa es que ya hice el codigo para que me sacara el metodo de la insercion pero me sale mal, y pues ya trate de cambiarle las funciones pero no encuentro donde esta el herror, para que ya me corra correctamente.
Bueno aqui esta el codigo que hice
Por fa ayundenme es urgentisimo
se los agradecere de todo corazon jajaja.


#include <stdio.h>
#include <conio.h>
int arreglo[30],n,i,k,aux,c;
main ()
{
printf("introuzca cuantos elementos va insertar n");
scanf("%d",&n);

for(i=0; i<n; i++){
printf("n elemento [%d]:",i);
scanf("%d",&arreglo[i]);
};
printf("n ACONTINUACION LE PRESENTARE SU ARREGLO ORDENADO POR METODO DE ISERCION n");

aux=arreglo[i];
k=k-1;

while(aux < arreglo[k] && k>1)
{
aux=arreglo[i];
arreglo[k+1]=arreglo[k];
k=k-1;
aux++;

};
if(arreglo[k]<=aux)
arreglo[k+1]=aux;
else
arreglo[k+1]=arreglo[k];
arreglo[k]=aux;

for(k=0; k<n; k++)
printf("n elemento[%d] :%d n",k,arreglo[k]);
getch();
}

Rev
30 de Marzo del 2004
1.- El primer for no debe llevar punto y coma después de cerrar la llave.

for(i=0; i<n; i++){
....
}; //Esto no debe ir

2.- El while después del for presenta el mismo error
while(aux < arreglo[k] && k>1)
{
...
}; //Esto no debe ir

3.- Es muy probable que la segunda línea que esta en el else dentro del if después del while se ejecute aun cuanto la condición se cumpla o no.

if(arreglo[k]<=aux)
arreglo[k+1]=aux;
else
arreglo[k+1]=arreglo[k];
arreglo[k]=aux;

//Esta línea se ejecutara aun cuando la condición se cumpla o no debido a que no tiene llaves, que bien puede arreglarse así

if(arreglo[k]<=aux)
arreglo[k+1]=aux;
else
{
arreglo[k+1]=arreglo[k];
arreglo[k]=aux;
}

Y los demás errores ya te lo dijeron, bueno espero te sirvan

Alejandro
30 de Marzo del 2004
Michell:

creo que ya sé por qué tu código no funciona: está todo mal.

Por ejemplo:

1) cuando dices:

aux = arreglo[i];

resulta que al salir del ciclo for, el valor de i es n (i == n), y arreglo[i] está fuera de los límites de arreglo (uno más allá del límite).

2) A continuación pones:

k = k-1;

k se declara como entero, y al no estar inicializada en ningún lado, un compilador que se aproxime a algún estándar hubiera puesto k=0; así que al decir k = k-1, estás dejando a k en -1 (k == -1); así que cuando dices:

while(aux < arreglo[k] && k>1)

estás buscando el valor de arreglo[-1] para compararlo con aux, que ni siquiera está en arreglo; un estupendo desastre.



3) ... bueno, si pudieras resolver lo más grave, ya veremos lo demás.


Alejandro

noel solw
30 de Marzo del 2004
el ERROR esta en la hache de HERROR.
mas que un error, es un horror ! ! !