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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ERROR en C process returned -10737441819
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ERROR en C process returned -10737441819  (Leído 4,174 veces)
matiri90

Desconectado Desconectado

Mensajes: 13


Ver Perfil
ERROR en C process returned -10737441819
« en: 14 Abril 2016, 14:22 pm »

Buenas gente.. Soy nuevo en esto, hace poco empece a usar C para programas simples..
Tengo un problema "process returned -10737441819"
Esto al terminar todo, no se que sera..
Desde ya, muchas gracias..

DEJO EL CODIGO (espero se entienda), no tiene nada de interesante el programa, pero no quiero que salga ese error..



Código:
[i]
#include<stdio.h>
#define Max 255

void EjDiez (int num[],int lim);
void CargarDatos (int num[], int lim);
void MostrarDatos (int num[],int lim);
void ordenarMenAMay(int num[], int lim);
void ordenarMayAMen (int num[],int lim);
void intercambiar(int *a, int *b);
void organizarParEImpar (int num[],int lim);

int main(){
    int numero[Max];
    int marca,largo,cant;
    printf("ingrese el maximo de numeros: ");
    scanf("%i",&cant);
    CargarDatos(numero[Max], cant);
    EjDiez(numero[Max],cant);
//    system("pause");
    ordenarMenAMay(numero[Max],cant);
    MostrarDatos(numero[Max], cant);
//    system("pause");
    ordenarMayAMen(numero[Max],cant);
    MostrarDatos(numero[Max], cant);
 //   system("pause");
    organizarParEImpar(numero[Max], cant);
    MostrarDatos(numero[Max], cant);
    printf("Paso por aca?");
//    system("pause");
}


void CargarDatos (int num[],int lim){ //Carga el arreglo desde el teclado
    int a,i;
    for(i=0;i<lim;i++){
        printf("\n\nIngrese un numero: ");
        scanf("%i",&a);
        num[i]=a;
    }
    printf("\n");
}


void EjDiez (int num[],int lim){     //Si la cantidad de elemtos es par, muestra el 1er num del arreglo
    int i=0;                           //sino, muestra el numero que esta en la mitad del arreglo
    if ((lim % 2)==0){ //Se fija si es PAR
        printf("\n\nEl numero es PAR: (muestro el primer num del arreglo)  %i",num[i]);
    }
    else{
        i = (lim / 2); //Busca la mitad del arreglo
 //       printf("\n\n el div %i",i);
        printf("\n\nEl numero es IMPAR: (muestro el num de la mitad del arreglo) %i",num[i]);
    }
}

void MostrarDatos (int num[],int lim){  //Muestra los datos del arreglo
    int i;
    for(i=0;i<lim;i++){
        printf("\n\nMostrar un numero:%i \n",num[i]);
    }
}



void ordenarMayAMen (int num[],int lim){ //Ordena los elem del arreglo de Mayor a Menor
    int j,i;
    for (i=0;i<lim;i++){
        for (j=i;j<lim;j++){
            if (num[i]<num[j]){
                intercambiar(&num[i],&num[j]);
            }
        }
    }
}

void intercambiar(int *a, int *b){ //Intercambia 2 valores
    *b=*a+*b;
    *a=*b-*a;
    *b=*b-*a;
}

void ordenarMenAMay(int num[],int lim){ ////Ordena los elem del arreglo de Mayor a Menor
    int j,i;
    for (i=0;i<lim;i++){
        for (j=i;j<lim;j++){
            if (num[i]>num[j]){
                intercambiar(&num[i],&num[j]);
            }
        }
    }
}

void organizarParEImpar (int num[],int lim){ //Organiza la lista, primero los numeros pares y despues los impares
    int i=0,j=0,k=0;
    int cantPar,cantImpar;
    int par[Max];
    int impar[Max];
    for (i=0;i<lim;i++){
        if ((num[i] % 2)==0){
            par[j]=num[i];
            j++;
            printf("\nPAR\n");
        }
        else {
            impar[k]=num[i];
            k++;
            printf("\nIMPAR\n");
        }
    }

    cantImpar=k;
    cantPar=j;
    i=0;
    for(j=0;j<cantPar;j++){
        num[i]=par[j];
        i++;
    }
    for (k=0;k<cantImpar;k++){
        num[i]=impar[k];
        i++;
    }
 //   system("pause");
}
[/i]


« Última modificación: 14 Abril 2016, 14:37 pm por matiri90 » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: ERROR en C process returned -10737441819
« Respuesta #1 en: 14 Abril 2016, 14:56 pm »

Un programa en C siempre debe devolver un valor entero comprendido entre 0 y 255 cuando termina.

