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

Alguien localiza el error?

Estas en el tema de Alguien localiza el error? en el foro de C/C++ en Foros del Web. /*Programa que calcule el área de un triángulo en el espacio, dadas las coordenadas de los 3 vértices.*/ #include<stdio.h> #include<conio.h> #include<math.h> float area2(int coordenada1,int coordenada2,int ...
  #1 (permalink)  
Antiguo 29/04/2006, 15:21
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Alguien localiza el error?

/*Programa que calcule el área de un triángulo en el espacio,
dadas las coordenadas de los 3 vértices.*/

#include<stdio.h>
#include<conio.h>
#include<math.h>

float area2(int coordenada1,int coordenada2,int coordenada3);

void main()
{
int coordenada1[2],coordenada2[2],coordenada3[2];
float area;
printf("\n Introduce las coordenadas del primer vertice: ");
printf("\n x1= ");
scanf("%d",&coordenada1[0]);
printf("\n y1= ");
scanf("%d",&coordenada1[1]);
printf("\n Introduce las coordenadas del segundo vertice: ");
printf("\n x2= ");
scanf("%d",&coordenada2[0]);
printf("\n y2= ");
scanf("%d",&coordenada2[1]);
printf("\n Introduce las coordenadas del tercer vertice: ");
printf("\n x3= ");
scanf("%d",&coordenada3[0]);
printf("\n y3= ");
scanf("%d",&coordenada3[1]);
printf("\n El area del triangulo es el valor absoluto del siguiente determinante:\n ");
printf("\n | %d %d 1 |",coordenada1[0],coordenada1[1]);
printf("\n 1/2* | %d %d 1 |",coordenada2[0],coordenada2[1]);
printf("\n | %d %d 1 |",coordenada3[0],coordenada3[1]);
area=area2(coordenada1[2],coordenada2[2],coordenada3[2]);
printf("\n El area del triangulo es: %f",area);
getch();
}

float area2(int coordenada1[3],int coordenada2[3],int coordenada3[3])
{
float a,b;
a=coordenada1[0]*coordenada2[1]+coordenada1[1]*coordenada3[0]+coordenada2[0]*coordenada3[1]-(coordenada2[1]-coordenada3[0]+coordenada3[1]*coordenada1[0]+coordenada1[1]*coordenada2[0])/2;
b=fabs(a);
return b;
}

Me da un error. Alguien podría echarme una mano? Gracias
  #2 (permalink)  
Antiguo 29/04/2006, 16:21
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 10 meses
Puntos: 24
Cual es el error que te da el compilador, y en que linea?
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #3 (permalink)  
Antiguo 29/04/2006, 16:31
Avatar de Spike_ak  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 442
Antigüedad: 19 años, 2 meses
Puntos: 0
Yo me fije y dice que el error esta en el base2, en una de las ultimas lineas que dice : float area2(int coordenada1[3],int coordenada2[3],int coordenada3[3])
__________________
*****************************************
la Ignorancia es la fuerza
  #4 (permalink)  
Antiguo 29/04/2006, 17:35
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
No puedes pasar arrays determinados en tamaño, sino indeterminados, o punteros (que viene a ser lo mismo):

float area2(int coordenada1[], int coordenada2[], int coordenada3[])
float area2(int * coordenada1, int * coordenada2, int * coordenada3)
  #5 (permalink)  
Antiguo 29/04/2006, 18:08
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 6 meses
Puntos: 7
Cita:
Iniciado por MaxExtreme
No puedes pasar arrays determinados en tamaño, sino indeterminados, o punteros (que viene a ser lo mismo):

float area2(int coordenada1[], int coordenada2[], int coordenada3[])
float area2(int * coordenada1, int * coordenada2, int * coordenada3)

solo como, comentario y/o duda.
Cuando los arreglos son de 3 dimensiones en adelante, se tiene que especificar el tamaño de al menos 1 no?

saludos,
  #6 (permalink)  
Antiguo 29/04/2006, 22:23
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 10 meses
Puntos: 24
Si estas trabajando con Visual C/C++, en arreglos de 2 dimensiones en adelante, tienes que especificar todos los tamaños.
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #7 (permalink)  
Antiguo 30/04/2006, 05:47
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
Creo que te seria mas facil si manejaras los vertices como estructuras y no como vectores,

strct Punto
{
int x;
int y;
} a, b, c;

77Tambien puedes hacer
Punto triangulo[3];

//asignando de esta forma:
triangulo[0].x = 10;
triangulo[0].y = 10;
o
triangulo[1] = Punto(20,10);


tu funcion para calcular el area seria:

float area2(const Punto *t);
o
float area2(const Punto t[]);

teniendo un triangulo

0---------x1
|......a
|..../...\
|. b____c
|
y1

formula : area = base*altura/2;

base = c.x - b.x;
altura = b.y - a.y;
// relativo a los puntos de inicio de tu plano.

Saludos

Última edición por Nivel7; 30/04/2006 a las 05:55
  #8 (permalink)  
Antiguo 30/04/2006, 07:36
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Muchas gracias error subsanado. Ya va como la seda. 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 22:24.