Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Ogramar

Páginas: 1 ... 48 49 50 51 52 [53] 54 55 56 57 58 ... 100
1041
De todo un poco... / Re:Traduccion Automatica a otro idioma
« en: 18 de Octubre 2015, 17:30 »
Hola hay una forma adecuada para redirigir a los visitantes a un dominio hacia una url determinada a través de httaccess (archivo que debe estar en la raíz del sitio). Cuando alguien escribe la url lo primero que hace el servidor es comprobar si hay una redirección en httaccess y en caso de estar especificada, desvía al visitante al lugar indicado.

El archivo htaccess está localizado en la raíz del servidor y es recomendable hacer una copia de seguridad antes de modificarlo por si hay algún problema.

Supón que quieres que al visitar ww w. mi sitio. com se redirija a una traducción como https://translate.google.es/translate?hl=es&sl=es&tl=en&u=aprenderaprogramar.com

Ejemplos de redireccionamiento desde htaccess:

Redireccionar una página concreta:
Código: [Seleccionar]
Redirect 301 /oldpage.html http://www.example.com/newpage.html
Redireccionar un sitio entero:
Código: [Seleccionar]
Redirect 301 / http://www.example.com/

Otros enlaces que pueden servir de referencia: https://www.aprenderaprogramar.com/foros/index.php?topic=3236 y http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=567:como-traducir-automaticamente-paginas-web-usando-la-herramienta-de-traduccion-de-google&catid=60:servicios-web-gratuitos&Itemid=182

Salu2

1042
Hola Joaquin59 pega el código php como se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Esta consulta parece que la tienes mal planteada:

Código: [Seleccionar]
for ($y=0; $y<count($tipos);  $y++) {
   $result = mysql_query("select id_cliente, nombre, tipo, precio, icono1, localidad FROM restauracion WHERE tipo = $tipos");
   }

En cada pasada del bucle se destruye el valor de $result, además $tipos no tiene indicado el índice que debe utilizarse.

En esta consulta:

Código: [Seleccionar]
for($i=0;$i<count($tipos);$i++) {
$sql = mysql_query("UPDATE restauracion SET nombre = '$tipos[$i]' WHERE tipo = 'Cómida para llevar'");
   }

En cada pasada del bucle se destruye el valor de $sql, quedando únicamente el valor correspondiente a la última pasada, donde $tipos[ i ] es el último elemento del array, es decir, Bar-Restaurante

Un pequeño código de ejemplo:

Código: [Seleccionar]
<?php 
echo 'Prueba <br/>';
$tipos[0] = 'Restaurante';
$tipos[1] = 'Bar';
$tipos[2] = 'Bar-Restaurante';
echo 
'Recorrido primer bucle<br/>';
for (
$y=0$y<count($tipos);  $y++) {
   echo 
$tipos.'<br/>';
   }
   echo 
'Recorrido segundo bucle<br/>';

for (
$y=0$y<count($tipos);  $y++) {
   echo 
$tipos[$y].'<br/>';
   }
?>

Te recomiendo seguir este curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193 donde se explican los conceptos relacionados con bucles, arrays, consultas, etc.

Salu2

1043
Hola yo también te recomiendo que hagas el curso... haciéndolo aprenderás a resolver este tipo de problemas y más.

Una posible solución:

Código: [Seleccionar]
<html>
<head>
<meta charset="utf-8" />
 <style type="text/css">
body {background-color:white; font-family: sans-serif;}
p {font-size: 24px; color: maroon; float: left; margin:10px; border: solid black; padding:10px;}
.boton{padding:15px; width: 330px;  text-align:center; clear:both;
color: white; border-radius: 40px; background: rgb(202, 60, 60);}
.boton:hover {background: rgb(66, 184, 221);}
</style>
<script type="text/javascript">
function filtrar (classRecibida) {
nodosAfiltrar = document.querySelectorAll('.'+classRecibida);
//alert ('Tenemos '+nodosAfiltrar.length)
        for (var i=0; i<nodosAfiltrar.length; i++) {
//alert ('Tenemos ahora'+nodosAfiltrar[i].childNodes[3].childNodes[1].childNodes[1].innerHTML)
if (nodosAfiltrar[i].childNodes[3].childNodes[1].childNodes[1].innerHTML =='Martes'
|| nodosAfiltrar[i].childNodes[3].childNodes[1].childNodes[1].innerHTML =='Miércoles') {
                nodosAfiltrar[i].style.backgroundColor = "yellow";
                nodosAfiltrar[i].style.color = "black";
                nodosAfiltrar[i].style.border = "solid 1px";}
else {nodosAfiltrar[i].style ='display:none';}
                }
}

