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

Errores de compilación a veces

Estas en el tema de Errores de compilación a veces en el foro de C/C++ en Foros del Web. Hola, resulta que he realizado "para el cole" un programa en C, trabajando en Ubuntu 10.04 con Code Blocks, compilado sin errores además de ejecutado ...
  #1 (permalink)  
Antiguo 17/10/2010, 17:55
 
Fecha de Ingreso: octubre-2006
Mensajes: 169
Antigüedad: 17 años, 6 meses
Puntos: 2
Errores de compilación a veces

Hola,

resulta que he realizado "para el cole" un programa en C, trabajando en Ubuntu 10.04 con Code Blocks, compilado sin errores además de ejecutado y probado con unos valores de entrada y salida correctos. Pero cuando lo testeo con el corrector del cole me da error de compilación. Arranco Windows Vista con Dev-C y me da errores de compilación que no logro entender, como por ejemplo cambiar una variable llamada y1 a y11 para que compile sin error en esa línea. Tampoco entiendo el motivo que en CodeBlocks funcione y de los valores correctos y en Dev-C no. Supongo que serán los compiladores. Incluso había declarado las variables en una sola línea y lo he puesto de esta manera tan fea en un momento de desesperación, ¿me podéis ayudar?

Pongo el código y los errores que me devuelve Dev-C.

http://www.flickr.com/photos/3453236...n/photostream/

#include <stdio.h>

int dx;
int dy;
int p;
int end;
float x1;
float x2;
float y11;
float y2;
float x;
float y;


int main()
{

scanf("%f", &x1);
scanf("%f", &y11);
scanf("%f", &x2);
scanf("%f", &y2);

if(x1>=x2)
{
dx = int(x1-x2);
}else{
dx = int(x2-x1);
}

if(y11>=y2)
{
dy = int(y11-y2);
}else{
dy = int(y2-y11);
}

p = 2*dy - dx;


if(x1 > x2)
{
x = x2;
y = y2;
end = int(x1);
}
else
{
x = x1;
y = y11;
end = int(x2);
}

printf("%.2f %.2f ", x, y);


while(x < float(end))
{
x = x + 1.0;
if(p < 0)
{
p = p + 2*dy;
}
else
{
y = y + 1.0;
p = p + 2*(dy - dx);
}
printf("%.2f %.2f ", x, y);
}
return 0;
}
  #2 (permalink)  
Antiguo 17/10/2010, 19:22
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Errores de compilación a veces

Cambia las expresiones del estilo

int( a - b )

por

(int) ( a - b )
  #3 (permalink)  
Antiguo 18/10/2010, 01:22
 
Fecha de Ingreso: octubre-2006
Mensajes: 169
Antigüedad: 17 años, 6 meses
Puntos: 2
Respuesta: Errores de compilación a veces

Muchas gracias CalgaryCorpus, lo pruebo este mediodía y te digo algo.

Gracias.
  #4 (permalink)  
Antiguo 18/10/2010, 06:57
 
Fecha de Ingreso: octubre-2006
Mensajes: 169
Antigüedad: 17 años, 6 meses
Puntos: 2
Respuesta: Errores de compilación a veces SOLUCIONADO

Hola,

gracias por las indicaciones. Ya he resuelto el problema y he pasado el archivo bat de prueba. Aunque y1 debe ser alguna función de las librerías porque si coloco y1 me da el error "warning built-in function 'y1' declared as non function" y por tanto he puesto y11 para solventar momentáneamente el problema hasta que descubra el motivo.

Pongo el código correcto.



Gracias.

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

int dx, dy, p, end;
float x1, x2, y11, y2, x, y;


int main()
{
dx = dy = p = end = 0;
x1 = x2 = y11 = y2 = x = y = 0;

scanf("%f", &x1);
scanf("%f", &y11);
scanf("%f", &x2);
scanf("%f", &y2);

if(x1>=x2)
{
dx = (int)(x1-x2);
}else{
dx = (int)(x2-x1);
}

if(y11>=y2)
{
dy = (int)(y11-y2);
}else{
dy = (int)(y2-y11);
}

p = 2*dy - dx;


if(x1 > x2)
{
x = x2;
y = y2;
end = (int)x1;
}
else
{
x = x1;
y = y11;
end = (int)x2;
}

printf("%.2f %.2f ", x, y);


while(x < (float)end)
{
x = x + 1.0;
if(p < 0)
{
p = p + 2*dy;
}
else
{
y = y + 1.0;
p = p + 2*(dy - dx);
}
printf("%.2f %.2f ", x, y);
}
printf(" \n");
system("pause");
return 0;
}
  #5 (permalink)  
Antiguo 19/10/2010, 00:25
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: Errores de compilación a veces

Puede ser, yo en tiempos me encontré un problema parecido trabajando con Quick C 2.5, no podía tener variables que se llamasen j0, j1, jn, y0, y1, yn, resultó que eran unas funciones matemáticas llamadas funciones de Bessel. Esto no me ocurría con Turbo C.
  #6 (permalink)  
Antiguo 21/10/2010, 14:17
 
Fecha de Ingreso: octubre-2006
Mensajes: 169
Antigüedad: 17 años, 6 meses
Puntos: 2
Respuesta: Errores de compilación a veces

Si, es lo que me comentó un programador amigo ayer. A él le había pasado lo mismo hace tiempo en un programa.

Un saludo y gracias.
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 03:45.