elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  imprimir basura
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: imprimir basura  (Leído 2,467 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
imprimir basura
« en: 20 Septiembre 2013, 06:01 am »

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

Código
  1. void  arreglo(int v[],int n)
  2. {
  3.    int i,j,k;
  4.    k = n/2;
  5.    for(j=0;j <= k;j+=k)
  6.    {
  7.        if(v[j] < v[j+k])
  8.        {
  9.            printf("[%d]",v[j]);
  10.            printf("[%d]",v[j+k]);
  11.        }
  12.        else
  13.        {
  14.            printf("[%d]",v[j]);
  15.            printf("[%d]",v[j+k]);
  16.        }
  17.    }
  18. }

de antemano gracias

 


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: imprimir basura
« Respuesta #1 en: 20 Septiembre 2013, 08:46 am »

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 Desconectado

Mensajes: 389


Ver Perfil
Re: imprimir basura
« Respuesta #2 en: 20 Septiembre 2013, 16:38 pm »

el codigo es el siguiente:

Código
  1. void ordenamiento(int v[],int n)
  2. {
  3.    int i,j,k;
  4.    k = n/2;
  5.    for(i=0;i < 1;i++)
  6.    {
  7.        for(j=i+k;j < n;j=j+k)
  8.        {
  9.            printf("%d\t",v[i]);
  10.            printf("%d\t",v[j]);/*
  11.             if(v[i] > v[j])
  12.             {
  13.                 aux = v[i];
  14.                 v[i] = v[j];
  15.                 v[j] = aux;
  16.             }*/
  17.        }
  18.    }
  19. }

En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: imprimir basura
« Respuesta #3 en: 20 Septiembre 2013, 17:37 pm »

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 Desconectado

Mensajes: 389


Ver Perfil
Re: imprimir basura
« Respuesta #4 en: 21 Septiembre 2013, 00:07 am »

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!!

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void Shell_Sort(int v[],int n);
  5.  
  6. int main()
  7. {
  8.    int v[11],i,n;
  9.    printf("Dame el numero de elementos del vector: ");
  10.    scanf("%d",&n);
  11.    for(i=0;i < n;i++)
  12.    {
  13.        printf("Dame el elemento %d\n",i+1);
  14.        scanf("%d",&v[i]);
  15.        system("cls");
  16.    }
  17.    Shell_Sort(v,n);
  18.    for(i=0;i < n;i++)
  19.       printf("[%d]",v[i]);
  20.    return 0;
  21. }
  22.  
  23. void Shell_Sort(int v[],int n)
  24. {
  25.    int i,j,k,aux,m;
  26.    k = n/2;
  27.    for(i=0;i < k;i++)
  28.    {
  29.        for(j=i+k;j < n;j+=k)
  30.        {
  31.            m = j;
  32.            while(m > i)
  33.            {
  34.                if(v[m] < v[m-k])
  35.                {
  36.                    aux = v[m];
  37.                    v[m] = v[m-k];
  38.                    v[m-k] = aux;
  39.                }
  40.                m-=k;
  41.            }
  42.        }
  43.    }
  44.  
  45. }
  46.  

gracias de todos modos
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: imprimir basura
« Respuesta #5 en: 22 Septiembre 2013, 08:54 am »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como imprimir un .pdf que no te deja imprimir?
Windows
nichihack 8 24,875 Último mensaje 2 Mayo 2013, 15:30 pm
por sol19200
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines