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 - pedro,,

Páginas: 1 ... 23 24 25 26 27 [28] 29 30 31 32 33 ... 65
541
El archivo aciertaNumeroJSON.php quedaría así:
Código: [Seleccionar]
<?php
session_start
();
@
header("Content-type: text/xml");
$xml '<?xml version="1.0" encoding="utf-8"?>
' . "\n";
$xml .= '<resp>' . "\n";  //inciamos el XML

if(isset($_GET['inicio'])){     //se ha indicado iniciar un nuevo juego
        $numeroAleatorio=rand(0,10);//seleccionamos un numero aleatorio entre 0 y 10
        $_SESSION['numeroOculto'] = $numeroAleatorio;
               
               
        $xml .= "<inicio>".$_SESSION['numeroOculto']."</inicio>" . "\n";//retornamos el numero generado
}else{
    $numeroUsuario = $_GET['numero'];
    $numeroOculto=$_SESSION['numeroOculto'];
   
    if($numeroUsuario > $numeroOculto ){
        $xml .= "<encontrado>no</encontrado>" . "\n";
        $xml .= "<mensaje>Has introducido un valor demasiado alto"."s</mensaje>" . "\n";
    }else {
        if($numeroUsuario < $numeroOculto ){
            $xml .= "<encontrado>no</encontrado>" . "\n";
            $xml .= "<mensaje>Has introducido un valor demasiado bajo"."</mensaje>" . "\n";
        }else{
              $xml .= "<encontrado>si</encontrado>" . "\n";
            $xml .= "<mensaje>Exacto!</mensaje>" . "\n";
        }
       
    }
}
//finalizamos la estructura XML
  $xml .= '</resp>' . "\n";
  $xml = str_replace(array("\n", "\r", "\t"), '', $xml);    // removes newlines, returns and tabs
  $xml = trim(str_replace('"', "'", $xml)); // cambia comillas dobles por comillas simples si las hubiese
  $simpleXml = simplexml_load_string($xml); // crea un objeto xml de un string

echo(json_encode($simpleXml)); // crea un string con formato JSON
?>

Y en la función inicioJSON, al recibir un string de este estilo:
Código: [Seleccionar]
'{"inicio":"9"}'Lo mejor a mi gusto es convertirlo en un objeto JSON con la siguiente línea:
Código: [Seleccionar]
var obj = JSON.parse(respuesta);Y después mostrar su contenido por consola como en el ejercicio anterior, de la siguiente forma:
Código: [Seleccionar]
console.log("El número aleatorio que devuelve la consulta es: ", obj.inicio);
la función quedaría así:
Código: [Seleccionar]
function inicioJSON() {
var xmlHttp = new XMLHttpRequest();   
var urlDestino = "aciertaNumeroJSON.php?inicio=hola";
xmlHttp.onreadystatechange = function(){   
if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
var respuesta = xmlHttp.responseText;
console.log(respuesta, typeof respuesta);
var obj = JSON.parse(respuesta);
console.log(obj, typeof obj);
console.log("El número aleatorio que devuelve la consulta es: ", obj.inicio);
document.getElementById('mensaje').innerHTML = "Se ha generado un nuevo numero";
}
};
        xmlHttp.open("GET", urlDestino, true);
xmlHttp.send();
}

 ;D

542
Buenas otra vez.

Si no te entendido mal, podrías hacerlo así:

Código: [Seleccionar]
CREATE TABLE PRODUCTO (isin CHAR(12), fecha CHAR(10) NOT NULL, valor DECIMAL(8,2) NOT NULL)
Una sola tabla. Todo depende del tipo de consultas que necesites hacer más adelante, si necesitaras saber todas las modificaciones en una fecha en concreto y por ejemplo tienes 20 isin distintos,  siempre será más fácil hacer la consulta sobre una tabla que los contenga a todos que una consulta por cada tabla que tengas, que hacer 20 consultas, una por cada tabla.

Espero haberme explicado más o menos.
Saludos. ;D

543
Hola javimf

Yo lo que entiendo en el punto 4 es que necesitas un nuevo archivo php que haga lo mismo que aciertaNumeroXML.php, pero en este caso en vez de devolver algo en formato XML lo devuelva en formato JSON.

Podrías aprovechar el mismo código de aciertaNumeroXML.php para aciertaNumeroJSON.php y la parte final en vez de devolver el contnido de la variable $xml dejarlo así:
Código: [Seleccionar]
$xml = str_replace(array("\n", "\r", "\t"), '', $xml); 
  $xml = trim(str_replace('"', "'", $xml));
  $simpleXml = simplexml_load_string($xml);

echo(json_encode($simpleXml));


Luego la parte ajax sería muy parecida a la usada en el anterior punto del ejercicio, pero cuando recojas los datos de la consulta, tendrás que usar responseText en vez de responseXML.

Prueba y nos cuenta.

Saludos. ;D

544
Hola suketere.

Lo mejor sería que pusieras el código que hallas elaborado y alguien te pueda ayudar sobre el.


Saludos. ;D

545
Hola, aquí dejo una posible solución a los dos ejercicios de la unidad CU00909C del curso avanzado de programación Java


Citar
EJERCICIO Nº 1

Crea un programa que elija dos números enteros aleatorios A y B pero no los muestre por pantalla aún. Si los dos números fueran iguales, deberá repetirse la elección hasta que sean distintos. El programa preguntará por quién apostamos, A o B (gana el número más alto). Una vez el usuario haya introducido su apuesta, el programa mostrará el valor de A y B, dirá si hemos ganado la apuesta (acertado el número más alto) o perdido y nos dirá cuántas partidas hemos ganado y perdido hasta el momento. Tras una jugada, nos preguntará si queremos jugar otra vez.

Ejemplo de ejecución:

Apuestas por A o por B ? : A
A saca un 9 y B saca un 6     HAS GANADO!!!
Llevas 1 partidas ganadas y 0 partidas perdidas
Quieres probar otra vez ? (S/N) : S
Apuestas por A o por B ? : A
A saca un 1 y B saca un 8     HAS PERDIDO!!!
Llevas 1 partidas ganadas y 1 partidas perdidas
Quieres probar otra vez ? (S/N) : N
Adiós

