Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-03-2018
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Error de segmentación con punteros y memoria dinámica

Hola amigos, hice un pequeño código en C para obtener el mcm y el mcd de varios números y el fallo que tengo es al rellenar el array dinámico, me da un error de segmentación. La función es getArray. Aquí mi código:
Código PHP:
#include <stdio.h>
#include <stdlib.h>
 
/*
Función que muestra el menu principal
*/
int menu(void){
    
int op;
    
system("CLS");
    
printf("1-Maximo Comun Divisor\n");
    
printf("2-Minimo Comun Multiplo\n");
    
printf("0-salir\n");
    
printf("\n");
    
printf("Elige una opcion: ");
    
scanf("%d",&op);
    return 
op;
}

/*
Función que obtiene el array con los valores
*/
int getArray(int **num){
    
int i,size;
    if(*
num!=NULL){
        
free(*num);
        *
num=NULL;
    }
    
printf("Ingrese el numero de valores: ");
    
scanf("%d",&size);
    *
num=malloc(sizeof(int)*size);
    for(
i=0;i<size;i++){
         
printf("Ingrese numero: ");
         
scanf("%d",num[i]);
    }
    return 
size;
}

/*
Función principal
*/
int main(void) {
    
int *num=NULL,i,op,salir=0;
    do{
        
op=menu();
        switch(
op){
            case 
1:
                
i=getArray(&num);
                
printf("El M.C.D es: %d\n",mcd(num,i));
                break;
            case 
2:
                
i=getArray(&num);
                
printf("El M.C.M es: %d\n",mcm(num,i));
                break;
            case 
0:
                
printf("Pulsa intro para salir");
                
salir=1;
                break;
            default:
                
printf("Opcion incorrecta. Pulse intro para volver a intentarlo.\n");
       }
       
system("PAUSE");
       if(
num!=NULL){
           
free(num);
           
num=NULL;
       }
    }while(
salir !=1);
    return 
0;
}
 
/*
Función para calcular el mayor de x números
*/
int max(int *num,int size) {
    
int i,mayor=0;
    for(
i=0;i<size;i++){
        if (
num[i]>mayor) {
            
mayor=num[i];
        }
    }
    return 
mayor;
}
 
/*
Función para calcular el menor de x números
*/
int min(int *numint size) {
    
int i,menor=num[0];
    for(
i=0;i<size;i++){
        if (
num[i]<menor) {
            
menor=num[i];
        }
    }
    return 
menor;
}
 
/*
Función para hallar el Máximo Común Divisor por fuerza bruta
*/
int mcd(int *numint size) {
    
int mcd 1,contador,i;
    
int b min(numsize);
    do {
        
contador=0;
        for(
i=0;i<size;i++){
            if(
num[i]%b==0){
                
contador++;
            }
        }
        if(
contador==size){
            
mcd=b;
        }
        
b--;
    } while(
contador !=size);
    return 
mcd;
}
 
/*
Función para hallar el Mínimo Común Múltiplo por fuerza bruta
*/
int mcm(int *numint size) {
    
int mcm 0,j=1,contador,i;
    
int b min(numsize);
    do{
        
contador=0;
        
mcm=b*j;
        for(
i=0;i<size;i++){
            if(
mcm%num[i]==0){
                
contador++;
            }
        }
        
j++;
   }while (
contador !=size);
    return 
mcm;

Responder Con Cita
  #2  
Antiguo 10-03-2018
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Solucionado con esto:
Código PHP:
scanf("%d",&((*num)[i])); 
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema liberando memoria: punteros y matrices Bauhaus1975 Varios 10 24-12-2010 11:24:08
Reservar memoria dinámica ALAM C++ Builder 0 20-07-2007 15:27:11
Liberación de memoria de punteros Data de un Tree. afxe Varios 5 20-06-2007 18:12:34
sobre punteros... y memoria ¿Como perder su valor, sin hacerlo? Delphius Varios 8 19-04-2006 11:55:06
Recuperación de Memoria dinámica adpa Varios 1 15-12-2005 16:29:10


La franja horaria es GMT +2. Ahora son las 11:17:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi