Programación General > C/C++
Violación de Segmento
(1/1)
Erick_420:
Hola a todos
El motivo del post es solicitar su ayuda.
Soy nuevo programando desde linux, programando en general.
Al realizar un programa que acomoda N números de forma ascendente (menor a menor), al ejecutarlo aparece Violación del segmento.
No puedo resolverlo.
Si alguien puede ayudar, se lo agradezco Incluyo código en c
#include<stdio.h>
int main()
{
int i,j,n,a[n],aux;
printf("\tPrograma que acomoda n números de menor a mayorr\n\n");
printf("Introduce cuantos números\t ");
scanf("%d",&n);
for (i=1;i<=n;i++)
{
printf("\nIntroduce un número\t");
scanf("%d",&a[ i ]);
}
for (i=2;i<=n;i++)
{
for(j=n;j<=i;j--)
{
if(a[j]<a[j-1])
{
aux=a[j];
a[j]=a[j-1];
a[j-1]=aux;
}
}
}
for(i=1;i<=n;i++)
{
printf(" %d",a[ i ]);
}
return 0;
}
chenech:
Hola, creo que en la definición del array a[n] no puedes poner n ya que no tiene ningún valor, tendrías que poner por ejemplo 10 y luego no permitir que se introduzca un valor máximo de 10 para evitar la violación. O bien definir a[n] después de aceptar n para poder darle un valor
Erick_420:
Gracias por responder.
El error de hecho ya lo solucioné y es precisamente en esa parte que mencionas
El arreglo de a[n] es posible, sólo que primero debes introducir n antes de declarar a[n]
ese era mi error, declaré a[n] antes de conocer el valor de n
Pero ya está solucionado.
Erick_420:
El código ya corregido esta aquí.
#include<stdio.h>
int main()
{
int i,j,n,aux;
printf("\n\t\tPrograma que acomoda n números de menor a mayorr\n\n");
printf("\n\tIntroduce cuantos números\t ");
scanf("%d",&n);
int a[n];
for (i=1;i<=n;i++)
{
printf("\n\tIntroduce un número\t");
scanf("%d",&a);
}
for (i=2;i<=n;i++)
{
for(j=n;j>=i;j--)
{
if(a[j]>a[j-1])
{
aux=a[j];
a[j]=a[j-1];
a[j-1]=aux;
}
}
}
printf("\n\tLos números son:\n\t\t");
for(i=1;i<=n;i++)
{
printf(" %d",a);
}
printf("\n");
return 0;
}
Navegación
Ir a la versión completa