Ver Mensaje Individual
  #22 (permalink)  
Antiguo 13/05/2006, 20:21
cocke
 
Fecha de Ingreso: abril-2006
Mensajes: 22
Antigüedad: 18 años
Puntos: 0
Problema

Gracias por la respuesta pero no funciono ya que dibuja la primera linea y la que sigue la tira al infinito.
El problema esta justamente en las i+1 creo, pero no se que hacer porque los parametros para dibujar una linea deben ser x1,y1,x2,y2.. por lo tanto deben ir los ultimos MATRIZN[][], pero deben incrementarse de alguna forma o solo se dibujara un punto, te envio el codigo completo para que lo aprecies mejor.

--------------------------------------------------------------------------

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import javax.swing.JFrame;

public class mnudos{

//Propiedades de la clase mnudos

BufferedReader stdin; //Objeto stdin
int arg1, arg2;//Argumentos de entrada
int K, P, i;//Variables
int argumen1, argumen2;
boolean error;//Demarcador de errores
int [][] MATRIZN = new int[50][50];

//Contructor
public mnudos(int ar1, int ar2, boolean e){

stdin = new BufferedReader ( new InputStreamReader(System.in));
arg1=ar1;
arg2=ar2;
error=e;

}

//Validacion de argumentos
public void ingreso() throws IOException {
do{
error=false;
try{
System.out.println("****************************** ***********************************************");
System.out.println("*************************** METODO DE LOS NUDOS ****************************");
System.out.println("****************************** ***********************************************");
System.out.println("\n");
System.out.print("Ingrese el numero de nudos: ");
K = Integer.parseInt(stdin.readLine());
System.out.println("");
System.out.print("Ingrese el numero de barras: ");
P = Integer.parseInt(stdin.readLine());
System.out.println("");

//************************************************** ******************************
//************************************************** ******************************

if(P+3==2*K){
for(i=1;i<=K;i++){
System.out.print("\nIngrese valor para posicion x del nudo " + i + ": ");
arg1 = Integer.parseInt(stdin.readLine());


argumen1=400+arg1;
MATRIZN[i][1]=argumen1;


System.out.print("\nIngrese valor para posicion y del nudo " + i + ": ");
arg2 = Integer.parseInt(stdin.readLine());

argumen2=300-arg2;
MATRIZN[i][2]=argumen2;

}

}

}catch(NumberFormatException e){System.out.println("\nError!! Solo numeros enteros, intente nuevamente..") ;
System.out.println("");
System.out.println("");
error=true;}
}while(error);

}

//************************************************** ******************************
//************************************************** ******************************

public void muestra(){
System.out.println("");
System.out.println("\n\tLas coordenadas de los nudos ingresados son: ");
for(i=1;i<=K;i++){
System.out.println("");
System.out.println("");
System.out.print("\t\tNudo n_" + i + " "+(MATRIZN[i][1]-400)+ "," +((MATRIZN[i][2]-300)*(-1)));
//System.out.println("");
//System.out.println("");
}

}

//************************************************** ******************************
//************************************************** ******************************


public void dibuja(Graphics g){

g.drawLine(100, 300, 700, 300);//Dibujo eje x

int B=109;
for(i=0;i<59;i++){
g.drawString("|",B,304);
B=B+10;

}

g.drawLine(400, 100, 400, 500);//Dibujo eje y

B=114;
for(i=0;i<39;i++){
g.drawString("-",399,B);
B=B+10;

}


for(i=1;i<=K;i++){
g.setColor(Color.blue);
g.drawLine(MATRIZN[i][1], MATRIZN[i][2], MATRIZN[i+1][1], MATRIZN[i+1][2]);
}

}
}

//************************************************** ****************************

MAIN->
-----------

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import javax.swing.JFrame;


public class mainnudos extends JFrame{

static mnudos mismetodos;

public static void main (String [] args) throws IOException {


mismetodos = new mnudos (0, 0, false);
mismetodos.ingreso();
mismetodos.muestra();


mainnudos v = new mainnudos();

v.setTitle("***** METODO DE LOS NUDOS *****");

v.setCursor(new Cursor(Cursor.HAND_CURSOR));

v.setSize(800,600);//Hacemos que la ventana tenga un tamaño
v.setVisible(true);//Hacemos que la ventana se vea


}

public void paint (Graphics g){

super.paint(g);//Dejamos que la ventana se dibuje normalmente

g.setColor (Color.white);
g.fillRect ( 0, 0, 800, 600);
g.setColor (Color.black);//Elige el color para dibujar

mismetodos.dibuja(g);//Mando a llamar al metodo dibuja(g)

}

}


-------------------------------------------------------------------------


Me he cabeceado toda la tarde pero no logro obtener la solucion uff.
Este "metodo de los nudos" debe cumplir la condicion inicial que sale al principio P+3==2*K, siendo K el numero de nudos y P el numero de barras, por lo que si ingresas 3 nudos y 3 barras, y luego como coordenadas de nudos (30,30) ; (100,30) y (100,0) debe dibujarse un triangulo, con un drawline que debe ser (30,30,100,30) luego (100,30,100,0) y finalmente (100,0,30,30) me captas?

Muchas gracias por la ayuda.

Saludos

Última edición por cocke; 13/05/2006 a las 20:28