Clase TestApuestaPorUnNumero
Código: [Seleccionar]
public class TestApuestaPorUnNumero {

public static void main(String[] args) {
GeneradorDeNumerosAleatorios generador = new GeneradorDeNumerosAleatorios(1, 100);
EntradaDeTeclado entrada = new EntradaDeTeclado();
Marcador marcador = new Marcador();
char otraVez;
int numA, numB;
char apuesta;
do{
numA = generador.getNumeroAleatorio();
numB = generador.getNumeroAleatorio();
while(numA == numB) {
numB = generador.getNumeroAleatorio();
}
System.out.println(numA + "; " +numB);
System.out.print("¿Apuestas por A o por B? ");
apuesta = entrada.getChar();
while(apuesta != 'a' && apuesta != 'A' && apuesta != 'b' && apuesta != 'B') {
System.out.println(numA + "; " +numB);
System.out.print("Apuesta erronea, apueste otra vez!!!.\n¿Apuestas por A o por B? ");
apuesta = entrada.getChar();
}
System.out.print("A saca un " + numA + " y B saca un " + numB);
if((numA > numB && (apuesta == 'A' || apuesta == 'a')) ||
(numB > numA && (apuesta == 'B' || apuesta == 'b'))) {
marcador.addAcierto();
System.out.print("\tHAS GANADO!!!\n");
} else {
marcador.addError();
System.out.print("\tHAS PERDIDO!!!\n");
}
marcador.addPartida();
System.out.println("Llevas " + marcador.getPartidas() + " partidas. Has ganado " +
marcador.getAciertos() + " y perdido " + marcador.getErrores() + ".");
System.out.println("¿Quieres apostar otra vez? (S/N): ");
otraVez = entrada.getChar();
} while(otraVez == 's' || otraVez == 'S');

System.out.println("Adiós");
}

}

Clase Marcador
Código: [Seleccionar]
public class Marcador {

private int aciertos;
private int errores;
private int numPartidas;

public Marcador() {
aciertos = 0;
errores = 0;
numPartidas = 0;
}

public void setAciertos(int aciertos) {
this.aciertos = aciertos;
}

public void setErrores(int errores) {
this.errores = errores;
}

public void setNumPartidas(int numPartidas) {
this.numPartidas = numPartidas;
}

public int getAciertos() {
return aciertos;
}

public int getErrores() {
return errores;
}

public int getPartidas() {
return numPartidas;
}

public void addAcierto() {
aciertos++;
}

public void addError() {
errores++;
}

public void addPartida() {
numPartidas++;
}
}

Citar
EJERCICIO Nº 2

Ahora vamos a jugar a la “Lotería primitiva”. Para ello, se pedirá al usuario que introduzca 6 números enteros comprendidos entre el 1 y el 49 ambos incluidos. No estará permitido repetir número. Una vez elegidos los seis números el programa nos mostrará nuestros 6 números así como la combinación ganadora (ordenada de menor a mayor). Esta combinación constará de 6 números entre 1 y 49 elegidos al azar por el programa. Finalmente nos dirá cuántos aciertos hemos tenido y nos preguntará si queremos volver a jugar.

Ejemplo de ejecución:

Elige 6 numeros entre el 1 y el 49.
Elige el numero 1 : 3
Elige el numero 2 : 8
Elige el numero 3 : 14
Elige el numero 4 : 2
Elige el numero 5 : 34
Elige el numero 6 : 38
Numeros Elegidos    : 3  8  14  2  34  38
Combinación ganadora : 6  14   21  27  30  48
Has acertado : 1 números
Quieres probar otra vez ? (S/N) : n
Adiós

Clase TestLoteriaPrimitiva
Código: [Seleccionar]
public class TestLoteriaPrimitiva {
public static void main(String[] args) {
GeneradorDeNumerosAleatorios generador = new GeneradorDeNumerosAleatorios(1, 49);
EntradaDeTeclado entrada = new EntradaDeTeclado();
ListaDeEnteros combinacionGanadora;
ListaDeEnteros apuesta;
int numeroCombinacion, numeroApuesta, aciertos;
char otraVez = 'n';

do{
aciertos = 0;
combinacionGanadora = new ListaDeEnteros();
apuesta = new ListaDeEnteros();
for(int i = 0; i < 6; i++) { // Crea la combinación ganadora
numeroCombinacion = generador.getNumeroAleatorio();
while(combinacionGanadora.getSiListaContiene(numeroCombinacion)){ // Comprueba que no se repita ningún número
numeroCombinacion = generador.getNumeroAleatorio();
}
combinacionGanadora.addNumero(numeroCombinacion);
}

System.out.println("Elija 6 números entre el 1 y el 49.");
for(int i = 0; i < 6; i++) {// Solicita seis números al usuario
System.out.print("Elija el numero " + (i+1) + ": ");
numeroApuesta = entrada.getInt();
while(apuesta.getSiListaContiene(numeroApuesta) == true ||
numeroApuesta < 1 || numeroApuesta > 49){ // Comprueba que no se repitan los números introducidos por el usuario
System.out.print("El número introducido está fuera de ragon o repetido." +
"\nElija el numero " + (i+1) + ": ");
numeroApuesta = entrada.getInt();
}
apuesta.addNumero(numeroApuesta);
}
for(int i = 0; i < combinacionGanadora.getSize(); i++) { // Compara la combinación ganadora con la apuesta
if(apuesta.getSiListaContiene(combinacionGanadora.getContenidoPosicion(i))){
aciertos++;
}
}

System.out.println("Número elegidos: " + apuesta.getContenidoCombinacion());
System.out.println("Combinación ganadora: " + combinacionGanadora.getContenidoCombinacion());
System.out.println("Has acertado: " + aciertos + " números.");
System.out.print("¿Quieres probar otra vez? (S/N): ");
otraVez = entrada.getChar();

} while(otraVez == 's' || otraVez == 'S');

System.out.println("Adiós");
}
}

Clase ListaDeEnteros
Código: [Seleccionar]
import java.util.ArrayList;

public class ListaDeEnteros {

    private ArrayList <Integer> listaEnteros;
   
    public ListaDeEnteros() {
    listaEnteros = new ArrayList <>();
    }
   
    public void addNumero(int numero) {
    listaEnteros.add(numero);
    }
   
    public ArrayList<Integer> getNumero() {
        return listaEnteros;
    }
   
    public boolean getSiListaContiene(int numero) {
    return listaEnteros.contains(numero);
    }
   
    public int getSize() {
    return listaEnteros.size();
    }
   
    public int getContenidoPosicion(int index) {
    return listaEnteros.get(index);
    }
   
    public String getContenidoCombinacion(){
        String msg = "";
            for(int numero: listaEnteros) {
                msg += numero + " ";
            }
        return msg;
    }

}

Aquí dejo dos clases más que se usan en ambos ejercercicios.

Clase GeneradorDeNumerosAleatorios
Código: [Seleccionar]
import java.util.Random;

