• Viernes 8 de Noviembre de 2024, 17:58

Autor Tema:  Ayuda En Ciclo For Y Variables Int  (Leído 1716 veces)

Linspire

  • Miembro MUY activo
  • ***
  • Mensajes: 232
    • Ver Perfil
    • http://www.cedrela.com.mx
Ayuda En Ciclo For Y Variables Int
« en: Sábado 6 de Enero de 2007, 03:11 »
0
Hola amigos, hace tiempo que habìa dejado un poco de lado la programaciòn y ahora que inicié de nuevo tengo un pequeño problema en el que espero puedan ayudarme, lo que ocurre es lo siguiente (creo que serìa màs fácil entender si solo publico el código)

Código: Text
  1.  
  2. String cadena, a2, b2, c2;
  3.         int i, j, longitud;
  4.         double a, b, c, d;
  5.  
  6.         for(i=0;i<=StringGrid2->ColCount;i++)
  7.             {
  8.                 for(j=1;j<=StringGrid2->RowCount;j++)
  9.                 {
  10.                         if(StringGrid2->Cells[i][j].IsEmpty()==true)
  11.                                 StringGrid2->Cells[i][j]=0;
  12.                         else continue;
  13.                 }
  14.             }
  15.         for(i=0;i<=StringGrid2->ColCount;i++)
  16.             {
  17.                 for(j=1;j<=StringGrid2->RowCount;j++)
  18.                 {
  19.                         cadena=StringGrid2->Cells[0][i+1];
  20.                         longitud=cadena.Length();
  21.  
  22.                         a2=cadena.SubString(1,longitud);
  23.                         a=a2.Delete(2,longitud).ToDouble();
  24.  
  25.                         b2=cadena.SubString(1,longitud);
  26.                         b2=b2.Delete(1,2);
  27.                         b=b2.Delete(2,2).ToDouble();
  28.  
  29.                         c2=cadena.SubString(1,longitud);
  30.                         c=cadena.Delete(1,4).ToDouble();
  31.                        
  32.                         StringGrid2->Cells[1][i+1]=a;
  33.                         StringGrid2->Cells[2][i+1]=b;
  34.                         StringGrid2->Cells[3][i+1]=c;
  35.  
  36.                         d=(b/c)+a;
  37.                        
  38.                         StringGrid2->Cells[4][i+1]=d;
  39.                 }
  40.             }        
  41.  
  42.  
  43.  

El problema es con las variables b,c y d. Resulta que al ejecutar el còdigo se lanza el siguiente mensaje de error:


Y como ven, según yo, en el código todo está bien escrito.

Esta es la ventana de ejecución.


Ya depuré el programa y todo parece estar bien, y la variable d si se calcula, pero el error continúa.

alguién podría decirme que es lo que ocurre?.

Agradezco de antemano la ayuda que me aporten.
[size=109]My Blog de Programación[/i][/b][/size]
´


[size=109]Tan solo quiero pensar que todo es un sueño y que no quiero despertar
porque quiero controlarlo como yo quiera.
[/size]

Todo es posible, lo imposible solo cuesta un poco más. Dan Drown.

wako13

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: Ayuda En Ciclo For Y Variables Int
« Respuesta #1 en: Sábado 6 de Enero de 2007, 18:15 »
0
Pues al parece una de las variables esta tomando un valor nulo
Hazle un break point a tu codigo para ver en que momento se lanza el error

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Ayuda En Ciclo For Y Variables Int
« Respuesta #2 en: Sábado 6 de Enero de 2007, 18:32 »
0
Hacele un paso a paso y comprobá que los valores de las variables "i" y "j" no caigan fuera del rango deceado, seguramente estás leyendo un valor no inicializado .-

Suerte
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Linspire

  • Miembro MUY activo
  • ***
  • Mensajes: 232
    • Ver Perfil
    • http://www.cedrela.com.mx
Re: Ayuda En Ciclo For Y Variables Int
« Respuesta #3 en: Domingo 7 de Enero de 2007, 03:03 »
0
Ok, ya habìa depurado el còdigo pero me desesperé y lo aborte, pero ahora viendo las respuestas depuraré nuevamente y ya comentaré que ocurre.

