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 - Mastermind

Páginas: 1 ... 7 8 9 10 11 [12] 13 14 15 16 17 ... 24
221
Aprender a programar desde cero / Re:ejercicio CU00624B
« en: 27 de Agosto 2014, 10:45 »
Está perfecto, tanto el código como los nombres de atributos y métodos que usas  ;)

222
Hola, se supone que siguiendo estos pasos podrías usarla: accede a http://sourceforge.net/projects/cimg/files/ y descarga el paquete de nombre CImg-1.5.9.zip ó similar. Dentro de ese paquete tienes un archivo denominado CImg.h

Incluye (copia) ese archivo en la misma carpeta donde tengas el proyecto en el que vayas a trabajar.

En el menú de codeblocks vete a la opción settings (configuración), opción compiler (compilador), pestaña Linker settings (configuración enlaces), pulsa en add (añadir) y en file vete al directorio donde tengas mingw (el compilador) y accede al directorio lib, que será de tipo C:\Program Files\CodeBlocks\MinGW\lib, y elige el archivo libgdi32.a

Para comprobar que la librería CImg está funcionando ejecuta este código:

#include "CImg.h"
  using namespace cimg_library;

  int main() {
    const unsigned char purple[] = { 255,0,255 };
    CImg<unsigned char>(640,400,1,3,0).draw_text(100,100,"Hola mundo",purple).display("Mi primer CImg code");
    return 0;
  }



Siempre tienes que usar las líneas de cabecera para poder usar la librería en tu código.

Saludos

223
Básicamente lo tienes explicado en la página de referencia que te puse:

Implementación no recursiva:

Código: [Seleccionar]
int busquedaBinaria(int[]  vector, int n, int dato)
{
   int centro; int inf=0; int sup=n-1;
 
   while(inf<=sup){
     centro=(sup+inf)/2;
     if(vector[centro]==dato) return centro;
     else if(dato < vector [centro] ){
sup=centro-1;
     }
     else {
       inf=centro+1;
     }
   }
   return -1;
}

En este ejemplo se busca el elemento dato dentro del array vector que tiene longitud n. Si se encuentra, se devuelve la posición en que se encuentra. Si no se encuentra, se devuelve -1.

Implementación recursiva:

Código: [Seleccionar]
bool busqueda_dicotomica(int[]  vector, int fin, int x){
     boolean res; int principio =0;
     if(principio <= fin){
         int m = (principio + fin)/2;
         if(x < v[m]) res = busqueda_dicotomica(v, principio, m-1, x);
         else if(x > v[m]) res = busqueda_dicotomica(v, m+1, fin, x);
         else res = true;
     }else res = false;
     return res;
 }

En este caso devuelve true si el elemento x se encuentra dentro del vector, o devuelve false en caso contrario.

Tienes que tener en cuenta que para que la búsqueda binaria funcione, el vector tiene que estar ordenado, es decir, los elementos puestos de menor a mayor. Si no lo ordenas, no funcionará.

224
Con laberinto recursivo no sé a qué te refieres exactamente ¿qué es lo que tiene que hacer el programa?


226
Al intentar imprimir inversamente el vector con tu código se me ha quedado bloqueado el programa. Lo he reescrito, aquí también te incluyo la suma de datos en posiciones impares:

Clase con el main (LlenarVector):

