Autor
|
Tema: imprimir basura (Leído 2,479 veces)
|
m@o_614
Desconectado
Mensajes: 389
|
Saludos tengo el siguiente arreglo de 11 elementos 74,14,21,44,38,97,11,78,65,88,30 y quiero que me imprima el primer elemento (74), el quinto (97) y el 30 que es el ultimo, todo esto porque estoy empezando un metodo de ordenamiento pero no lo he terminado, el problema es que aunque si me imprime el primero y el quinto en el ultimo me imprime basura, en vez de imprimir el 30 me imprime 31 y no se por que void arreglo(int v[],int n) { int i,j,k; k = n/2; for(j=0;j <= k;j+=k) { if(v[j] < v[j+k]) { } else { } } }
de antemano gracias
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
Con solo este código es complicado decirte qué está mal... ya que esto son únicamente accesos a memoria... solo con eso no se puede saber si los accesos son correctos o no.
|
|
|
En línea
|
|
|
|
m@o_614
Desconectado
Mensajes: 389
|
el codigo es el siguiente: void ordenamiento(int v[],int n) { int i,j,k; k = n/2; for(i=0;i < 1;i++) { for(j=i+k;j < n;j=j+k) { if(v[i] > v[j]) { aux = v[i]; v[i] = v[j]; v[j] = aux; }*/ } } }
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
te sigo diciendo lo mismo... es código lo más que te puedo decir es que es extraño... tener un bucle (el de i) que solo va a tener una iteración... imagino que será por las pruebas que estás haciendo... pero no ayuda en absoluto.
El código que tienes ahí, por sí solo, no es dañino ni falla... otra cosa es el contenido de v y de n... y para eso dependerá de cómo se haya creado v y de cómo estés guardando los datos... además de cómo estás calculando n.
|
|
|
En línea
|
|
|
|
m@o_614
Desconectado
Mensajes: 389
|
Saludos eferion ya pude por fin descubrir cual era el error, y es uno bien tonto porque cuando declare el vector lo declare como v[10] cuando en realidad le estaba diciendo que queria un vector con 11 elementos, que idiota!! #include <stdio.h> #include <stdlib.h> void Shell_Sort(int v[],int n); int main() { int v[11],i,n; printf("Dame el numero de elementos del vector: "); for(i=0;i < n;i++) { printf("Dame el elemento %d\n",i +1); } Shell_Sort(v,n); for(i=0;i < n;i++) return 0; } void Shell_Sort(int v[],int n) { int i,j,k,aux,m; k = n/2; for(i=0;i < k;i++) { for(j=i+k;j < n;j+=k) { m = j; while(m > i) { if(v[m] < v[m-k]) { aux = v[m]; v[m] = v[m-k]; v[m-k] = aux; } m-=k; } } } }
gracias de todos modos
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
Saludos eferion ya pude por fin descubrir cual era el error, y es uno bien tonto porque cuando declare el vector lo declare como v[10] cuando en realidad le estaba diciendo que queria un vector con 11 elementos, que idiota!!
Como te dije... el código que ponías, por si solo, no provocaba fallos. Me alegro de que hayas encontrado el fallo. Un saludo.
|
|
|
En línea
|
|
|
|
|
|