public class GeneradorDeNumerosAleatorios {
private Random rnd;
private int limiteRango1;
private int limiteRango2;

public GeneradorDeNumerosAleatorios() {
rnd = new Random();
this.limiteRango1 = 0;
this.limiteRango2 = 0;
}

public GeneradorDeNumerosAleatorios(int limiteRango1) {
rnd = new Random();
this.limiteRango1 = limiteRango1;
this.limiteRango2 = 0;
}

public GeneradorDeNumerosAleatorios(int limiteRango1, int limiteRango2) {
rnd = new Random();
this.limiteRango1 = limiteRango1;
this.limiteRango2 = limiteRango2;
}

public void setLimiteRango1(int limiteRango1) {
this.limiteRango1 = limiteRango1;
}

public void setLimiteRango2(int limiteRango2) {
this.limiteRango2 = limiteRango2;
}

public int getLimiteRango1() {
return limiteRango1;
}

public int getLimiteRango2() {
return limiteRango2;
}

public int getNumeroAleatorio() {
if(limiteRango1 < limiteRango2) {
return rnd.nextInt(limiteRango2 - limiteRango1 + 1) + limiteRango1;
} else {
return rnd.nextInt(limiteRango1 - limiteRango2 + 1) + limiteRango2;
}
}
}

Clase EntradaDeTeclado
Código: [Seleccionar]
import java.util.Scanner;

public class EntradaDeTeclado {
    Scanner entradaDeTeclado;
    public EntradaDeTeclado ()  {
        entradaDeTeclado = new Scanner(System.in);
    }
 
    public String getString () {
    return entradaDeTeclado.nextLine();
    }
   
    public int getInt() {
    return Integer.parseInt(entradaDeTeclado.nextLine());
    }
   
    public double getDouble() {
    return Double.parseDouble(entradaDeTeclado.nextLine());
    }
   
    public char getChar() {
    String entrada = entradaDeTeclado.nextLine();
    if(entrada.equals("")){
    return ' ';
    } else {
    return entrada.charAt(0);
    }
    }

}

Saludos. ;D

546
Buenas.

Aquí dejo una posible solución al ejercicio CU00908C del curso de programación avanzada en Java.

Clase Test
Código: [Seleccionar]
public class TestAdivnaElNumeroOculto {
public static void main(String[] args) {
GeneradorDeNumerosAleatorios generador = new GeneradorDeNumerosAleatorios();
EntradaDeTeclado entrada = new EntradaDeTeclado();
Marcador marcador;
int numPropuesto, numIntentos;
char otraVez = 'n';
String msgResultado;
do {
System.out.print("Introduce el número inicial del rango: ");
generador.setLimiteRango1(entrada.getInt());
System.out.print("Introduce el número final del rango: ");
generador.setLimiteRango2(entrada.getInt());
System.out.print("Introduce el número de intentos: ");
numIntentos = entrada.getInt();
int[] numEscondidos = new int[numIntentos];
marcador = new Marcador();
for(int i = 0; i < numIntentos; i++) {
numEscondidos[i] = generador.getNumeroAleatorio();
System.out.print("¿Qué número estoy pensando?: ");
numPropuesto = entrada.getInt();
if(numEscondidos[i] == numPropuesto) {
marcador.addAcierto();
System.out.println("Has acertado!!");
} else {
marcador.addError();
System.out.println("No has acertado!!");
}
}
msgResultado = "Has acertado " + marcador.getAciertos() + " veces y has fallado " +
marcador.getErrores() + " veces. Eran solución: " + numEscondidos[0];
if(numEscondidos.length > 1) {
for(int i = 1; i < numEscondidos.length; i++) {
msgResultado += ", " + numEscondidos[i];

}
}
System.out.println(msgResultado + ".");
System.out.print("¿Quieres probar otra vez? (S/N)");
otraVez = entrada.getChar();

} while(otraVez == 's' || otraVez == 'S');
System.out.println("Adiós");
}
}

Clase EntradaDeTeclado
Código: [Seleccionar]
import java.util.Scanner;

public class EntradaDeTeclado {
    Scanner entradaDeTeclado;
    public EntradaDeTeclado ()  {
        entradaDeTeclado = new Scanner(System.in);
    }
 
    public String getString () {
    return entradaDeTeclado.nextLine();
    }
   
    public int getInt() {
    return Integer.parseInt(entradaDeTeclado.nextLine());
    }
   
    public double getDouble() {
    return Double.parseDouble(entradaDeTeclado.nextLine());
    }
   
    public char getChar() {
    String entrada = entradaDeTeclado.nextLine();
    if(entrada.equals("")){
    return ' ';
    } else {
    return entrada.charAt(0);
    }
    }

}

Clase Marcador
Código: [Seleccionar]
public class Marcador {

private int aciertos;
private int errores;
private int numPartidas;

public Marcador() {
aciertos = 0;
errores = 0;
numPartidas = 0;
}

public void setAciertos(int aciertos) {
this.aciertos = aciertos;
}

public void setErrores(int errores) {
this.errores = errores;
}

public void setNumPartidas(int numPartidas) {
this.numPartidas = numPartidas;
}

public int getAciertos() {
return aciertos;
}

public int getErrores() {
return errores;
}

public int getPartidas() {
return numPartidas;
}

public void addAcierto() {
aciertos++;
}

public void addError() {
errores++;
}

public void addPartida() {
numPartidas++;
}
}

Clase GeneradorDeNumerosAleatorios
Código: [Seleccionar]
import java.util.Random;

public class GeneradorDeNumerosAleatorios {
private Random rnd;
private int limiteRango1;
private int limiteRango2;

public GeneradorDeNumerosAleatorios() {
rnd = new Random();
this.limiteRango1 = 0;
this.limiteRango2 = 0;
}

public GeneradorDeNumerosAleatorios(int limiteRango1) {
rnd = new Random();
this.limiteRango1 = limiteRango1;
this.limiteRango2 = 0;
}

public GeneradorDeNumerosAleatorios(int limiteRango1, int limiteRango2) {
rnd = new Random();
this.limiteRango1 = limiteRango1;
this.limiteRango2 = limiteRango2;
}

public void setLimiteRango1(int limiteRango1) {
this.limiteRango1 = limiteRango1;
}

public void setLimiteRango2(int limiteRango2) {
this.limiteRango2 = limiteRango2;
}

public int getLimiteRango1() {
return limiteRango1;
}

public int getLimiteRango2() {
return limiteRango2;
}

public int getNumeroAleatorio() {
if(limiteRango1 < limiteRango2) {
return rnd.nextInt(limiteRango2 - limiteRango1 + 1) + limiteRango1;
} else {
return rnd.nextInt(limiteRango1 - limiteRango2 + 1) + limiteRango2;
}
}
}

Saludos. ;D

547
Hola Jorgito.

El ejercicio está bien.

Por comentarte algo, si colocas los "checkbox" o los "radio" entre etiquetas "label" conseguirás que también se puedan seleccionar dichos elementos pulsando sobre el texto y no solo pinchando en la imagen que los representa.

Quedaría así:

Código: [Seleccionar]
<label for="preferencia_rock"><input id="preferencia_rock" name="preferencia_rock" type="checkbox" />Rock</label>
Saludos. ;D

548
Hola DRANXZ88.

a) bien.

b) El enunciado dice "Asigna el resultado de una invocación a la función con los números 2, 5, 1, 8, 10 a una variable de nombre $tmp..."
Con lo que entiendo que debería quedar algo así;
Código: [Seleccionar]
function sumarValor($a, $b, $c, $d, $f) {
            return $a + $b + $c + $d + $f;
        }

        $tmp = sumarValor(2, 5, 1, 8, 10); //Asigna el resultado de una invocación a la función a una variable
        echo  "La suma es $tmp";

C) Da buen resultado, pero el enunciado pide que la función devuelva el volumen del cilindro, así que la función no debe de ser de tipo procedimiento.

Solo detalles.

Saludos. ;D

549
Hola Jorgito.

El ejercicio está bien.

Lo único comentarte que si usas el atributo "for" en una etiqueta "label", necesitarás tener una etiqueta de otro tipo con id del mismo valor que el "for", sino no tiene sentido el uso de "for".

Saludos. ;D

550
Hola Jorgito Pucheta.

En general tu código hace lo que pedía el enunciado, solo algunas cosas a corregir.

Si usas "for" en las etiquetas "label" deberías usar un id con el mismo valor, para que queden relacionados entre sí.

Cuando uses imágenes es conveniente usar el atributo "alt" de estas, por si por algún motivo no se pudiese cargar la imagen quede representada mediante algún texto.

Saludos. ;D


551
Lo intentaste?  :o

Lo tenía del otro día pero no se porqué se me olvido ponerlo en el código de javascript.
Te dejo la función que hay que añadir nada mas, y solo tienes que llamarla.

Código: [Seleccionar]
function checkAjaxXML() {
var xmlHttp = new XMLHttpRequest();   
var numPropuesto = document.getElementById('numero').value;
var urlDestino = 'aciertaNumeroXML.php?numero=' + numPropuesto;
xmlHttp.onreadystatechange = function(){   
if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
var respuesta = xmlHttp.responseXML;
console.log(respuesta);
document.getElementById('encontrado').innerHTML = respuesta.querySelector('encontrado').textContent;
document.getElementById('mensaje').innerHTML = respuesta.querySelector('mensaje').textContent;
}
};

xmlHttp.open("GET", urlDestino, true);
xmlHttp.send();
}

Saludos. ;D

552
Hola. Dejo una posible solución al ejercicio CU00907C del curso avanzado de programación Java.

Citar
EJERCICIO

Crea un programa para el cálculo del importe final a partir del importe inicial y un porcentaje de impuestos. El importe inicial y el porcentaje de impuestos deben solicitarse al usuario. El programa debe mostrar el resultado ateniéndose a estas reglas: debe mostrarse el impuesto como resultado de calcular el importe inicial por el porcentaje dividido entre 100, con precisión de dos decimales y redondeo al entero más próximo o en caso de equidistancia, redondeo al entero mayor. Debe mostrarse el importe final como resultado de sumar el importe inicial con el impuesto, por tanto tendrá precisión de dos decimales.

Ejemplo de resultados a obtener:

Por favor introduzca el importe inicial: 0.70
Por favor introduzca el porcentaje de impuestos: 5
El impuesto a pagar es: 0.04
El importe final es: 0.74

Código: [Seleccionar]
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Scanner;

public class TestEjercicio {

public static void main(String[] args) {

Scanner entrada = new Scanner(System.in);
BigDecimal impuestoFinal, importeFinal, importe, impuesto;

System.out.print("Introduzca el importe inicial: ");
importe = BigDecimal.valueOf(Double.parseDouble(entrada.nextLine()));

System.out.print("\nIntroduzca el porcentanje de impuestos: ");
impuesto = BigDecimal.valueOf(Double.parseDouble(entrada.nextLine()));
entrada.close();

impuestoFinal = redondearNumeroBigDecimal(2, calcularImpuesto(importe, impuesto));
System.out.println("\nEl impuesto a pagar es: " + impuestoFinal);
importeFinal = redondearNumeroBigDecimal(2, sumarDosBigDecimal(importe, impuestoFinal));
System.out.println("El importe final es: " + importeFinal);

}

public static BigDecimal sumarDosBigDecimal(BigDecimal num1, BigDecimal num2) {
BigDecimal resultado = num1.add(num2);
return resultado;
}
public static BigDecimal calcularImpuesto(BigDecimal importeInicial, BigDecimal impuestos) {
BigDecimal impuesto = importeInicial.multiply(impuestos).divide(BigDecimal.valueOf(100));
return impuesto;
}

public static BigDecimal redondearNumeroBigDecimal(int numDecimales, BigDecimal numBig) {
numBig = numBig.setScale(numDecimales, RoundingMode.HALF_UP);
return numBig;
}

}

Saludos.  ;D

553
Comunidad / Re:Hola mundo
« en: 14 de Diciembre 2016, 14:05 »
Hola maxplanck.

Lo primero darte la bienvenida al foro y espero que puedas saciar todas tus dudas con respecto a la programación aquí.

Por cierto, misma generación que la mía.  ;)

Y ya que te ofreces, ¿Como se abría un fichero en BASIC? :o 8)

Saludos. ;D

554
Hola, cuando estaba resolviendo este ejercicio y quise compararlo con los códigos de otros compañeros, me encontré con el de DRANXZ88,  y pienso que el código de él está correcto, y que usar ceil para el redondeo es la forma que mejor se adapta al resultado que pide el enunciado,  puesto que siempre vamos un minuto adelantado, es decir, estamos comprobando durante que minuto nos enconramos, no cuando se ha cumplido. Pongo  un ejemplo del código que he usado para tal y el resultado.

Código: [Seleccionar]
import java.util.Random;

public class Test{

public static void main(String[] args) {
Random rnd = new Random();
double a, c;
a = 1+ 1;
int b = 0;
for(int i = 0; i < 5400; i++){
/*sumamos 1 a i porque si no lo hacemos, cuando el segundo sea el 60 nos
* dirá que pertenece al minuto 1 y según el enunciado ya debe de pertenecer al minuto
* siguiente, esto nos pasa con todos los segundos que son multiplos de 60.
* */
a = i+1;
if(a%60 == 0) {
System.out.print("Valores entre " + b + " y " + i + " enstán en el minuto: " +
Math.ceil(a/60));
c = i - rnd.nextInt(59)+1; // escogemos un segundo al azar entre los valores en los que nos encontremos
// Si estamos entre 0 y 59, será un valor entre estos.
System.out.print("; Ej: " + c + "seg + 1 / 60 con ceil=");
c++;
System.out.println(Math.ceil(c/60) + "; con round=" + Math.round(c/60));
b += 60;
}
}
}

Captura de la ejecución:
Código: [Seleccionar]
Valores entre 0 y 59 enstán en el minuto: 1.0; Ej: 25.0seg + 1 / 60 con ceil=1.0; con round=0
Valores entre 60 y 119 enstán en el minuto: 2.0; Ej: 70.0seg + 1 / 60 con ceil=2.0; con round=1
Valores entre 120 y 179 enstán en el minuto: 3.0; Ej: 124.0seg + 1 / 60 con ceil=3.0; con round=2
Valores entre 180 y 239 enstán en el minuto: 4.0; Ej: 185.0seg + 1 / 60 con ceil=4.0; con round=3
Valores entre 240 y 299 enstán en el minuto: 5.0; Ej: 256.0seg + 1 / 60 con ceil=5.0; con round=4
Valores entre 300 y 359 enstán en el minuto: 6.0; Ej: 313.0seg + 1 / 60 con ceil=6.0; con round=5
Valores entre 360 y 419 enstán en el minuto: 7.0; Ej: 408.0seg + 1 / 60 con ceil=7.0; con round=7
Valores entre 420 y 479 enstán en el minuto: 8.0; Ej: 437.0seg + 1 / 60 con ceil=8.0; con round=7
Valores entre 480 y 539 enstán en el minuto: 9.0; Ej: 505.0seg + 1 / 60 con ceil=9.0; con round=8
Valores entre 540 y 599 enstán en el minuto: 10.0; Ej: 546.0seg + 1 / 60 con ceil=10.0; con round=9
Valores entre 600 y 659 enstán en el minuto: 11.0; Ej: 626.0seg + 1 / 60 con ceil=11.0; con round=10
Valores entre 660 y 719 enstán en el minuto: 12.0; Ej: 708.0seg + 1 / 60 con ceil=12.0; con round=12
Valores entre 720 y 779 enstán en el minuto: 13.0; Ej: 757.0seg + 1 / 60 con ceil=13.0; con round=13
Valores entre 780 y 839 enstán en el minuto: 14.0; Ej: 832.0seg + 1 / 60 con ceil=14.0; con round=14
Valores entre 840 y 899 enstán en el minuto: 15.0; Ej: 874.0seg + 1 / 60 con ceil=15.0; con round=15
Valores entre 900 y 959 enstán en el minuto: 16.0; Ej: 947.0seg + 1 / 60 con ceil=16.0; con round=16
Valores entre 960 y 1019 enstán en el minuto: 17.0; Ej: 963.0seg + 1 / 60 con ceil=17.0; con round=16
Valores entre 1020 y 1079 enstán en el minuto: 18.0; Ej: 1026.0seg + 1 / 60 con ceil=18.0; con round=17
Valores entre 1080 y 1139 enstán en el minuto: 19.0; Ej: 1138.0seg + 1 / 60 con ceil=19.0; con round=19
Valores entre 1140 y 1199 enstán en el minuto: 20.0; Ej: 1162.0seg + 1 / 60 con ceil=20.0; con round=19
Valores entre 1200 y 1259 enstán en el minuto: 21.0; Ej: 1243.0seg + 1 / 60 con ceil=21.0; con round=21
Valores entre 1260 y 1319 enstán en el minuto: 22.0; Ej: 1295.0seg + 1 / 60 con ceil=22.0; con round=22
Valores entre 1320 y 1379 enstán en el minuto: 23.0; Ej: 1374.0seg + 1 / 60 con ceil=23.0; con round=23
Valores entre 1380 y 1439 enstán en el minuto: 24.0; Ej: 1387.0seg + 1 / 60 con ceil=24.0; con round=23
Valores entre 1440 y 1499 enstán en el minuto: 25.0; Ej: 1445.0seg + 1 / 60 con ceil=25.0; con round=24
Valores entre 1500 y 1559 enstán en el minuto: 26.0; Ej: 1517.0seg + 1 / 60 con ceil=26.0; con round=25
Valores entre 1560 y 1619 enstán en el minuto: 27.0; Ej: 1593.0seg + 1 / 60 con ceil=27.0; con round=27
Valores entre 1620 y 1679 enstán en el minuto: 28.0; Ej: 1631.0seg + 1 / 60 con ceil=28.0; con round=27
Valores entre 1680 y 1739 enstán en el minuto: 29.0; Ej: 1711.0seg + 1 / 60 con ceil=29.0; con round=29
Valores entre 1740 y 1799 enstán en el minuto: 30.0; Ej: 1795.0seg + 1 / 60 con ceil=30.0; con round=30
Valores entre 1800 y 1859 enstán en el minuto: 31.0; Ej: 1828.0seg + 1 / 60 con ceil=31.0; con round=30
Valores entre 1860 y 1919 enstán en el minuto: 32.0; Ej: 1874.0seg + 1 / 60 con ceil=32.0; con round=31
Valores entre 1920 y 1979 enstán en el minuto: 33.0; Ej: 1948.0seg + 1 / 60 con ceil=33.0; con round=32
Valores entre 1980 y 2039 enstán en el minuto: 34.0; Ej: 2006.0seg + 1 / 60 con ceil=34.0; con round=33
Valores entre 2040 y 2099 enstán en el minuto: 35.0; Ej: 2083.0seg + 1 / 60 con ceil=35.0; con round=35
Valores entre 2100 y 2159 enstán en el minuto: 36.0; Ej: 2141.0seg + 1 / 60 con ceil=36.0; con round=36
Valores entre 2160 y 2219 enstán en el minuto: 37.0; Ej: 2162.0seg + 1 / 60 con ceil=37.0; con round=36
Valores entre 2220 y 2279 enstán en el minuto: 38.0; Ej: 2261.0seg + 1 / 60 con ceil=38.0; con round=38
Valores entre 2280 y 2339 enstán en el minuto: 39.0; Ej: 2335.0seg + 1 / 60 con ceil=39.0; con round=39
Valores entre 2340 y 2399 enstán en el minuto: 40.0; Ej: 2378.0seg + 1 / 60 con ceil=40.0; con round=40
Valores entre 2400 y 2459 enstán en el minuto: 41.0; Ej: 2450.0seg + 1 / 60 con ceil=41.0; con round=41
Valores entre 2460 y 2519 enstán en el minuto: 42.0; Ej: 2487.0seg + 1 / 60 con ceil=42.0; con round=41
Valores entre 2520 y 2579 enstán en el minuto: 43.0; Ej: 2546.0seg + 1 / 60 con ceil=43.0; con round=42
Valores entre 2580 y 2639 enstán en el minuto: 44.0; Ej: 2612.0seg + 1 / 60 con ceil=44.0; con round=44
Valores entre 2640 y 2699 enstán en el minuto: 45.0; Ej: 2694.0seg + 1 / 60 con ceil=45.0; con round=45
Valores entre 2700 y 2759 enstán en el minuto: 46.0; Ej: 2736.0seg + 1 / 60 con ceil=46.0; con round=46
Valores entre 2760 y 2819 enstán en el minuto: 47.0; Ej: 2795.0seg + 1 / 60 con ceil=47.0; con round=47
Valores entre 2820 y 2879 enstán en el minuto: 48.0; Ej: 2851.0seg + 1 / 60 con ceil=48.0; con round=48
Valores entre 2880 y 2939 enstán en el minuto: 49.0; Ej: 2896.0seg + 1 / 60 con ceil=49.0; con round=48
Valores entre 2940 y 2999 enstán en el minuto: 50.0; Ej: 2944.0seg + 1 / 60 con ceil=50.0; con round=49
Valores entre 3000 y 3059 enstán en el minuto: 51.0; Ej: 3015.0seg + 1 / 60 con ceil=51.0; con round=50
Valores entre 3060 y 3119 enstán en el minuto: 52.0; Ej: 3109.0seg + 1 / 60 con ceil=52.0; con round=52
Valores entre 3120 y 3179 enstán en el minuto: 53.0; Ej: 3126.0seg + 1 / 60 con ceil=53.0; con round=52
Valores entre 3180 y 3239 enstán en el minuto: 54.0; Ej: 3208.0seg + 1 / 60 con ceil=54.0; con round=53
Valores entre 3240 y 3299 enstán en el minuto: 55.0; Ej: 3267.0seg + 1 / 60 con ceil=55.0; con round=54
Valores entre 3300 y 3359 enstán en el minuto: 56.0; Ej: 3355.0seg + 1 / 60 con ceil=56.0; con round=56
Valores entre 3360 y 3419 enstán en el minuto: 57.0; Ej: 3419.0seg + 1 / 60 con ceil=57.0; con round=57
Valores entre 3420 y 3479 enstán en el minuto: 58.0; Ej: 3454.0seg + 1 / 60 con ceil=58.0; con round=58
Valores entre 3480 y 3539 enstán en el minuto: 59.0; Ej: 3518.0seg + 1 / 60 con ceil=59.0; con round=59
Valores entre 3540 y 3599 enstán en el minuto: 60.0; Ej: 3553.0seg + 1 / 60 con ceil=60.0; con round=59
Valores entre 3600 y 3659 enstán en el minuto: 61.0; Ej: 3654.0seg + 1 / 60 con ceil=61.0; con round=61
Valores entre 3660 y 3719 enstán en el minuto: 62.0; Ej: 3671.0seg + 1 / 60 con ceil=62.0; con round=61
Valores entre 3720 y 3779 enstán en el minuto: 63.0; Ej: 3778.0seg + 1 / 60 con ceil=63.0; con round=63
Valores entre 3780 y 3839 enstán en el minuto: 64.0; Ej: 3796.0seg + 1 / 60 con ceil=64.0; con round=63
Valores entre 3840 y 3899 enstán en el minuto: 65.0; Ej: 3845.0seg + 1 / 60 con ceil=65.0; con round=64
Valores entre 3900 y 3959 enstán en el minuto: 66.0; Ej: 3941.0seg + 1 / 60 con ceil=66.0; con round=66
Valores entre 3960 y 4019 enstán en el minuto: 67.0; Ej: 4002.0seg + 1 / 60 con ceil=67.0; con round=67
Valores entre 4020 y 4079 enstán en el minuto: 68.0; Ej: 4030.0seg + 1 / 60 con ceil=68.0; con round=67
Valores entre 4080 y 4139 enstán en el minuto: 69.0; Ej: 4084.0seg + 1 / 60 con ceil=69.0; con round=68
Valores entre 4140 y 4199 enstán en el minuto: 70.0; Ej: 4176.0seg + 1 / 60 con ceil=70.0; con round=70
Valores entre 4200 y 4259 enstán en el minuto: 71.0; Ej: 4245.0seg + 1 / 60 con ceil=71.0; con round=71
Valores entre 4260 y 4319 enstán en el minuto: 72.0; Ej: 4275.0seg + 1 / 60 con ceil=72.0; con round=71
Valores entre 4320 y 4379 enstán en el minuto: 73.0; Ej: 4374.0seg + 1 / 60 con ceil=73.0; con round=73
Valores entre 4380 y 4439 enstán en el minuto: 74.0; Ej: 4437.0seg + 1 / 60 con ceil=74.0; con round=74
Valores entre 4440 y 4499 enstán en el minuto: 75.0; Ej: 4467.0seg + 1 / 60 con ceil=75.0; con round=74
Valores entre 4500 y 4559 enstán en el minuto: 76.0; Ej: 4550.0seg + 1 / 60 con ceil=76.0; con round=76
Valores entre 4560 y 4619 enstán en el minuto: 77.0; Ej: 4581.0seg + 1 / 60 con ceil=77.0; con round=76
Valores entre 4620 y 4679 enstán en el minuto: 78.0; Ej: 4638.0seg + 1 / 60 con ceil=78.0; con round=77
Valores entre 4680 y 4739 enstán en el minuto: 79.0; Ej: 4684.0seg + 1 / 60 con ceil=79.0; con round=78
Valores entre 4740 y 4799 enstán en el minuto: 80.0; Ej: 4781.0seg + 1 / 60 con ceil=80.0; con round=80
Valores entre 4800 y 4859 enstán en el minuto: 81.0; Ej: 4813.0seg + 1 / 60 con ceil=81.0; con round=80
Valores entre 4860 y 4919 enstán en el minuto: 82.0; Ej: 4902.0seg + 1 / 60 con ceil=82.0; con round=82
Valores entre 4920 y 4979 enstán en el minuto: 83.0; Ej: 4955.0seg + 1 / 60 con ceil=83.0; con round=83
Valores entre 4980 y 5039 enstán en el minuto: 84.0; Ej: 5023.0seg + 1 / 60 con ceil=84.0; con round=84
Valores entre 5040 y 5099 enstán en el minuto: 85.0; Ej: 5100.0seg + 1 / 60 con ceil=86.0; con round=85
Valores entre 5100 y 5159 enstán en el minuto: 86.0; Ej: 5110.0seg + 1 / 60 con ceil=86.0; con round=85
Valores entre 5160 y 5219 enstán en el minuto: 87.0; Ej: 5213.0seg + 1 / 60 con ceil=87.0; con round=87
Valores entre 5220 y 5279 enstán en el minuto: 88.0; Ej: 5237.0seg + 1 / 60 con ceil=88.0; con round=87
Valores entre 5280 y 5339 enstán en el minuto: 89.0; Ej: 5300.0seg + 1 / 60 con ceil=89.0; con round=88
Valores entre 5340 y 5399 enstán en el minuto: 90.0; Ej: 5350.0seg + 1 / 60 con ceil=90.0; con round=89

Saludos. ;D

555
Buenas.

Aquí dejo otra posible solución al ejercicio del tema CU00905C del tutorial de programación orientada a objetos avanzada.

Citar
EJERCICIO

Crea un programa que pida por pantalla cuatro países y a continuación tres ciudades de cada uno de estos países. Los nombres de ciudades deben almacenarse en un array multidimensional cuyo primer índice sea el número asignado a cada país y el segundo índice el número asignado a cada ciudad.

Código: [Seleccionar]
import java.util.Scanner;

public class Ejercicio {

public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
String[][] paises = new String[4][4];

for(int i = 0, j = 0; i < paises.length; i++) {
System.out.print("Introduzca un país: ");
paises[i][j] = entrada.nextLine();
for(j = 1; j < paises[i].length; j++) {
System.out.print("Introduzca ciudad [" + j + "]: ");
paises[i][j] = entrada.nextLine();
}
j = 0;
}
entrada.close();
for(int i = 0, j = 0; i < paises.length; i++) {
System.out.print("Las ciudades de " + paises[i][j] + " introducidas son: ");
for(j = 1; j < paises[i].length; j++) {
if(j == (paises[i].length-1)) {
System.out.print(" y " + paises[i][j] + ".");
} else if(j == (paises[i].length-2)){
System.out.print( paises[i][j]);
} else {
System.out.print( paises[i][j] + ", ");
}
}
j = 0;
System.out.println();
}
}

}

Saludos. ;D

556
Hola Alanespartan.

Probé el código y si envía los correos.

Sobre  tu consulta, en este enlace explica como crear las tablas en una base de dos MySql, y sigues con ese mismo curso en los posteriores temas, explica como hacer consultas a esas tablas desde php.
https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=611:crear-tablas-mysql-con-phpmyadmin-tipos-de-datos-basicos-varchar-int-float-insertar-filas-cu00840b&catid=70:tutorial-basico-programador-web-php-desde-cero&Itemid=193

Saludos. ;D

557
Hola, aquí dejo una posible solución al ejercicio CU00904C del curso de programación avanzada en Java.

Citar
EJERCICIO

En España cada persona está identificada con un Documento Nacional de Identidad (DNI) en el que figura un número y una letra, por ejemplo 56999545W

La letra que sigue al número se calcula siguiendo la metodología que vamos a indicar. Crea un programa que calcule la letra de un DNI a partir del número de DNI que introduzca el usuario. Es decir, se debe pedir el DNI sin la letra por teclado y el programa nos devolverá el DNI completo (con la letra).

Para calcular la letra, se debe tomar el resto de dividir nuestro número de DNI entre 23. El resultado debe estar por tanto entre 0 y 22.

Crea un método obtenerLetra(int numeroDNI) donde según el resultado de la anterior fórmula busque en un array de caracteres la posición que corresponda a la letra. Esta es la tabla de caracteres:

Posición     0   1   2   3  4   5   6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22

Letra            T   R  W A  G  M  Y  F  P  D  X    B   N    J    Z    S   Q    V   H    L   C   K   E

Por ejemplo, si introducimos el  DNI 20267079, el resto de dividirlo por 23 sería 8, luego la letra sería la P, que es la que ocupa esa posicion  en la matriz de caracteres.

Clase DNI
Código: [Seleccionar]
public class DNI {

private static final char[] LETRA = {'T','R','W','A','G','M','Y','F','P','D','X','B','N','J','Z','S','Q','V','H','L','C','K','E'};

public DNI() {}

public char obtenerLetraDNI(int numDNI) {
return LETRA[numDNI%23];
}
}

Clase test

Código: [Seleccionar]
import java.util.Scanner;

public class Test{

public static void main(String[] args) {

Scanner entrada = new Scanner(System.in);
int numDNI;
DNI letra = new DNI();
System.out.print("Introduzca número del DNI: ");
numDNI = Integer.parseInt(entrada.nextLine());
System.out.println("\nEl DNI con letra es: " + numDNI + letra.obtenerLetraDNI(numDNI));
entrada.close();

}

}

Saludos. ;D

558
Bueno, ahora que tengo algo de tiempo empiezo con el curso de Java avanzado.

Citar
EJERCICIO 1

Crea un array numérico con 5 elementos. Los números de cada elemento deben ser valores pedidos por teclado al usuario. Muestra por consola el índice y el valor al que corresponde. Debes utiliza bucles tanto para pedir los valores de los elementos del array como para mostrar su contenido por pantalla.

Código: [Seleccionar]
import java.util.Scanner;

public class Ejercicio1 {

public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int[] numeros = new int[5];

for(int i = 0; i < 5; i++) {
System.out.print("\nIntroduzca un número entero: ");
numeros[i] = Integer.parseInt(entrada.nextLine());
}
System.out.println();
for(int i = 0; i < 5; i++) {
System.out.println("numeros[" + i + "] contiene el valor " + numeros[i]);
}
entrada.close();
}

}

Citar
EJERCICIO 2

Crea un programa en el que se pida por consola el nombre de 2 alumnos y la nota de cada uno de ellos como valor numérico. El resultado que debe mostrarse es el nombre de cada alumno, su nota y su calificacion como texto (Sobresaliente, Notable, Bien o Suspenso).

Para ello crea un array numérico y otro de String (ambos unidimensionales). En el array numérico se insertarán las calificaciones facilitadas por el usuario entre 0 y 10 (debemos controlar que inserte una nota valida), pudiendo ser decimal. En el array de Strings se insertarán los nombres de los alumnos.

Crea también un array de String donde insertaremos el resultado de la nota con palabras admitiéndose estos valores: Sobresaliente, Notable, Bien o Suspenso.

El programa debe comprobar la nota de cada alumno teniendo en cuenta esta equivalencia:

Si la nota está entre 0 y 4,99 será un Suspenso.

Si la nota está entre 5 y 6,99 será un Bien.

Si la nota está entre 7 y 8,99 será un Notable.

Si la nota está entre 9 y 10 será un Sobresaliente.

Código: [Seleccionar]
import java.util.Scanner;

public class Ejercicio2 {

public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);

System.out.print("Introduzca el número de alumnos: ");
int numAlumnos = Integer.parseInt(entrada.nextLine());

String[] nombres = new String[numAlumnos];
double[] notasN = new double[numAlumnos];
String[] notasS = new String[numAlumnos];