</script>
</head>
<body>

<div id="commentaryContent" class="scrolling">
 <div class="comment">
                  <div class="commentMinute">01'03"</div>
                  <div class="commentContent">
                    <div class="ASI statImage">
                      <div class="statCommentEntry">Lunes</div>
                    </div>
                  </div>
                </div>
 <div class="comment">
                  <div class="commentMinute">12'17"</div>
                  <div class="commentContent">
                    <div class="ASI statImage">
                      <div class="statCommentEntry">Martes</div>
                    </div>
                  </div>
                </div>
 <div class="comment">
                  <div class="commentMinute">22'11"</div>
                  <div class="commentContent">
                    <div class="ASI statImage">
                      <div class="statCommentEntry">Miércoles</div>
                    </div>
                  </div>
                </div>
 <div class="comment">
                  <div class="commentMinute">09'23"</div>
                  <div class="commentContent">
                    <div class="ASI statImage">
                      <div class="statCommentEntry">Jueves</div>
                    </div>
                  </div>
                </div>
 <div class="comment">
                  <div class="commentMinute">10'08"</div>
                  <div class="commentContent">
                    <div class="ASI statImage">
                      <div class="statCommentEntry">Viernes</div>
                    </div>
                  </div>
                </div>
</div>
<h3 class="boton" onclick="filtrar('comment')">Pulse aquí para filtrar días que empiezan por m</h3>
</body>
</html>

Salu2

1044
Hola lo más normal si se tiene un formulario es ir almacenando los datos en la base de datos por ejemplo usando php. Si no los almacenas en la base de datos, todo lo que haya introducido el usuario se podría perder en algún momento. Aquí hay una referencia de php, http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

Si por motivos de algún tipo se prefiere almacenar usando localStorage puedes trasladar variables JavaScript a LocalStorage y viceversa como se muestra en el siguiente ejemplo:

Código: [Seleccionar]
<html>
<head>

<script type="text/javascript">
function ejecutame(){
alert ("ejecutando");
// Creating an example of JSON
var session = {
  'screens': [],
  'state': true
};
session.screens.push({ 'name': 'screenA', 'width': 450, 'height': 250 });
session.screens.push({ 'name': 'screenB', 'width': 650, 'height': 350 });
session.screens.push({ 'name': 'screenC', 'width': 750, 'height': 120 });
session.screens.push({ 'name': 'screenD', 'width': 250, 'height': 60 });
session.screens.push({ 'name': 'screenE', 'width': 390, 'height': 120 });
session.screens.push({ 'name': 'screenF', 'width': 1240, 'height': 650 });

// Converting the JSON string with JSON.stringify()
// then saving with localStorage in the name of session
localStorage.setItem('session', JSON.stringify(session));

// Example of how to transform the String generated through
// JSON.stringify() and saved in localStorage in JSON object again
var restoredSession = JSON.parse(localStorage.getItem('session'));

// Now restoredSession variable contains the object that was saved
// in localStorage
console.log(restoredSession);
console.log("Podemos acceder a un dato guardado pantalla indice 4 nombre: "+restoredSession.screens[4].name.toString());
console.log("Podemos acceder a un dato guardado pantalla indice 4 ancho: "+restoredSession.screens[4].width.toString());
console.log("Podemos acceder a un dato guardado pantalla indice 4 alto: "+restoredSession.screens[4].height.toString());
}
</script>

</head>
<body onload="ejecutame()">
Hola
</body>

</html>

Salu2

1045
Hola Leo, como te ha indicado 5378453 pega el código para poder verlo. Recomendarte también que no copies texto directamente desde word. Primero copia el texto de word al bloc de notas, y luego súbelo a blogger. Al pasarlo por el blog de notas se eliminan los formatos internos que introduce word.

Salu2

1046
Hola ordenar por orden alfabético con JavaScript básicamente a partir de un array de nombres se hace con sort:

var fruits = ["Platano", "Naranja", "Almendra", "Manzana", "Mango"];
fruits.sort();

Después de aplicar sort ya tenemos los nombres ordenados:

Almendra, Mango, Manzana, Naranja, Platano

Si necesitas preparar los textos (por ejemplo pasar a mayúsculas o minúsculas, etc.) aquí tienes una referencia: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=78&Itemid=206

Salu2

1047
Perfecta la explicación, el código era un poco complejo y a veces se pone código sin saber lo que significa pero este no es el caso. Con esto queda más que aclarado el ejercicio

Salu2!

1048
Hola el cálculo del área de un polígono no es trivial, no creo que te pidan que desarrolles el algoritmo, sino más bien que te bases en el api de java o en algún algoritmo ya desarrollado. Aquí tienes una referencia http://www.mathopenref.com/coordpolygonarea2.html

Para ordenar las figuras habría distintas maneras de plantearlo:

Puedes generar una lista de números (un array o arreglo) y ordenarlo, al mismo tiempo guardas los índices en otra lista. La lista de índices te dará el orden.

Ejemplo: tienes tres figuras con area 30, 22, 45 y perímetro 123, 843, 92

Para ordenar por areas llamarías a un método ordenar pasándole (30,22,45) y te devolvería un array con los índices: 3, 1, 2 Esto significaría que la figura con mayor área es la 3, después la 1 y después la 2

Para ordenar por perímetro llamarías al mismo método pasándole (123, 843, 92) y te devolvería un array con los índices 2, 1, 3 Esto significaría que la figura con mayor perímetro es la 2, luego la 1 y luego la 3.

Otra alternativa sería ordenar la colección de figuras usando Comparable y Comparator como se explica en http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=58&Itemid=180 y usando una colección que se ordene autómaticamente como SortedSet

Salu2

1049
Hola no sé si es lo que buscas pero en el package sentry están los ficheros JAR de políticas con ruta tipo hdfs://ha-nn-uri/user/solr/sentry/

Citar
The following is an example of a CDH Search policy file. The sentry-provider.ini would exist in an HDFS
location such as hdfs://ha-nn-uri/user/solr/sentry/sentry-provider.ini.

Salu2

1050
Hola para quienes quieran entender el programa comienza con una llamada Biseccion b=new Biseccion(0,1,0.01,20);

Donde los parámetros significan lo siguiente:

0 es el valor inferior inicial del intervalo de búsqueda (a)
1 es el valor superior inicial del intervalo de búsqueda (b)
0.01 es la tolerancia o desviación máxima admitida del resultado buscado (tol) (en este caso se da por bueno un resultado si está entre -0.01 y 0.01)
20 es el número de iteraciones permitidas (ni1)

A continuación se invoca double raiz=b.calcularRaiz();

En el método calcularRaiz se comienza calculando el punto medio del intervalo de búsqueda actual:

q=((b-a)/2);

Define un punto medio transitorio p = a+q

Si la imagen de p es 0 ó el intervalo q es menor que la tolerancia devuelve el valor del punto medio como resultado. Si el intervalo es menor que la tolerancia significa que tenemos el resultado dentro del intervalo, con una desviación del valor inferior a 0.01. Pero esta desviación no está referida al resultado de la función, sino al valor de x. Por tanto podría ocurrir que el valor de x estuviera muy próximo al valor que hace cero la función y sin embargo la función tener un valor superior a 0.01. Esto sería extraño porque en funciones continuas los límites izquierdo y derecho de la función cuando nos aproximamos al valor que hace cero la función son los valores inmediatos. No obstante podría no ocurrir así en determinados casos como funciones discontinuas o con asíntotas.

En resumen, aunque en este caso no te afecte al resultado creo que en vez de if(f(p,3)==0||q<tol) sería más correcto usar f(Math.abs(f(p,3))<tol){


Otro cambio que veo recomendable es modificar

       int i=0;
        while(i<ni){


Con estos cambios el código iría quedando así:

Código: [Seleccionar]
public class Biseccion {
double a,b,tol,p;
double matriz[][];
    int k,j,ni;
    public Biseccion(double a1, double b1, double tol1,int ni1){
         a=a1;
         b=b1;
         tol=tol1;
         ni=ni1;
         this.matriz=new double[ni][5];
    }
    private double redondea(double n){
    return Math.rint(n*1000000)/1000000;
    }
    private double f(double x,int opc){
    double r;
    switch(opc){
    case 1:
    r=Math.pow(x,3)+4*Math.pow(x,2)-10;
    return r;
    case 2:
    r=Math.pow(x,3)-x-1;
    return r;
    case 3:
    r=Math.pow(x,3)-7*Math.pow(x,2)+14*x-6;
    return r;
    default:
    break;
    }
    return 0;
    }
    public double calcularRaiz(){
    int i=0;
    double p,q;
        q=((b-a)/2);
        p=(a+q);
        while(i<ni){
            matriz[i][0]= i;
            matriz[i][1]=a;
            matriz[i][2]=b;
            matriz[i][3]=p;
            matriz[i][4]=f(p,3);
        //if(f(p,3)==0||q<tol){
            if(Math.abs(f(p,3))<tol){
        System.out.println("Proceso completado satisfactoriamente con "+f(p,3));
        break;
        }
        else{
        if(f(a,3)*f(p,3)>0)
        a=p;
        else
        b=p;
        q=redondea((b-a)/2);
        p=redondea(a+q);
        }
        i++;
        }
 
       return p;
    }
   
    public double[][] getMatriz() {return matriz;}
}


Y el test:

Código: [Seleccionar]
//CLASE CON MÉTODO MAIN
public class PruebaBiseccion {

    public static void main(String[] args) {
        Biseccion b=new Biseccion(0,1,0.01,20);
        double raiz=b.calcularRaiz();
        System.out.println("La raíz es: "+raiz);
        System.out.println("\n\n Matriz: \n");
        for(double[] array : b.getMatriz()){
            for(double numero:array)
                System.out.print(numero+"\t");
            System.out.println();
        }

    }

}

Ten en cuenta que los índices de i son 0, 1, 2, 3, ... y no 1, 2, 3, ...

Salu2

1051
Hola si hay más de tres elementos y sólo tenemos previsto el tratamiento de tres el resto no se verán afectados.

El código funciona bien. ¿Serías capaz de describir cómo sería el esquema que hace que la expresión elementoLabel[0].firstChild.nextSibling.firstChild.nodeValue = 'Name:' funcione?

Me refiero a un esquema similar a los que aparecen en el curso, sólo a partir del nodo del label

Salu2

1052
Hola Alexis

Para pegar código y poner título a los temas lee lo que se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Para ver este problema pega el código de las clases completas, incluida la clase con el método main.

Pon también un ejemplo con una ecuación y cómo debería quedar rellena la matriz si hiciéramos los cálculos a mano, así sabremos cómo debemos desarrollar el código para obtener los resultados deseados.

Salu2!

1053
Hola para calcular el punto central de cada figura tienes que aplicar matemáticas y analizar figura a figura. Por ejemplo si tomamos el cuadrado veo que para el cuadrado has tomado 4 vértices, pero realmente creo que sólo te hacen falta dos vértices. Dado un vértice (x,y) y otro vértice (x', y') los otros dos vértices del cuadrado se pueden obtener como (x', y) y el otro como (x, y'). Mantener información sobre los 4 vértices en principio no parece que sea necesario.

A partir de los dos vértices del cuadrado tendríamos que las coordenadas para el centro del cuadrado son = ((x+x')/2, (y+y')/2 )

En las otras figuras el cálculo puede ser más complicado, por ejemplo en un triángulo no existe un centro propiamente dicho sino que se definen varios centros,

El incentro es el punto de intersección de las bisectrices de cada uno de los ángulos del triángulo (siendo una bisectriz la recta que divide a un ángulo en dos ángulos iguales),

El baricentro (también llamado centroide) de un triángulo es el punto de intersección de las medianas de dicho triángulo (siendo una mediana el segmento que une un vértice con el punto medio del lado opuesto).

El circuncentro es el punto de intersección de las mediatrices del triángulo (siendo una mediatriz la recta perpendicular a un lado que pasa por el punto medio del mismo).

El ortocentro de un triángulo es el punto de intersección de las tres alturas del triángulo (siendo una altura el segmento que parte de un vértice y es perpendicular al lado opuesto a dicho vértice).

Lo primero que tendrías que decidir es qué centro del triángulo vas a calcular y después aplicar matemáticas para calcularlo

Salu2

1054
No es molestia, intentamos ayudar en la medida de lo posible

Hay una cosa que no sé si has entendido bien respecto de lo que yo planteaba.

La clase Point representa un punto en el espacio de coordenadas. Pero no un punto del área de trabajo, ni un límite del área de trabajo. Es simplemente un punto, tu puedes usar los puntos para definir el centro de un círculo, o para definir los vértices de un triángulo, o para definir el extremo inferior izquierdo y superior derecho de un rectángulo y del área de trabajo, etc.

Por ello el comentario en la clase Point

Código: [Seleccionar]
/**
 * Clase Point para definir las Coordenadas X y Y
 * para referencia en el area de trabajo.
 * @author Jose Ricardo Rojas Montero. A24418
 */

no sería correcto

En realidad sería

Código: [Seleccionar]
/**
 * Clase Point para definir las Coordenadas X y Y
 * de un punto
 * @author Jose Ricardo Rojas Montero. A24418
 */

Con esa lógica tendríamos

Código: [Seleccionar]
  /**
     * Constructor de la clase
     * @param x Define las coordenadas horizontales de un punto
     * @param y Define las coordenadas verticales de un punto
     */

Y en la clase workarea sobraría lo indicado de modo que tendríamos

Código: [Seleccionar]
public class WorkArea {
 
    //Limites del area de trabajo
    private final Point originCoords = new Point(0,0);
    private final Point endCoords = new Point(100,100);
   
    public WorkArea() {
    }
}

Para definir el área de trabajo utilizas dos puntos (que definen un rectángulo), no te hace falta más

Si lo ves de otra manera coméntalo...

Salu2


1055
Lo que has hecho lo veo perfecto como punto de partida. Lo único que no entiendo es para qué incluyes en la clase workarea
Citar
    private int xCoord = 0;
    private int yCoord = 0;

¿Para qué necesitas esto?

Salu2

1056
Hola Apiles te recomiendo revisar el curso https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193 donde se explica entre otras cosas las fechas.

También ten en cuenta que en los foros tratamos de ayudar a partir de una dificultad concreta, error o problema, es decir, debes intentar resolver el problema y cuando no sepas cómo avanzar consultar pegando el código hasta donde hayas podido llegar e indicando dónde no sabes avanzar.

Para pegar código en los foros debes leer esto: https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Salu2

1057
Hola Ana, un id debe ser único en el código HTML. Es un identificador único, igual que un DNI, no pueden (o al menos no deben) haber elementos con id repetidos.

Por ello document.getElementById es una función que solo permite recibir un argumento y no varios.

La sintaxis es element = document.getElementById(id);

No puedes introducir dos id.

Salu2

1058
Hola Iván, para ayudarte pega el código como se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0, si lo pegas como imagen no podemos copiarlo.

Para saber resolver este problema recomendamos seguir el curso Java desde cero disponible en https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

También ten en cuenta que en los foros tratamos de ayudar a partir de una dificultad concreta, error o problema, es decir, debes intentar resolver el problema y cuando no sepas cómo avanzar consultar pegando el código hasta donde hayas podido llegar e indicando dónde no sabes avanzar.

Salu2

1059
Hola MarckyMarck, tu código funciona bien y cumple lo que solicitaba el ejercicio. Cosas que debes tener en cuenta para mejorar:

- Añade métodos get y set siempre en tus clases, por ejemplo no tienes en la clase ListaCantantesFamosos   public ArrayList<String> getLista() { return listaCantantes;}

- Intenta no hacer recorridos de bucles indicando números concretos como límites

Código: [Seleccionar]
        for(int i=0;i<5;i++){
            System.out.println(cantantes.showNombre(i));
        }

Sería mejor:

Código: [Seleccionar]
        for(int i=0;i<cantantes.getLista().size();i++){
            System.out.println(cantantes.showNombre(i));
        }

- Cada método debe tener una responsabilidad única, clara y bien definida. No es un buen diseño:

Código: [Seleccionar]
    public void addNombre(){
        IntroTexto nomCantante= new IntroTexto();
        listaCantantes.add(nomCantante.getPalabra());
    }

Este método debería recibir un cantante y añadirlo, eso es lo que hace un método add. Si querías un método para pedir un cantante y añadirlo a la lista deberías haberlo nombrado de otra manera por ejemplo

Código: [Seleccionar]
    public void pedirNombreEInsertarEnLista(){
        IntroTexto nomCantante= new IntroTexto();
        listaCantantes.add(nomCantante.getPalabra());
    }

Sin embargo este método no está tampoco bien diseñado, porque un método debe encargarse de una cosa y no de dos. Si es para pedir un nombre, no es para insertar, y si es para insertar, no es para pedir. Esto se llama cohesión de un método: cada método tiene su responsabilidad. Esto son bases de diseño para hacer buenos programas en Java.

Te recomiendo revisar el hilo https://www.aprenderaprogramar.com/foros/index.php?topic=1549 y compararlo con tu código

Salu2!

1060
Hola de nuevo, si no quiere usarse una interfaz gráfica, puedes trabajarlo todo nada más que de forma abstracta y con base matemática. Digamos que todo será definido matemáticamente y no habrá nada visual. Esto es algo interesante de cara al aprendizaje, aunque puede resultar bastante tedioso sobre todo para quienes no tengan la base matemática suficiente.

Un planteamiento que se me ocurre es el siguiente: defines una clase Punto que conste de dos atributos enteros, coordenadaX y coordenadaY.

Los puntos te servirán para referenciar posiciones de cualquier elemento del sistema. Ahora tendrás que pensar que todo lo que trabajes estará sobre unos ejes de coordenadas donde tu punto de referencia será el (0,0)

Defines una clase denominada Plano (realmente preferiría llamarla AreaDeTrabajo, ya que no va a darse la definición matemática de un plano sino de un área).

En la clase AreaDeTrabajo tendríamos como atributos dos puntos: Punto coordenadasOrigen y Punto coordenadasFin

Para coordenadasOrigen defines como atributos coordenadaX = 0 y coordenadaY = 0

Para coordenadasFin defines como atributos coordenadaX = 100 y coordenadaY = 100

De este modo ya tienes definido el plano o área de trabajo.

Lo siguiente sería por ejemplo definir la clase Triangulo. Dentro de esta clase tendrías tres atributos Punto, uno para cada vértice del triángulo, por ejemplo Punto vertice1, Punto vertice2, Punto vertice3.

Definiendo coordenadas para los vértices ya tienes definido el triángulo. Un ejemplo sería:

Para vertice1: coordenadaX = 0 y coordenadaY = 0
Para vertice2: coordenadaX = 20 y coordenadaY = 0
Para vertice3: coordenadaX = 10 y coordenadaY = 10

Fíjate que con estos valores ya puedes determinar si el triángulo está dentro del plano o área de trabajo, por ejemplo un triángulo que tuviera estos datos

Para vertice1: coordenadaX = 0 y coordenadaY = 0
Para vertice2: coordenadaX = 200 y coordenadaY = 0
Para vertice3: coordenadaX = 10 y coordenadaY = 10

No sería válido, ya que ningún valor de coordenada puede situarse fuera del límite definido por el plano o área de trabajo.

Todo esto se podría dibujar, pero igualmente se puede trabajar sin dibujarlo simplemente usando clases y análisis matemático.

Ahora dentro de la clase triángulo necesitas añadir los métodos oportunos (además de los getters y setters), por ejemplo un método calcularArea.

Para calcular el área necesitas saber cuál es la base y cuál es la altura del triángulo. La base es el lado del triángulo de mayor longitud. Tendrías que calcular la distanciaVertice1_Vertice2, la distanciaVertice1_Vertice3 y la distanciaVertice2_Vertice3.

La distancia puede calcularse de varias maneras, una de ellas basándonos en vectores. Dado un vector definido por dos puntos A(x, y) y otro B(x', y') la distancia es el módulo del vector sqr ((x'-x)^2+ (y'-y)^2), esto es simplemente el teorema de pitágoras aplicado a un triángulo rectángulo definido por los puntos A y B.

Una vez calculadas las tres distancias, la mayor de ellas será la base del triángulo.

Ahora necesitas la altura. La altura puedes calcularla como la recta perpendicular a la base que pasa por el vértice que no está en la base del triángulo.

Con la base y la altura puedes calcular el área.

Esto seguramente se pueda hacer de otras maneras o plantearlo de forma más simple, yo he puesto lo que se me ha ocurrido pensándolo rápido. A lo mejor te puedes apoyar en clases del api de java que lo simplifiquen todo. A lo mejor puedes usar la clase Area del api java ¿?


Para el ejemplo anterior, tendríamos que area = base * altura / 2

Para vertice1: coordenadaX = 0 y coordenadaY = 0
Para vertice2: coordenadaX = 20 y coordenadaY = 0
Para vertice3: coordenadaX = 10 y coordenadaY = 10

Nuestra base es 20 y nuestra altura 10, nuestra área sería (20*10)/2 = 200/2 = 100

De este modo se iría resolviendo todo: matemáticamente.

Todo esto son ideas, lo que te recomiendo es que pienses primero cómo plantearlo y luego vayas paso por paso, crea una clase, sus métodos y pruébalo bien antes de pasar a crear otra clase.

Si vas pegando el código que vayas generando intentaremos echar una mano

Salu2

Páginas: 1 ... 48 49 50 51 52 [53] 54 55 56 57 58 ... 100

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".