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 - César Krall

Páginas: 1 ... 46 47 48 49 50 [51] 52 53 54 55 56 ... 68
1001
Hola lucas, para pegar código usa el icono # del editor del foro y escribe el código entre las etiquetas [ code ]  ...  [ / code], si no lo haces así el código resultará difícil de leer.

1002
Hola, si solo tienes que imprimir las potencias de 2 no veo necesario pedir la base de la potenciación, ya que siempre será 2. Tampoco veo necesario pedir el exponente, ya que se sabe que los exponentes serán 1, 2, 3, ... hasta 100. Pedir es algo que hacemos cuando el usuario puede elegir algo, pero si no hay que elegir nada no habría que pedir nada. Por tanto vería más correcto escribir:

Inicio
Variables:i, base, potencia, exponente:Entero; 

Imprimir "Programa que muestra las potencias de 2 con exponente 1 a 100";

base = 2;
exponente = 1
potencia = 2

Imprimir "La potencia de", base, "^", exponente, " es ", potencia;

desde exponente = 2 hasta 100
potencia = potencia * 2;
Imprimir "La potencia de", base, " ^ ", exponente, "es ", potencia
siguiente

Fin


Revísalo, yo también me podría equivocar.


Te recomiendo echarle un vistazo a este curso donde tienes ejercicios resueltos: https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59


1003
Hola, supongo que lo que tratas es de obtener todas las potencias de un número, por ejemplo para el número 4 sería calcular 41, 42, 43, 44, etc. ¿Es ese el objetivo?


1004
Hola, si lo quieres es saber si un número es primo aquí te dejo el código. Para ver el resultado del programa tienes que ejecutar el método main de la clase testPrimo:


Clase Primo:

Código: [Seleccionar]
public class Primo {

    boolean esPrimo(int n) {
        //Comprobamos si es múltiplo de 2
        if (n%2==0) return false;
        //Si no es múltiplo de 2, comprobamos si es divisible por algún número impar
        for(int i=3;i*i<=n;i+=2) {
            if(n%i==0)
                return false;
        }
        return true;
    }
}

Clase testPrimo:

Código: [Seleccionar]
public class testPrimo {
    public static void main(String[] Args) {
        Primo algoritmoPrimos = new Primo();
        int numeroASaberSiEsPrimo = 0;
        for (int i= 1; i<10; i++) {
            numeroASaberSiEsPrimo = i;
            if (algoritmoPrimos.esPrimo(numeroASaberSiEsPrimo) == true) {
                System.out.println("El número " + numeroASaberSiEsPrimo + " es primo");
            }
            else {
                System.out.println("El número " + numeroASaberSiEsPrimo + " no es primo");
            }
        }
    }
}

El resultado si ejecutas el programa es:

El número 1 es primo
El número 2 no es primo
El número 3 es primo
El número 4 no es primo
El número 5 es primo
El número 6 no es primo
El número 7 es primo
El número 8 no es primo
El número 9 no es primo

1005
A continuación te adjunto el código, aunque mi recomendación es que empieces este curso desde el principio: https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Sería lo mejor para ir asimilando los conceptos que permiten luego seguir avanzando. Saludos,

Código:

Código: [Seleccionar]
import java.util.Scanner;
public class testIva {
     //INTRODUCIR UN VALOR POR TECLADO Y CALCULAR EL PRECIO SIN EL IVA
    public static void main(String[] args) {

        final double IVA = 21;
        double precio;
        Scanner Teclado = new Scanner (System.in);
        System.out.print("Introduzca el precio de su producto: ");
        double entradaTeclado = 0;
        Scanner entradaEscaner = new Scanner (System.in); //Creación de un objeto Scanner
        entradaTeclado = Double.parseDouble(entradaEscaner.nextLine ()); //Invocamos un método sobre un objeto Scanner
        precio = entradaTeclado;
        System.out.println("Su precio sin iva es : " + (precio-precio*IVA/100));
    }
}


1006
Hola! Te comento varias cosas, la primera como siempre hacemos es que para insertar código uses el botón # que aparece en el editor del foro. Una vez pulsas el botón te aparecen las etiquetas [ code]   [ /code] y entre esas dos etiquetas es donde tienes que pegar el código, que se verá así cuando pulses previsualizar:

Código: [Seleccionar]
Ejemplo de cómo se verá
a
b
c

Ahora vamos con el código: el error que te lanza es una advertencia de que la variable no está inicializada, es un aviso para que la inicialices. Para ello basta con escribir double precio=0;, con eso ya no te dará ese error.