Tu programa termina cuando termina main pero no retorna nada, de forma controlada. Para solventar esto pon como última instrucción en main
Código
  1. return 0;
así retornarás el valor 0, que según el estándar quiere decir que el programa ha finalizado sin problemas.


En línea

matiri90

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: ERROR en C process returned -10737441819
« Respuesta #2 en: 14 Abril 2016, 15:14 pm »

Un programa en C siempre debe devolver un valor entero comprendido entre 0 y 255 cuando termina.

Tu programa termina cuando termina main pero no retorna nada, de forma controlada. Para solventar esto pon como última instrucción en main
Código
  1. return 0;
así retornarás el valor 0, que según el estándar quiere decir que el programa ha finalizado sin problemas.

Gracias por la rapida respuesta.. Probe esa solucion, pero igualmente me sigue dando ese error.. Lo revise varias veces, pero no encuentro el problema..
Lo raro?. Es que hace todo bien, ordena los numeros de menor a mayor, y viceversa, los ordena primero los pares y despues impares.. Pero al final, retorna eso..
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: ERROR en C process returned -10737441819
« Respuesta #3 en: 14 Abril 2016, 15:16 pm »

-10737441819, en hexadecimal C0000005 es un error, violación en acceso a la memoria. Tienes algún problema con punteros y memoria, ya sea leer como escribir donde no es. Revisa los punteros. Localiza el problema.
En línea

matiri90

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: ERROR en C process returned -10737441819
« Respuesta #4 en: 14 Abril 2016, 15:44 pm »

-10737441819, en hexadecimal C0000005 es un error, violación en acceso a la memoria. Tienes algún problema con punteros y memoria, ya sea leer como escribir donde no es. Revisa los punteros. Localiza el problema.

Ahi revise todo.. El "error" o no se, es que pasaba todos los parametros con el valor Max
Código:
ordenarMenAMay(numero[Max],cant);


Al sacar eso del parametro y dejarlo asi:

Código:
ordenarMenAMay(numero,cant);

Ahora dejo el codigo corregido..
Desde ya, gracias a todos por la ayuda y pregunto..
Fue un error haber pasado el Max como parametro?. Yo cree la variable
Código:
int numero[Max];

Al hacer eso, dejo claro que el maximo de elementos va a ser "Max" y por eso no hace falta pasarlo como parametro en alguna funcion?.

Pregunto, porque no entendi el "error" en cuestion.. Disculpen las molestias.. Dejo el codigo..

Codigo funcionando:
Código:
#include<stdio.h>
#define Max 255

void EjDiez (int num[],int lim);
void CargarDatos (int num[], int lim);
void MostrarDatos (int num[],int lim);
void ordenarMenAMay(int num[], int lim);
void ordenarMayAMen (int num[],int lim);
void intercambiar(int *a, int *b);
void organizarParEImpar (int num[],int lim);

int main(){
    int numero[Max];
    int marca,largo,cant;
    printf("ingrese el maximo de numeros: ");
    scanf("%i",&cant);
    CargarDatos(numero, cant);
    printf("\nSi la cantidad de elementos es par, muestra el 1er num del arreglo\n");
    printf("sino, muestra el numero que esta en la mitad del arreglo\n");
    EjDiez(numero,cant);
    printf("\n");
    system("pause");
    printf("Ordena el arreglo de Menor a Mayor\n");
    ordenarMenAMay(numero,cant);
    MostrarDatos(numero, cant);
    system("pause");
    printf("Ordena el arreglo de Mayor a Menor\n");
    ordenarMayAMen(numero,cant);
    MostrarDatos(numero, cant);
    system("pause");
    printf("Ordena el arreglo de Par a Impar\n");
    organizarParEImpar(numero, cant);
    MostrarDatos(numero, cant);
    return 0;
    system("pause");
}


void CargarDatos (int num[],int lim){ //Carga el arreglo desde el teclado
    int a,i;
    for(i=0;i<lim;i++){
        printf("\n\nIngrese un numero: ");
        scanf("%i",&a);
        num[i]=a;
    }
    printf("\n");
}


void EjDiez (int num[],int lim){     //Si la cantidad de elemtos es par, muestra el 1er num del arreglo
    int i=0;                           //sino, muestra el numero que esta en la mitad del arreglo
    if ((lim % 2)==0){ //Se fija si es PAR
        printf("\n\nEl numero es PAR: (muestro el primer num del arreglo)  %i",num[i]);
    }
    else{
        i = (lim / 2); //Busca la mitad del arreglo
 //       printf("\n\n el div %i",i);
        printf("\n\nEl numero es IMPAR: (muestro el num de la mitad del arreglo) %i",num[i]);
    }
}