Código: [Seleccionar]
import java.util.Scanner;
public class LLenarVector {
    public static void main(String[] Args) {
        int encontrado = 0;
        int noencontrado = 0;
        int nummenu;
        int usunum;
        int menu = 0;
        int tam;

        int[] vector = {2, 3, 8, 0, 9, 10, 25, 6};

        VectorPrueba miVector = new VectorPrueba(vector);
        Scanner leer = new Scanner(System.in);
        System.out.println("digite el tamaño del vector  ");
        tam = leer.nextInt();
        while (menu == 0) {

            System.out.println(" -- Digite 1 Para leer y Imprimir  aleatoriamente Vector  --  ");
            System.out.println(" -- Digite 2 Para Buscar un elemento --  ");
            System.out.println(" -- Digite 3 Para Imprimir inversamente el vector --  ");
            System.out.println(" -- Digite 4 Para Sumar todos los datos posiciones impares --  ");
            System.out.println(" -- Digite 5 Búsqueda Binaria --  ");
            System.out.println(" -- Digite 6 Quicksort --  ");
            System.out.println(" -- Digite 7 Para Final  --  ");

            nummenu = leer.nextInt();

            if (nummenu == 1) {

                miVector.rellenar_aleatoriamente(tam);
                miVector.leerVector(0, tam);

            }
            if (nummenu == 2) {
                Scanner leerbusca = new Scanner(System.in);
                System.out.println("digite un numero que quieres buscar");
                usunum = leerbusca.nextInt();
                miVector.busqueda_binaria(0, encontrado, usunum, noencontrado, tam);

            }

            if (nummenu == 3) {
                miVector.imprimir_inversamente(tam);
            }

            if (nummenu == 4) {
                System.out.println("La suma de datos en posiciones impares es "+miVector.sumaDatosPosicionesImpares(tam));

            }

            if (nummenu == 5) {
                // LImpio
            }

            if (nummenu == 6) {
                // LImpio
            }

            if (nummenu == 7) // La Verga Cesar
            {
                break;
            }
        }
    }

}

Clase VectorPrueba con algunos cambios y método para suma posiciones impares:

Código: [Seleccionar]
import java.util.Scanner;
public class VectorPrueba {
    private int[] vector;
    public VectorPrueba(int[] v) {
        vector = v;
    }
    // usuario digita el numero

    public void rellenar_aleatoriamente(int contador) {
        if ((contador-1) == 0) {
            vector[0] = (int) (Math.random() * 10);
        } else {
            vector[contador-1] = (int) (Math.random() * 10);
            rellenar_aleatoriamente(contador-1);
        }           
    }

    public void leerVector(int pos, int tamaño) {
        if (pos == tamaño - 1) {
            System.out.println(" Elemento en posición " + pos + " -- > " + vector[pos]);
        }
        if (pos != tamaño - 1) {

            System.out.println(" Elemento en posición " + pos + " -- > " + vector[pos]);
            leerVector(pos + 1, tamaño);
        }

    }

    public void busqueda_binaria(int i, int encontrado, int usunum, int noencontrado, int tamaño) {

        if (encontrado == 0 && noencontrado == 0) {
            if (usunum == vector[i]) // Para cuando esta !
            {
                System.out.println("el numero  se encuentra en la posicion " + i + " " + "en el vector y es" + " " + vector[i]);
                encontrado = 1;
            } else {
                if (i == tamaño - 1) // Para cuando no esta !
                {
                    System.out.println("numero no esta en  el vector");
                    noencontrado = 1;
                }
            }

            busqueda_binaria(i + 1, encontrado, usunum, noencontrado, tamaño);
        }
    }

    public void imprimir_inversamente(int contador) {
        if ((contador-1) > 0) {
            System.out.println(" Elemento en posición " + (contador-1) + " -- > " + vector[contador-1]);
            imprimir_inversamente(contador-1); //Caso recursivo
        }
        else { //Caso base
            System.out.println(" Elemento en posición " + (contador-1) + " -- > " + vector[contador-1]);
        }
    }

    public int sumaDatosPosicionesImpares(int contador){
        if (contador<=1) {return 0;} //Termina la recursión
        if ((contador % 2) == 0){ //Elemento del vector impar
            return (vector[contador-1]+sumaDatosPosicionesImpares(contador-2));
        } else {return sumaDatosPosicionesImpares(contador-1);}

    }   
}

227
El problema de las N reinas en un tablero es un problema clásico pero relativamente complejo. A su vez, se pueden aplicar distintas estrategias, desde la búsqueda a ciegas hasta la búsqueda basada en heurísticas. Aquí tienes una explicación usando una heurística: https://www.aprenderaprogramar.com/foros/index.php?topic=922

228
Estás manejando conceptos para los que a lo mejor no tienes las bases, es como intentar hacer un pan sin saber amasar la harina.