Luego está la lógica del programa: tienes que ir leyendo lo que ejecuta el ordenador paso a paso. En primer lugar se crea una variable IVA que toma valor 21. Luego se crea una variable precio que toma valor 0.
Luego se crea una variable sinIva cuyo valor será precio-((precio*IVA)/100), es decir, 0-0*21/100 y esto vale cero. O sea, sinIva vale cero.

Ahora se pide por teclado que se introduzca el precio y se asigna a la variable precio, por ejemplo introducimos 14.22

Ahora muestra por pantalla Su precio sin iva es: 0 ¿Por qué? Porque sinIva vale cero ya que no has cambiado el valor que tenía.

¿Cómo resolver esto? Primero creamos las variables sin contenido. Luego le vamos asignando contenido a medida que vamos realizando cálculos. Y finalmente mostramos el resultado.

Si no te queda claro puedes mirar esto:

Lógica a aplicar: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=291:sentencias-basicas-de-programacion-en-pseudocodigo-ejemplos-cu00136a&catid=28:curso-bases-programacion-nivel-i&Itemid=59

Ejemplos: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=298:ejercicios-resueltos-ejemplos-de-programacion-con-pseudocodigo-cu00137a&catid=28:curso-bases-programacion-nivel-i&Itemid=59

1007
Supongo que estás usando VBA. Puedes probar con: DoCmd Quit

Si no te funciona prueba: Application.Quit

O si no te funciona:

Application.CloseCurrentDatabase
DoCmd Quit

1008
¿Te refieres a cerrar una conexión a una base de datos Access?

1009
Aprender a programar desde cero / Re:Duda sobre como empezar
« en: 05 de Marzo 2014, 16:55 »
Hola Valeriano, desde los foros intentamos ayudar en todo lo posible, así que no dudes en consultar. Como primera recomendación te diría que trates de leer y comprender desde el principio del libro hasta la página 50 y plantees las dudas que te puedan surgir en este fragmento. Luego, antes de continuar consúltanos para darte orientaciones adicionales.

En esta primera parte aparecen algunas fórmulas matemáticas que no hay que comprender, son sólo ejemplos para demostrar cosas que puede resolver un computador.

Saludos.

1010
Hola PoYoMaRiO, abre un nuevo tema e indica qué sistema operativo estás usando, qué problema es el que te surgió, cuándo te ha surgido el problema, etc. Saludos.

1011
Aprender a programar desde cero / Re:Problemas empezando.
« en: 03 de Marzo 2014, 12:45 »
Hola, la idea es que según nos dice el problema "se sabe que la solución está entre 1 y 10" y que a partir de ahí vamos a intentar encontrar la solución haciendo pruebas. Podemos hacer miles de pruebas (porque un ordenador tiene capacidad para ello) pero no infinitas pruebas, porque en ese caso el ordenador se podría quedar colgado.

En el ejemplo se dice, "vamos a limitar el número de pruebas a 10000 pruebas" (podríamos haber cogido otro valor, 5000 ó 20000, pero en el ejemplo cogemos 10000) y a partir de aquí dice: si la solución está entre 1 y 10 es que tengo que buscar en el 1, 2, 3, 4, 5, 6, 7, 8, 9 que son 9 enteros (digamos que llegaríamos justo hasta 10). Así se llega a que aproximadamente resultan 1111 iteraciones a realizar en cada entero, por ejemplo entre el 1 y el 2 tendríamos que hacer 1111 pruebas. Redondeando se deciden hacer 1000 pruebas, lo que supone que en cada prueba se sumará 0,001 al número probado anteriormente. Por ejemplo:

prueba 1 con 1,000
prueba 2 con 1,001
prueba 3 con 1,002
prueba 4 con 1,003
...
...
así hasta encontrar la solución o terminar el número máximo de pruebas previstas (no podemos hacerlo a mano porque nos llevaría mucho tiempo, pero sí podemos imaginarnos cómo va el proceso).

Por otro lado te recomiendo que te mires esto para tener más referencias:

https://www.aprenderaprogramar.com/foros/index.php?topic=649

https://www.aprenderaprogramar.com/foros/index.php?topic=172

Saludos.


1012
Aquí dejo un primer boceto de pseudocódigo, no he tenido tiempo de probarlo pero pienso que se puede adaptar a lo que se pide:

Código: [Seleccionar]
Procedimiento CARGA_DATOS (d: DISTANCIAS)
Var i, j: entero;
Inicio
   Para i ← 1 hasta 6 hacer
     Para j ← 1 hasta 6 hacer
         Imprimir (‘Ingrese la distancia del punto ,’i,’ al punto ,’j);
         Leer (d[i,j])   
      Fin_si;
     Fin_para;
   Fin_para;
Fin_procedimiento.

Procedimiento CALCULA_RUTA_VIAJANTE_COMERCIO (ruta: vector de enteros)
Var i, j, k, m, n, p, MINIMO: entero;
Var incluye(), d(), c(), ruta(): array de entero;

MINIMO = 9999;
Desde i = 1 hast (n-1)!
incluye(i,1) = 1
FinDesde

i = 1

Desde j = 2 hasta 6
Si incluye(i,j) = 0 entonces
incluye(i,j) = 1
c(i) = c(i) + d(1,j)
FinSi

Desde k = 2 hasta 6
Si incluye(i,k) = 0 entonces
incluye(i,k) = 1
c(i) = c(i) + d(j,k)
FinSi

Desde m = 2 hasta 6
Si incluye(i,m) = 0 entonces
incluye(i,m) = 1
c(i) = c(i) + d(k,m)
FinSi

Desde n = 2 hasta 6
Si incluye(i,n) = 0 entonces
incluye(i,n) = 1
c(i) = c(i) + d(m,n)
FinSi

Desde p = 2 hasta 6
Si incluye(i,p) = 0 entonces
incluye(i,p) = 1
c(i) = c(i) + d(n,p)
FinSi

//Sumar coste de regresar al inicio
c(i) = c(i) + d(p, 1)

Si c(i) < MINIMO entonces
ruta(1) = 1
ruta(2) = j
ruta(3) = k
ruta(4) = m
ruta(5) = n
ruta(6) = p
ruta(7) = 1
FinSi
i = i+1

Findesde
Findesde
Findesde
findesde
Findesde
Fin_procedimiento.

1013
En el pseudocódigo que has planteado queda definida la matriz de adyacencia del grafo que representa el problema con la mitad de los datos, ya que la otra mitad es igual y por tanto no hace falta introducirla. Por ejemplo para este grafo:


Voy a ir planteando el problema con la solución que conozco, que es basada en grafos y ramificación y poda, esto es una solución compleja, se supone que se deben tener conocimientos previos.

Por si te sirvieran, aquí algunas referencias de wikipedia:

Sobre el problema en sí: http://es.wikipedia.org/wiki/Problema_del_viajante

Sobre la estrategia algorítmica: http://es.wikipedia.org/wiki/Ramificaci%C3%B3n_y_poda

Con la solución que conozco, partiríamos de la matriz de adyacencia completa, aunque tenga los datos repetidos (se supone que de la introducción de datos se ha encargado un programa o función previa)

El pseudocódigo de carga de datos quedaría así:

Función CARGA_DATOS () : matriz [1..n, 1..n] de enteros
Var grafo: matriz [1..n, 1..n] de enteros
Var i, j: entero;
Inicio
   Para i ← 1 hasta 6 hacer
     Para j ← 1 hasta 6 hacer
         Leer (A[i,j])
     Fin_para;
   Fin_para;
Devolver grafo
Fin_función.

Para el grafo de la imagen anterior (suponiendo que la letra A es 1, la letra B 2, la letra C 3, la letra 4 D) la matriz quedaría así:

(0   20   42   35

 20   0   30   34

 42   30   0   12

 35   34   12   0)

De forma que grafo[1,1] representa la distancia del punto 1 al punto 1, que es cero. grafo [1,2] representa la distancia del punto 1 al punto 2 que es 20, grafo[1,3] representa la distancia del punto 1 al punto 3 que es 42 y así sucesivamente.

El valor -1 significa que entre dos nodos del grafo no hay camino. Por ejemplo en este grafo:

tendríamos que grafo[1,4] = -1

¿Por qué coger el valor -1? Pues no hay un motivo concreto, también podríamos coger 0 ó coger -22 ó -99, simplemente es un valor que permita distinguir.

Para empezar a plantear el problema harían falta estructuras de datos auxiliares que permitan plantear el algoritmo. En esta solución usaríamos:

tipo Tnodo = registro
    ruta = Tvector //Sirve para almacenar la solución parcial
    asignados: TvectorB //vector de booleanos que indica los nodos del grafo que ya están incluidos en un camino que se está probando
    k: entero //índice de número de elemento fijado en la ruta para este nodo
    costeT: entero //Coste acumulado
    estOpt: entero //Estimación optimista de mejor coste que se puede obtener a partir de la ruta