void MostrarDatos (int num[],int lim){  //Muestra los datos del arreglo
    int i;
    for(i=0;i<lim;i++){
        printf("\n\nMostrar un numero:%i \n",num[i]);
    }
}



void ordenarMayAMen (int num[],int lim){ //Ordena los elem del arreglo de Mayor a Menor
    int j,i;
    for (i=0;i<lim;i++){
        for (j=i;j<lim;j++){
            if (num[i]<num[j]){
                intercambiar(&num[i],&num[j]);
            }
        }
    }
}

void intercambiar(int *a, int *b){ //Intercambia 2 valores
    *b=*a+*b;
    *a=*b-*a;
    *b=*b-*a;
}


void ordenarMenAMay(int num[],int lim){ ////Ordena los elem del arreglo de Mayor a Menor
    int j,i;
    for (i=0;i<lim;i++){
        for (j=i;j<lim;j++){
            if (num[i]>num[j]){
                intercambiar(&num[i],&num[j]);
            }
        }
    }
}

void organizarParEImpar (int num[],int lim){ //Organiza la lista, primero los numeros pares y despues los impares
    int i=0,j=0,k=0;
    int cantPar,cantImpar;
    int par[Max];
    int impar[Max];
    for (i=0;i<lim;i++){
        if ((num[i] % 2)==0){
            par[j]=num[i];
            j++;
        }
        else {
            impar[k]=num[i];
            k++;
        }
    }

    cantImpar=k;
    cantPar=j;
    i=0;
    for(j=0;j<cantPar;j++){
        num[i]=par[j];
        i++;
    }
    for (k=0;k<cantImpar;k++){
        num[i]=impar[k];
        i++;
    }
 //   system("pause");
}
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: ERROR en C process returned -10737441819
« Respuesta #5 en: 14 Abril 2016, 16:09 pm »

Código
  1. ordenarMenAMay(numero[Max],cant);

Cuando declaras un array, pones entre los corchetes su tamaño, bien. A partir de ahí, cuando pones un número entre los corchetes, estás indicando un elemento del array.
"numero" -> array
"numero[0]" -> primer elemento del array
"numero[MAX-1]" -> último elemento del array
"numero[MAX]" -> elemento inexistente (lo que habría después del último elemento). Esto debió darte el error, pues accedes a un lugar de memoria incorrecto.
Aunque no solo eso:

Código
  1. void CargarDatos (int num[],int lim)
Ahí pides como primer parámetro un array de entero. Le estabas pasando un entero, que interpretaría como una dirección de memoria. Quizás te diera algún warning a la hora de compilar.
En línea

matiri90

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: ERROR en C process returned -10737441819
« Respuesta #6 en: 14 Abril 2016, 16:19 pm »

Código
  1. ordenarMenAMay(numero[Max],cant);

Cuando declaras un array, pones entre los corchetes su tamaño, bien. A partir de ahí, cuando pones un número entre los corchetes, estás indicando un elemento del array.
"numero" -> array
"numero[0]" -> primer elemento del array
"numero[MAX-1]" -> último elemento del array
"numero[MAX]" -> elemento inexistente (lo que habría después del último elemento). Esto debió darte el error, pues accedes a un lugar de memoria incorrecto.
Aunque no solo eso:

Código
  1. void CargarDatos (int num[],int lim)
Ahí pides como primer parámetro un array de entero. Le estabas pasando un entero, que interpretaría como una dirección de memoria. Quizás te diera algún warning a la hora de compilar.

Que gran explicacion.. Gracias, por ahi no me doy cuenta de esas cosas.. Es un error que espero no cometer.. Son errores minuciosos, pero por ahi son dificiles de encontrar.. Gracias nuevamente. Un abrazo!.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Process returned 0
Programación C/C++
m@o_614 6 3,550 Último mensaje 21 Enero 2014, 04:06 am
por m@o_614
[Error] ld returned 1 exit status, Ayuda soy nuevo en C
Programación C/C++
rkrdto 2 7,667 Último mensaje 23 Enero 2015, 08:40 am
por Almamu
[ERROR] Id Returned 1 exit status
Programación C/C++
Wolfman19951 3 6,274 Último mensaje 3 Agosto 2015, 09:26 am
por do-while
Este es mi codigo y me marca [Error] Id returned 1 exit status
Programación C/C++
march_sistem 2 4,026 Último mensaje 12 Febrero 2016, 16:59 pm
por 0xFer
Process returned -1073741819
Programación C/C++
cyelph 4 2,935 Último mensaje 31 Mayo 2020, 16:23 pm
por cyelph
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines