Foros del Web » Programación para mayores de 30 ;) » C/C++ »

No me respera el valor

Estas en el tema de No me respera el valor en el foro de C/C++ en Foros del Web. Mi problema es el siguiente: Le paso a una funcion un Array como parametro (int makeof[][3]) pero al momento de regresar se supone que deberia ...
  #1 (permalink)  
Antiguo 14/05/2006, 10:34
Usuario no validado
 
Fecha de Ingreso: julio-2001
Mensajes: 766
Antigüedad: 23 años, 5 meses
Puntos: 0
No me respera el valor

Mi problema es el siguiente:


Le paso a una funcion un Array como parametro (int makeof[][3])
pero al momento de regresar se supone que deberia de mantener los
valores que se le asignaron en la funcion y no lo hace tiene otros valores
que ni al caso;

en la funcion: CalculaVarillas(double.... ejecuta uno de dos algoritmos

uno es si se quiere que el calculo sea mas eficiente (en el sentido de los
valores que regresa) o normal el problema es en la seccion de eficiente
por que en la normal si mantiene los valores que se le asignaron en la funcion





Código PHP:
 ...

//-------------------------------------------------------------------------------------------
int ElementoConcreto::DameVarillas(bool eficiente){
    
MaxNumeroResult=20;

// Si tiene acero a compresion lo calculamos las varillas necesarias
    
if (isDoble) {
           if(!
eficiente){
                if(
CalculaVarillas(aps,eficiente,VarsAps)){
                   
ACMaxres NumerodeResult-1;
//Aqui si tiene el valor correcto
                
}
                else{
                   return 
FALLO;
                }
           }
           else{
                if(
CalculaVarillas(aps,eficiente,VarsApsEfi)){
                   
ACMaxres NumerodeResult-1;
//Cuando regreso aqui ya no tienene los valores que deberia de tener
                
}
                else{
                   return 
FALLO;
                }
           }
    }

// Calculamos las varillas a tension
         
if(!eficiente){
                if(
CalculaVarillas(as,eficiente,VarsAs)){
                   
ATMaxres NumerodeResult-1;
//Aqui si tiene el valor correcto
                
}
                else{
                   return 
FALLO;
                }
           }
           else{
                if(
CalculaVarillas(as,eficiente,VarsAsEfi)){
                   
ATMaxres NumerodeResult-1;
//Cuando regreso aqui ya no tienene los valores que deberia de tener
                
}
                else{
                   return 
FALLO;
                }
           }
    return 
OK;
}
//-------------------------------------------------------------------------
int ElementoConcreto::CalculaVarillas(double acero,bool eficiente,int makeof[][3]){

double AceroMin opcionesVarillas.infAc*acero;
double AceroMax opcionesVarillas.supAc*acero;
NumerodeResult=0;


if(
eficiente){
 
double res,res2;
 for (
int i opcionesVarillas.infCvar<= opcionesVarillas.supCvari++) 
 {
     for (
int j opcionesVarillas.infNvar<= opcionesVarillas.supNvarj++)
         {
      
res=(3.1415*pow((1.27*j/8),2))*i;

          for (
int k opcionesVarillas.infCvar<= opcionesVarillas.supCvark++)
                  {
             for (
int h opcionesVarillas.infNvar<= opcionesVarillas.supNvarh++)
                         {
                  
res2=res+(3.1415*pow((1.27*h/8),2))*k;
                  if(
NumerodeResult<=MaxNumeroResult)
                                  {
                      if((
res2>=AceroMin)&&(res2<=AceroMax))
                                           {
                        
makeof[NumerodeResult][0]=i;
                        
makeof[NumerodeResult][1]=j;
                        
makeof[NumerodeResult][2]=k;
                        
makeof[NumerodeResult][3]=h;
                        
NumerodeResult++;
     
// Hasta aqui el Array tiene los valores correctos
                           
}
                     }
            }
         }
      }
  }
}
else{
     for(
int i=opcionesVarillas.infCvar;i<=opcionesVarillas.supCvar;i++)
         {
            for(
int j=opcionesVarillas.infNvar;j<=opcionesVarillas.supNvar;j++)
                        {
                  
varilla[i][j]= (PI*pow((1.27*j/8),2))*i;
                  if(
NumerodeResult<=MaxNumeroResult)
                                  {
                         if((
varilla[i][j]>=AceroMin)&&(varilla[i][j]<=AceroMax))
                                                 {
                               
makeof[NumerodeResult][0]=i;
                               
makeof[NumerodeResult++][1]=j;
// Aqui tiene el valor correcto y al regresar si mantiene los mismos valores
                                                 
}
                  }
                  else
                     return 
OK;
            }
        }
   }
  return 
OK;
}

//------------------------------------------------------------------------------------------- 
  #2 (permalink)  
Antiguo 14/05/2006, 20:12
Usuario no validado
 
Fecha de Ingreso: julio-2001
Mensajes: 766
Antigüedad: 23 años, 5 meses
Puntos: 0
De acuerdo Ya esta

Accedia a lugares que no debia al declarar el array multidimencional mas
pequeno de lo que deberia de ser

ya saben errores de principiante
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:17.