finRegistro

Supuesto el grafo que tiene 6 nodos anterior y que la ruta que estamos probando es 1, 2, 4. Los elementos del tipo registro serían:

ruta = [1, 2, 4, - , -, -]
asignados = [1, 1, 0, 0, 0, 1]
k: 3
costeT: 7+15 = 22
estOpt: un valor seguro se obtiene multiplicando el número de aristas que faltan por el peso mínimo de una arista en el grafo. Para cerrar un ciclo hacen falta tantas aristas como vértices, en este caso 6. Tenemos definidias 2 aristas (de 1 a 2 y de 2 a 4).
Nos faltan 4 aristas para completar el recorrido, así que viendo cuál es la arista de peso mínimo en el grafo la estimación optimista sería 4*2 = 8

Nos hace falta una función para calcular la arista de peso mínimo en el grafo. Intenta plantearla, no sé si me estoy enrollando mucho.

1014
Escribe el pseudocódigo hasta donde hayas llegado para tratar de ayudarte a partir de ahí. Saludos.

1015
Eso se explica también en el curso CSS. En este caso podría hacerse en la etiqueta body añadiendo esto:

<body style="text-align:center;">

Saludos

1016
No le veo ningún problema a que se incluya la dirección de cada pasajero. Aunque eso es un dato que sería relevante en el mundo real, para el algoritmo la dirección no tiene relevancia y por tanto no es necesario, ya que con lo que trabaja el algoritmo es con las distancias, pero si se quiere poner no le veo problema. Bastaría con que definas calle(0) = "Calle Velázquez, 55", calle(1) = "Avenida Libertad, 22", calle(2) = "Calle Albuero, 355", calle(3) = "... " etc. etc.

1017
Hola Alvaro, esos rectángulos que aparecen se muestran para hacer ver "lo que hay detrás" cuando vemos una página web estructurada con div´s. Es decir, con el código que se proporciona sólo se debe ver el texto. Las imágenes lo que tratan de reflejar es que el texto ese en realidad está "encajado" en cajas que no se ven.

Las cajas se pueden hacer visibles, no es difícil hacerlo. Eso se explica en el curso de CSS: https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=75&Itemid=203, que es un curso que es lógico hacer después del de HTML.

Espero haber aclarado algo  ::)


1018
Aprender a programar desde cero / Re:Nuevo, muy nuevo
« en: 10 de Febrero 2014, 20:36 »
Pues sí que puedes, aunque tratando de adaptar los programas que haces al curso que estás estudiando, y empezando por cosas más básicas y dejando las cuestiones más complejas para próximos años.

Te recomendaría que empieces por aquí: https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61

Desde el foro te podemos echar una mano para resolver las dudas que te surjan, así que si te decides, ¡ánimo, es muy interesante!


1019
Hola Hyde, pienso que esto pueda valer:

Código: [Seleccionar]
  for(x=0;x<10;x++){
    for(y=0;y<10;y++){

if((x+y)%2 ==0){

printf("El elemento con fila %d y columna %d tiene valor %d ",x, y, M[x][y] );

}

    }   
  }

En C y C++ el operador % devuelve el resto de una división. Si un número es par al dividirlo por 2 su resto es cero. Así 2%2 vale 0 pero 3%2 vale 1, 4%2 vale cero, etc. así se puede determinar cuándo un valor es par.

Ejemplo (sólo pongo una matriz de 3x3 para no agrandar demasiado):

( 2   4   3
  2   5   8   
  9   7   5)

En la fila 1 y columna 1 tenemos un 2, como 1+1 es par, se mostrará "El elemento con fila 1 y columna 1 tiene valor 2"

En la fila 1 y columna 2 tenemos un 4, pero no se mostrará porque 1+2 es impar

En la fila 1 y columna 3 tenemos un 3, como 1+3 es par, se mostrará "El elemento con fila 1 y columna 3 tiene valor 3"

Y así sucesivamente...


1020
Aprender a programar desde cero / Re:¿Como empezar?
« en: 04 de Febrero 2014, 22:41 »
Por el curso bases de la programación nivel I es por donde empezar, al menos desde nuestro punto de vista. Y por favor no escribir en mayúsculas que parece que se está gritando. Saludos.

Páginas: 1 ... 46 47 48 49 50 [51] 52 53 54 55 56 ... 68

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