System.out.println();
for(int i = 0; i < nombres.length; i++) {
System.out.print("Introduzca el nombre del alumno: ");
nombres[i] = entrada.nextLine();
do{
System.out.print("\nIntroduzca la nota: ");
notasN[i] = Double.parseDouble(entrada.nextLine());
if(notasN[i] >= 0 && notasN[i] < 5){
notasS[i] = "Suspenso";
} else if(notasN[i] >= 5 && notasN[i] < 7) {
notasS[i] = "Bien";
} else if(notasN[i] >= 7 && notasN[i] < 9) {
notasS[i] = "Notable";
} else if(notasN[i] >= 9 && notasN[i] <= 10) {
notasS[i] = "Sobresaliente";
} else {
notasS[i] = "Nota erronea";
}
} while(notasN[i] < 0 || notasN[i] > 10);
}
entrada.close();
for(int i = 0; i < nombres.length; i++) {
System.out.println("La nota de " +  nombres[i] +  " es " + notasN[i] + ", " + notasS[i]);
}
}



}

Saludos ;D

559
Prueba este código. La diferencia entre scroll y fixed la apreciaras cuando hagas scroll sobre la ventana principal y no dentro de ninguno de los elementos que tienen la propiedad "background-attachment".

Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style>
    #cuadro{
        border:solid thin black;
        display:block;
        position: absolute;
        width:400px;
        height:250px;
        overflow:scroll;
        background-image:url('http://lorempixel.com/200/200');
        background-attachment:fixed;
        background-repeat:no-repeat;
    } 
    #cuadro1{
        border:solid thin black;
        display:block;
        position: absolute;
        width:400px;
        height:250px;
        top:275px;
        overflow:scroll;
        background-image:url('http://lorempixel.com/200/200');
        background-attachment:scroll;
        background-repeat:no-repeat;
    }
    #cuadro2{
        border:solid thin black;
        display:block;
        position: absolute;
        width:400px;
        height:500px;
        top:550px;
        overflow:scroll;
        background-image:url('http://lorempixel.com/200/200');
        background-attachment:local;
        background-repeat:no-repeat;
    }   
</style>
</head>
<body>
   
    <div id="cuadro"><h2>background-attachment:fixed</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad iste, nostrum corporis suscipit numquam perspiciatis explicabo nemo provident consequuntur, enim accusamus nobis perferendis. Cumque laboriosam incidunt tempora tenetur, atque laborum.</p><h1>fixed</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sed repudiandae vero facilis sequi maxime, laudantium optio. Sint exercitationem quos ex in, quaerat laudantium, mollitia labore, nisi voluptatum, suscipit ducimus fuga.</p><h1>fixed</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus delectus iusto, perferendis unde laboriosam, at tempora reprehenderit ullam tempore qui reiciendis hic excepturi, repellat placeat ea quos blanditiis! Pariatur, ipsa.</p><h1>fixed</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad iste, nostrum corporis suscipit numquam perspiciatis explicabo nemo provident consequuntur, enim accusamus nobis perferendis. Cumque laboriosam incidunt tempora tenetur, atque laborum.</p><h1>fixed</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sed repudiandae vero facilis sequi maxime, laudantium optio. Sint exercitationem quos ex in, quaerat laudantium, mollitia labore, nisi voluptatum, suscipit ducimus fuga.</p><h1>fixed</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus delectus iusto, perferendis unde laboriosam, at tempora reprehenderit ullam tempore qui reiciendis hic excepturi, repellat placeat ea quos blanditiis! Pariatur, ipsa.</p><h1>fixed</h1>
    </div>

    <div id="cuadro1"><h2>background-attachment:scroll</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad iste, nostrum corporis suscipit numquam perspiciatis explicabo nemo provident consequuntur, enim accusamus nobis perferendis. Cumque laboriosam incidunt tempora tenetur, atque laborum.</p><h1>scroll</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sed repudiandae vero facilis sequi maxime, laudantium optio. Sint exercitationem quos ex in, quaerat laudantium, mollitia labore, nisi voluptatum, suscipit ducimus fuga.</p><h1>scroll</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus delectus iusto, perferendis unde laboriosam, at tempora reprehenderit ullam tempore qui reiciendis hic excepturi, repellat placeat ea quos blanditiis! Pariatur, ipsa.</p><h1>scroll</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad iste, nostrum corporis suscipit numquam perspiciatis explicabo nemo provident consequuntur, enim accusamus nobis perferendis. Cumque laboriosam incidunt tempora tenetur, atque laborum.</p><h1>scroll</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sed repudiandae vero facilis sequi maxime, laudantium optio. Sint exercitationem quos ex in, quaerat laudantium, mollitia labore, nisi voluptatum, suscipit ducimus fuga.</p><h1>scroll</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus delectus iusto, perferendis unde laboriosam, at tempora reprehenderit ullam tempore qui reiciendis hic excepturi, repellat placeat ea quos blanditiis! Pariatur, ipsa.</p><h1>scroll</h1>
    </div>
    <div id="cuadro2"><h2>background-attachment:local</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad iste, nostrum corporis suscipit numquam perspiciatis explicabo nemo provident consequuntur, enim accusamus nobis perferendis. Cumque laboriosam incidunt tempora tenetur, atque laborum.</p><h1>local</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sed repudiandae vero facilis sequi maxime, laudantium optio. Sint exercitationem quos ex in, quaerat laudantium, mollitia labore, nisi voluptatum, suscipit ducimus fuga.</p><h1>local</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus delectus iusto, perferendis unde laboriosam, at tempora reprehenderit ullam tempore qui reiciendis hic excepturi, repellat placeat ea quos blanditiis! Pariatur, ipsa.</p><h1>local</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad iste, nostrum corporis suscipit numquam perspiciatis explicabo nemo provident consequuntur, enim accusamus nobis perferendis. Cumque laboriosam incidunt tempora tenetur, atque laborum.</p><h1>local</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sed repudiandae vero facilis sequi maxime, laudantium optio. Sint exercitationem quos ex in, quaerat laudantium, mollitia labore, nisi voluptatum, suscipit ducimus fuga.</p><h1>local</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus delectus iusto, perferendis unde laboriosam, at tempora reprehenderit ullam tempore qui reiciendis hic excepturi, repellat placeat ea quos blanditiis! Pariatur, ipsa.</p><h1>local</h1>
    </div>
</body>
</html>

Aquí podrás ver la explicación do lo que se consigue con cada parámetro.

https://developer.mozilla.org/en-US/docs/Web/CSS/background-attachment

560
El error, como dices es lógico al no coincidir los id.

Si prefieres usar el "onclick" directamente en el html, con que no uses el "window.onload" será suficiente.

El apartado 2 está completo.

Páginas: 1 ... 23 24 25 26 27 [28] 29 30 31 32 33 ... 65

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