Gracias por las respuestas. :D  :smartass:
[size=109]My Blog de Programación[/i][/b][/size]
´


[size=109]Tan solo quiero pensar que todo es un sueño y que no quiero despertar
porque quiero controlarlo como yo quiera.
[/size]

Todo es posible, lo imposible solo cuesta un poco más. Dan Drown.

Linspire

  • Miembro MUY activo
  • ***
  • Mensajes: 232
    • Ver Perfil
    • http://www.cedrela.com.mx
Re: Ayuda En Ciclo For Y Variables Int
« Respuesta #4 en: Lunes 8 de Enero de 2007, 00:56 »
0
:P Pues bien, siguiendo el consejo de los que respondieron, me apresuré a depurar el código (que por cierto era una matriz enorme) pero antes de llegar siquiera a la mitad supuse cual fue el problema, lo analicé y finalmente pude corregirlo. Resultaba que la variable cadena tiene 5 de longitud, pero si el usuario no introducía un "número" con esa extensión entonces por defecto la variable es igual a 0, pero entonces no se puede generar el valor de las variables b y c ya que la cadena es de 1 caracter en este caso y por lo tanto los valores que deberían tomar no existen.

Finalmente tal motivo publico el código por si le es de ayuda a alguien (aún hay algunos detalles que arreglar). :rolleyes:

Nota: La variable d la cambié por la variable grueso, es para hacer cálculos de volumen de la producción de madera en una aserradero.

Muchas gracias a los que me respondieron, hasta pronto. :D

Código: Text
  1.  
  2. String cadena, a2, b2, c2;
  3.         int i, j, longitud, n;
  4.         double a, b, c, grueso, ancho, largo, volumen,suma=0;
  5.         
  6.         for(i=1;i<=31;i++)
  7.             {
  8.                 for(j=0;j<=31;j++)
  9.                 {
  10.                         cadena=StringGrid2->Cells[0][i];
  11.                         longitud=cadena.Length();
  12.                         a2=cadena.SubString(1,longitud);
  13.                         b2=cadena.SubString(1,longitud);
  14.                         b2=b2.Delete(1,2);
  15.                         c2=cadena.SubString(1,longitud);
  16.  
  17.                         if(a2.IsEmpty()==true)
  18.                         a=0;
  19.                         else a=a2.Delete(2,longitud).ToDouble();
  20.                         if(b2.IsEmpty()==true)
  21.                         b=0;
  22.                         else b=b2.Delete(2,2).ToDouble();
  23.                         if(c2.IsEmpty()==true)
  24.                         c=1;
  25.                         else
  26. c=cadena.Delete(1,longitud-1).ToDouble();
  27.                 }
  28.  
  29.                 grueso=(b/c)+a;
  30.                 if(StringGrid2->Cells[1][i].IsEmpty()==true)
  31.                 ancho=0;
  32.                 else ancho=StringGrid2->Cells[1][i].ToDouble();
  33.                 if(StringGrid2->Cells[2][i].IsEmpty()==true)
  34.                 largo=0;
  35.                 else largo=StringGrid2->Cells[2][i].ToDouble();
  36.                 if(StringGrid2->Cells[3][i].IsEmpty()==true)
  37.                 n=0;
  38.                 else n=StringGrid2->Cells[3][i].ToDouble();
  39.  
  40.                 volumen=((grueso*ancho*largo)/12)*n;
  41.                 suma+=volumen;
  42.                 if(volumen==0)
  43.                 StringGrid2->Cells[4][i]="";
  44.                 else     
  45. StringGrid2->Cells[4][i]=FormatFloat("0.000",volumen);
  46.                 StringGrid2->Cells[5][1]=FormatFloat("0.000",suma);
  47.                 StringGrid2->Cells[5][i+1]="";
  48.                 Edit3->Text=FormatFloat("0.000",suma);
  49.             }
  50.  
  51.  
[size=109]My Blog de Programación[/i][/b][/size]
´


[size=109]Tan solo quiero pensar que todo es un sueño y que no quiero despertar
porque quiero controlarlo como yo quiera.
[/size]

Todo es posible, lo imposible solo cuesta un poco más. Dan Drown.