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

error en if en c++

Estas en el tema de error en if en c++ en el foro de C/C++ en Foros del Web. Alguien puede ayudarme tengo un error en un if . El problema es que cuando la funcion llega al if todofunciona bien cuando la variable ...
  #1 (permalink)  
Antiguo 18/09/2010, 15:18
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 3 meses
Puntos: 11
error en if en c++

Alguien puede ayudarme tengo un error en un if . El problema es que cuando
la funcion llega al if todofunciona bien cuando la variable dy es positiva, pero cuando es negativa y la comparo con cero la funcion se termina y ya no hace lo que deberia de hacer. Aqui esta el codigo de mi programa, les marco donde es:

#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

#include<math.h>
void lineaPuntoMedio(int,int,int,int,int);
void writepixel(int,int,int);
int main(){

int gdriver = DETECT,gmode,ErrorCode;
initgraph( &gdriver, &gmode, "C:\\TC\\BGI\\");
ErrorCode = graphresult(); /* Read result of initialization*/
if( ErrorCode != grOk ){ /* Error occured during init */
printf(" Graphics System Error: %s\n", grapherrormsg( ErrorCode ) );
getch();

}
lineaPuntoMedio(0,0,400,0,1);
lineaPuntoMedio(0,0,400,400,2);
lineaPuntoMedio(0,0,0,400,3);
lineaPuntoMedio(0,0,400,200,4);
getch();
closegraph();
}
void writepixel(int x,int y,int color){
putpixel(x,y,color);
}
void lineaPuntoMedio(int x1,int y1,int x2,int y2,int color){
x1=x1+250;
y1=-y1+250;
x2=x2+250;
y2=-y2+250;
int x,y,tmp;
tmp=x=y=0;
int d,ie,ine;
d=ie=ine=0;
signed int dx=x2-x1;
signed int dy=(y2-y1)<0?abs(y2-y1):(y2-y1);
if(dy==0){//aqui ocurre el error
if(dx==0){
//no hacemos nada
}else{
if(dx<0){
tmp=x1; x1=x2; x2=tmp; //caso 5 volverlo caso 1
}
for(x=x1;x<x2;x++)
writepixel(x,y1,color);//printf("caso 1"); //caso 1
}
}else if(dx==0){
if(y2<y1){
tmp=y1;y1=y2;y2=tmp; //caso 7 volverlo caso 3
}
for(y=y1;y<y2;y++)
writepixel(x1,y,color); //printf("caso 3");//caso 3
}else if(dy==abs(dx)){
if(dx>0){
/*if(dy<0){
printf("caso 8"); //caso 8
}else{*/
for(x=x1,y=y1;x<x2;x++,y--) //caso 2
writepixel(x,y,color);
//printf("caso 2");
/*}*/
}else{
if(dy<0){
printf("caso 6"); //caso 6
}else{
for(x=x1,y=y1;y<y2;x--,y++) //caso 4
writepixel(x,y,color);
printf("caso 4");
}
}
}else if(dx<abs(dy)){
if(dx>0){
d=2*dx-dy;
ie=2*dy;
ine=2*(dy-dx);
x=x1;
y=y1;
writepixel(x,y,color);
while(x<x2){
if(d<=0){
d+=ie;
}else{
d+=ine;
y++;
}
x++;
writepixel(x,y,color);
}
//caso 9
}else{
d=2*dx-dy;
ie=2*dy;
ine=2*(dy-dx);
x=x1;
y=y1;
writepixel(x,y,color);
while(x<x2){
if(d<=0){
d+=ie;
}else{
d+=ine;
y++;
}
x++;
writepixel(x,y,color);
}

}
}
}




Alguien sabra porque sucede???
  #2 (permalink)  
Antiguo 18/09/2010, 19:28
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: error en if en c++

imprime la variable dy a ver q te dice xq sino es igua a 0 q pasa?? eso es lo q te esta pasando revisa el manual de la funcion abs a ver xq no te da el resultado xq alomejor esta ahi el detalle saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
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 20:01.