Para crear un vector de aleatorios (y después leerlos), puedes generar los aleatorios como se indica aquí: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=638:generar-numeros-aleatorios-en-java-clase-random-y-metodo-nextint-ejercicio-ejemplo-resuelto-cu00672b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Primero genera la longitud del vector aleatoriamente. Después usa un for para rellenarlo de datos aleatorios. Después ya puedes leerlo con un bucle tradicional o con el método recursivo como el indicado antes.

El concepto de búsqueda binaria lo tienes aquí: http://es.wikipedia.org/wiki/Algoritmo_de_b%C3%BAsqueda

Saludos

229
Ejemplo para recorrer un vector recursivamente:

Clase VectorTest:

Código: [Seleccionar]
public class VectorTest {

    private int[] vector;
    public VectorTest(int[] v) {
        vector = v;
    }

    public void leerVector(int pos){
        if (pos == vector.length-1) { System.out.println("Elemento en posición "+pos + " es "+vector[pos]);}
        else {
            System.out.println("Elemento en posición "+pos + " es "+vector[pos]);
            leerVector(pos+1);
        }
    }
}

Clase Test (con main):

Código: [Seleccionar]
public class Test {

    public static void main (String[] Args) {
        int[] a = {2, 3, 8, 1, 9};
        VectorTest miVector = new VectorTest(a);
        miVector.leerVector(0);
    }
}

Saludos

231
Crea un formulario donde se pida la base y el exponente y con un botón enviar. En la página donde recibas los datos usa la recuperación de datos por post ó get y define la función que haga el cálculo. Almacena el resultado del cálculo en una variable y muéstralo por pantalla... Avisa si tienes problemas!

232
Hola, he probado el código Java y escribiendo:

Numero a calcular el factorial: 3

Numero a la potencia: 2

Devuelve "El factorial es 9"

Pero 9 no es el factorial de 3, el factorial de 3 es 3*2*1 = 6

No entiendo ese resultado ¿Qué es lo que quieres calcular? ¿Quieres calcular la potencia de un número (base) elevado a un exponente?

¿Por qué hablas de factorial?

Sal2


233
Hola, aquí hay una explicación del quicksort que quizás pueda ayudar: https://www.aprenderaprogramar.com/foros/index.php?topic=133

Salud22

234
Para insertar una imagen tiene que estar en un servidor (no sirve en tu propio computador) y conocer la url. Por ejemplo si la imagen es http: //w ww.jhcnewmedia.org/gestion/wp-content/uploads/2010/05/202417519_59dcc2d5151.jpg

Pulsas en el icono de imagen y pegas la ruta entre las dos etiquetas img y /img y te queda así (luego le das a centrar):


Si solo la tienes en tu computador tienes que hacer como has hecho, adjuntarla como archivo.

La solución on delete no es mala ni buena por sí misma, primero tienes que pensar cuál es tu objetivo y si con esa solución lo cumples puedes darla por buena. Eso implica un borrado automático, si eso es lo que quieres es buena solución, pero si no quieres el borrado automático tendrías que buscar otras alternativas. Saluds,

235
Hola, lo primero que debes tener en cuenta es que cada tabla debe tener su id único y luego puede relacionar con otras tablas a través de un id ajeno.

Por ejemplo Consumiciones tendría:

IdConsumicion IdHabitacion PrecioConsumisicion TipoConsumicion etc.


Para saber a qué habitación corresponde una consumición tienes el IdHabitación.

Ahora supongamos que quieres eliminar un cliente.

En la tabla Habitación puedes tener algo como:

IdHabitacion IdCliente NumeroHabitacion CamasHabitación etc.


Si eliminas el cliente con IdCliente 782, antes de eliminar esa línea de la tabla Cliente tendrás que recorrer las tablas donde aparezca el IdCliente 782 y decidir qué haces con esa información. Si la quieres eliminar de la tabla Habitación, podrías poner en la fila afectada como IdCliente -1, siendo -1 una señal de que la habitación no tiene cliente asociado.

Las consumiciones tienes que pensar si necesitas la información "histórica" o no, si no la necesitas procederías a un borrado tal y como has señalado, pero lo primero será tener claro cuál es la lógica de operación que quieres aplicar y si es necesario, proceder a borrados tal y como indicas.

Saludos!

236
Aprender a programar desde cero / Re:Ejercicio CU00630B
« en: 17 de Agosto 2014, 20:01 »
Public float DuracionCancion ( int NumeroCancion) es correcto pero public debe ir en minúsculas.

Public void HolaIntroduceDuracionCanciones (float Cancion1, float Cancion2 …)

No está bien, el método se encargará de pedir al usuario la duración de las canciones, por tanto no tiene por qué recibir estos datos como parámetros. Quedaría así:

public void holaIntroduceDuracionCanciones ()

Los nombres de métodos empiezan normalmente con minúsculas.

Public float DuracionDiscoCompleto () es correcto (public en minúsculas)

¿Es válido float DuracionDiscoCompleto (Float Cancion1 + float Cancion2…? No, la duración de las canciones será información de que disponga el objeto, por tanto si ya dispone de esa información no hay que pasársela como parámetros.

DuracionDiscoCompleto = Cancion1 + Cancion2 …. , a grosso modo sería algo así, pero lo irás comprendiendo a medida que avances con el curso.

Public void AñadirCancion ( String TituloCancion, float DuracionCancion) es correcto

¿hablando en términos de programación a que se refiere (se añadirá como ultima canción en el disco)? Que debo hacer para que se cumpla esa condición?

Esto se refiere a que si el disco contiene 3 canciones, la que tú añadas será la cuarta. Cada canción tendrá un índice (1, 2, 3, 4 ó 0, 1, 2, 3) y la última añadida será el último índice.

Trata de avanzar con el curso para poder ir comprendiendo mejor todo esto.

Saludos

237
Aprender a programar desde cero / Re:Ejercicio CU00630B
« en: 17 de Agosto 2014, 12:41 »
Hola, no sé si has pensado que se pedía otra cosa pero no veo que hayas respondido al ejercicio. El ejercicio no te pide que digas si se trata de métodos o funciones, sino que definas las signaturas.

Vuelve a leer el texto de la entrega, ahí verás como ejemplo de signatura:
float calcularCapacidadDeposito (float valorDiametro, float valorAltura)

Eso es lo que pide el ejercicio, definir el encabezado de los métodos, pero eso no veo que lo hayas hecho

Saludos

238
Aprender a programar desde cero / Re:Ejercicio! entrega CU00680B
« en: 17 de Agosto 2014, 12:35 »
Lo veo bien pero has repetido la misma descripción en dos métodos:

Método de tipo función, recibe un parámetro, realiza una operación matemática y retorna un valor.

Esto realmente no dice lo que hace el método, si te fijas en cómo se describen los métodos en la documentación del api, se describe lo que hace el método, por ejemplo

sqrt(double a)
          Returns the correctly rounded positive square root of a double value.

Por eso deberías incluir en cada método una descripción que refleje bien lo que hace como:

Método de tipo función, recibe un parámetro double, y devuelve el valor absoluto de dicho parámetro.

Con esto podemos saber lo que hace el método, de la otra forma realmente no lo sabemos ( a no ser que leamos el resto de líneas, pero eso no tiene por qué ser así)

Saludos

239
Lo veo perfecto, no solo lo que pedía el ejercicio sino lo que has introducido de más.

Supongo que has usado Boolean []otroVerdaderoFalsoA = Arrays.copyOf(verdaderoFalsoA,10); en vez de Boolean []otroVerdaderoFalsoA = Arrays.copyOf(verdaderoFalsoA,verdaderoFalsoA.length);

para luego ver un ejemplo de cómo operar sobre la marcha usando iterator. Salud

240
Yo te recomendaría Python con wxPython para la interfaz gráfica, pero en esto podrás oir opiniones de todos los colores y cada una distinta. No es tan fácil decidir cuál es el mejor lenguaje entre varios  :-X


Páginas: 1 ... 7 8 9 10 11 [12] 13 14 15 16 17 ... 24

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".