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 ... 17 18 19 20 21 [22] 23 24 25 26 27 ... 100
421
Buenas PatAs, ten en cuenta que la entrega es sobre arrays unidimensionales, he corregido el título porque habías puesto unidimensionables :)

Ejercicio 1 correcto

Ejercicio 2 correcto

La observación //Se condiciona i<2 porque el ejercicio indica arrays de 2 elementos. Lo correcto es condicionar con (nombre_del_array.length) es adecuada, en realidad podrías haber declarado una variable numeroDeAlumnos = 2 y eso usarlo como índice, de ese modo podrías variar el funcionamiento del programa para que funcione con el número de alumnos que definieras en esa línea, sin tener que cambiar otras cosas.

Otra observación: yo hubiera puesto los nombres de los arrays en singular, es decir en lugar de

String[] alumnos = new String[2];
double[] notas = new double[2];

String[] alumno = new String[2];
double[] nota = new double[2];

Así podrías decir nota[1] vale 5.77 en lugar de notas[1] vale 5.77 Esto no tiene importancia pero es en general bueno usar nombres en singular cuando sea posible

Salu2

422
Buenas, los apartados a) y b) están correctos

En el apartado c) habría alguna cuestión a comentar

Supongamos que la cadena tiene longitud 3 (impar)

Al ejecutar $cad3min,$cad3size+($cad3size+1)/2 tendríamos 3+4/2 = 3+2 = 5 asteriscos que se reparten 2 a un lado y 3 a otro.

Para rellenar con 3 y 3 asteriscos podríamos usar

echo str_pad($cad3min,$cad3size+1+($cad3size+1)/2,'*',STR_PAD_BOTH).'<br/>';

Con esto realmente a cada lado de la cadena se muestra la mitad de la mitad de los asteriscos.

Para mostrar a cada lado la mitad de los asteriscos (la mitad de la longitud de la palabra) podríamos usar este código:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
    <head>
        <title>Ejercicio tema CU00829B aprenderaprogramar.com</title>
        <meta charset="utf-8">
       
    </head>
    <body>
   
    <?php
    echo '<h4>Ejercicio a)<h4/>';
    $cadena1='aprender';
$cadena2='aprende';
echo 'La cadena 1 es '.$cadena1.'<br/>';
echo 'La cadena 2 es '.$cadena2.'<br/>';
echo '<p>'.str_pad($cadena1, (strlen($cadena1)+10) , "*"STR_PAD_BOTH).'</p>';
    echo '<p>'.str_pad($cadena2, (strlen($cadena2)+10) , "*"STR_PAD_BOTH).'</p>';
echo '<hr>';
echo '<h4>Ejercicio b)<h4/>';
echo 'Comparación de los tres primeros caracteres de las dos cadenas<br/>';
if (strncmp($cadena1$cadena2,3) == 0) {
        echo 'Según strncmp las dos cadenas son iguales';
        }else {
        echo 'Según strncmp las dos cadenas NO son iguales'
        }
echo '<hr>';
echo '<h4>Ejercicio c)<h4/>';
$cadena3='ApRendEr A proGraMar.cOma';
echo 'La cadena 3 es '.$cadena3.'<br/>';
$cad3min=strtolower($cadena3);//A minúsculas
$cad3size=strlen($cad3min);//Tamaño de la cadena
echo 'La cadena 3 tiene longitud '.$cad3size.'<br/>';
if($cad3size%2==0){
echo str_pad($cad3min,2*$cad3size,'*',STR_PAD_BOTH).'<br/>';
}else{
echo str_pad($cad3min,2*$cad3size+1,'*',STR_PAD_BOTH).'<br/>'
}
echo '<hr>';
?>

   
    </body>
</html>

Salu2

423
Buenas, el ejercicio es correcto, buen código.

Para quien quiera ver otra forma de solucionarlo, puede consultar https://www.aprenderaprogramar.com/foros/index.php?topic=4135.0

Salu2

424
Hola duende_mza. Creo que habría distintas maneras de hacerlo (requiere tener conocimientos de html, php, javascript, ajax, etc.).

Por lo que entiendo quieres que los datos del formulario se envíen por correo electrónico, y que el formulario se limpie o quede en blanco para poder volver a rellenarlo y volver a enviarlo si se desea.

Opción con Ajax: usarías Ajax para que una vez se pulse el botón de enviar, se invoque la ejecución de una función php que te devuelva un valor p.ej. true si se ha enviado el correo electrónico ó false en caso contrario. Si obtienes true, limpiarías los datos del formulario usando JavaScript, y si quieres puedes mostrar un aviso indicando que se ha enviado. Curso de Ajax: https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=83&Itemid=212

Opción con php: tendrías un action a la propia página del formulario. En esa página, a través de un condicional, tendrías que detectar si recibes datos o no. En caso de recibirlos, invocarías la función para envío del correo electrónico, o en caso de no recibirlos no la invocarías. Curso de PHP: https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

El envío del mail tendrías que hacerlo con la función mail de php https://www.aprenderaprogramar.com/foros/index.php?topic=5411.0

Esto sería una idea aproximada aunque seguramente hay más formas de plantearlo

Salu2

425
Buenas, ejercicio bien resuelto

Aclarar para quien tenga dificultades con una expresión como esta:

echo $nalumnos[$b][$a].($nalumnos[$b][$a]==1?' alumno':' alumnos').' en '.$a.',<br/>';

Que lo que se consigue aquí es que si el valor $nalumnos[$b][$a] es 1, se muestre "alumno" en singular, mientras que si es distinto de 1 se mostrará "alumnos" en plural. Este operador condicional se explica en la entrega CU00817B del curso.

Salu2

426
Buenas Pepote21, enhorabuena por el trabajo. Yo seguiré revisando ejercicios que puedan estar pendientes de revisar, y dando orientación para su corrección de cara a que se pueda corregir si se desea, o para que quien lea los posts en los foros se pueda orientar sobre la validez del ejercicio.

Como sabes, agradecemos a todas las personas que terminen cursos y que puedan, que nos ayuden a responder en los foros a otros usuarios que estén realizando los cursos. Si te es posible, te agradeceremos que lo hagas, aportando así un granito de arena para mantener los foros y que otras personas cuenten también con ayuda. También es una forma de continuar el aprendizaje, pues revisar código hace que ganemos destreza.

Salu2

427
Buenas paramonso, el ejercicio cumple con lo que se pedía, buen código. A su vez, la enhorabuena por concluir el curso. Te animo a que participes en los foros respondiendo a otros usuarios. Así nos ayudas al mantenimiento de los foros, y a su vez revisar código hecho por otras personas siempre es bueno para coger soltura y ver distintos enfoques en la programación.

Salu2

428
Buenas Pepote21, el ejercicio cumple con lo que se pedía.

Salu2

429
Buenas paramonso, el ejercicio cumple con lo que pedía el ejercicio.

Hay una línea a la que no le veo mucho sentido, la línea es:

$result = mysqli_query($link, "SELECT * FROM Agenda");

Realmente no parece que sea necesario hacer esa consulta, a no ser que vayas a usarla para algo concreto como pueda ser mostrar los contenidos de lo que tienes en la base de datos como se hace en este otro hilo: https://www.aprenderaprogramar.com/foros/index.php?topic=6157.0

Salu2

430
Buenas Pepote21, todo correcto. En el apartado b) se pedía la versión de filezilla y los datos del sistema operativo, y has indicado correctamente ambos. Salu2.

432
Buenas EnigmaticNerd, efectivamente el uso de for en un label tiene por finalidad asociarlo al id de un elemento de un formulario, por ejemplo

Código: [Seleccionar]
<!-- Un simple ejemplo de un label con el atributo for -->
<label for="Name">Click me</label>
<input type="text" id="Name" name="Name" />

<!-- Aun mas simple -->
<label>Click me <input type="text" id="Name" name="Name" /></label>

No obstante el navegador no te obliga a hacer las cosas así. El navegador muchas veces es capaz de mostrar contenidos estén las cosas hechas de una forma o de otra (incluso a veces estando mal hechas).

Para este ejercicio esa no es una cuestión que resulte relevante, por lo que no hay por qué prestarle atención a eso ahora.

Si sigues el curso de CSS, verás que los id pueden tener gran importancia en determinadas situaciones.

Salu2

433
Buenas paramonso, para facilitar la lectura a las personas que accedan a los foros por favor ten en cuenta lo siguiente:

a) Pega el código una sola vez, completo. Por ejemplo si tú has resuelto el ejercicio en un solo archivo PHP, pega el código completo de dicho archivo una sola vez. No pegues primero la parte del ejercicio 1, luego la parte del ejercicio 2, y luego todo el código unido, ya que así estás repitiendo el código y esto puede confundir. Si para resolver los ejercicios lo has hecho en dos archivos php, pues pega primero el código completo de un archivo, y luego el código completo del siguiente archivo. Es decir, pega siempre los códigos completos tal y como tú los hayas trabajado.

b) Para referirte a los ejercicios es más simple que lo hagas como por ejemplo << Entrega del ejercicio CU00831B del curso básico de programación web con PHP >> en lugar de << Ejercicio PHP 31 (CU00831B) >>. Indicando simplemente el código es más claro.

c) Revisa los textos que pegas evitando que los párrafos queden cortados por saltos de línea o cosas así. Deja espacios (saltos de línea) entre párrafos y entre ejercicios para que quienes vayan a leer o revisar lo que has propuesto lo tengan más fácil. Evita que los textos parezcan apelotonados o apretados.

Gracias! Salu2

434
Buenas Loperso, para plantear consultas en los foros debes seguir las indicaciones que se dan en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 y no plantear consultas demasiado extensas. También debes incluir el código con el que estés trabajando e indicar el punto donde encuentras dificultades para continuar.

Te dejo un ejemplo de uso de JRadioButton en JTable por si te sirve de ayuda

Código: [Seleccionar]
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.ArrayList;
import java.util.List;

import javax.swing.AbstractCellEditor;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;

public class TestTable {

    public class RadioButtonCellEditorRenderer extends AbstractCellEditor implements TableCellRenderer, TableCellEditor, ActionListener {

        private JRadioButton radioButton;

        public RadioButtonCellEditorRenderer() {
            this.radioButton = new JRadioButton();
            radioButton.addActionListener(this);
            radioButton.setOpaque(false);
        }

        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            radioButton.setSelected(Boolean.TRUE.equals(value));
            return radioButton;
        }

        @Override
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
            radioButton.setSelected(Boolean.TRUE.equals(value));
            return radioButton;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            stopCellEditing();
        }

        @Override
        public Object getCellEditorValue() {
            return radioButton.isSelected();
        }

    }

    private JFrame f;
    private JTable table;

    private class MyObjectManager {
        private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
        private List<MyObject> objects = new ArrayList<TestTable.MyObject>();

        public void addObject(MyObject object) {
            objects.add(object);
            object.setManager(this);
            propertyChangeSupport.firePropertyChange("objects", null, object);
        }

        public List<MyObject> getObjects() {
            return objects;
        }

        public void setAsSelected(MyObject myObject) {
            for (MyObject o : objects) {
                o.setSelected(myObject == o);
            }
        }
    }

    private class MyObject {
        private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);

        private MyObjectManager manager;

        private String value;

        private boolean selected;

        public MyObject(String value) {
            this.value = value;
        }

        public PropertyChangeSupport getPropertyChangeSupport() {
            return propertyChangeSupport;
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
            propertyChangeSupport.firePropertyChange("value", null, value);
        }

        public MyObjectManager getManager() {
            return manager;
        }

        public void setManager(MyObjectManager manager) {
            this.manager = manager;
            propertyChangeSupport.firePropertyChange("manager", null, manager);
        }

        public boolean isSelected() {
            return selected;
        }

        public void setSelected(boolean selected) {
            if (this.selected != selected) {
                this.selected = selected;
                if (selected) {
                    manager.setAsSelected(this);
                }
                propertyChangeSupport.firePropertyChange("selected", !selected, selected);
            }
        }

    }

    protected void initUI() {
        MyObjectManager manager = new MyObjectManager();
        for (int i = 0; i < 200; i++) {
            MyObject object = new MyObject("Row " + (i + 1));
            manager.addObject(object);
        }
        table = new JTable(new MyTableModel(manager));
        table.setRowHeight(20);
        TableColumn column = table.getColumnModel().getColumn(1);
        column.setCellEditor(new RadioButtonCellEditorRenderer());
        column.setCellRenderer(new RadioButtonCellEditorRenderer());
        f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(new JScrollPane(table), BorderLayout.CENTER);
        f.pack();
        f.setVisible(true);

    }

    public class MyTableModel extends AbstractTableModel implements PropertyChangeListener {

        private final MyObjectManager manager;

        public MyTableModel(MyObjectManager manager) {
            super();
            this.manager = manager;
            manager.propertyChangeSupport.addPropertyChangeListener(this);
            for (MyObject object : manager.getObjects()) {
                object.getPropertyChangeSupport().addPropertyChangeListener(this);
            }
        }

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            if (evt.getSource() == manager) {
                // OK, not the cleanest thing, just to get the gist of it.
                if (evt.getPropertyName().equals("objects")) {
                    ((MyObject) evt.getNewValue()).getPropertyChangeSupport().addPropertyChangeListener(this);
                }
                fireTableDataChanged();
            } else if (evt.getSource() instanceof MyObject) {
                int index = manager.getObjects().indexOf(evt.getSource());
                fireTableRowsUpdated(index, index);
            }
        }

        @Override
        public int getColumnCount() {
            return 2;
        }

        @Override
        public int getRowCount() {
            return manager.getObjects().size();
        }

        public MyObject getValueAt(int row) {
            return manager.getObjects().get(row);
        }

        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
            switch (columnIndex) {
            case 0:
                return getValueAt(rowIndex).getValue();
            case 1:
                return getValueAt(rowIndex).isSelected();
            }
            return null;
        }

        @Override
        public void setValueAt(Object value, int rowIndex, int columnIndex) {
            if (columnIndex == 1) {
                getValueAt(rowIndex).setSelected(Boolean.TRUE.equals(value));
            }
        }

        @Override
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return columnIndex == 1;
        }

        @Override
        public Class<?> getColumnClass(int column) {
            switch (column) {
            case 0:
                return String.class;
            case 1:
                return Boolean.class;
            }
            return Object.class;
        }

        @Override
        public String getColumnName(int column) {
            switch (column) {
            case 0:
                return "Value";
            case 1:
                return "Selected";
            }
            return null;
        }

    }

    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException,
            UnsupportedLookAndFeelException {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new TestTable().initUI();
            }
        });
    }

}

Salu2

435
Buenas paramonso

Como se ha comentado, es preferible no incluir links a los ejercicios si se prevé borrarlos, porque con el tiempo al intentar acceder no funcionan

Tus ejercicios 1 y 2 están correctos

El ejercicio 3 deberías revisarlo

$equipo[0][0][0]='España1';
$equipo[1][0][0]='España2';

No es el planteamiento correcto para este ejercicio. Revisa este hilo https://www.aprenderaprogramar.com/foros/index.php?topic=1350.0 y fíjate cómo se interpretan los índices. También puedes revisar más hilos de este ejercicio en el foro introduciendo el código del ejercicio en el buscador

Salu2

436
Buenas, lo que indicas parece que sería realizable mediante arrays de controles

En este curso tienes ejemplos de código: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61

En concreto en la entrega Matrices o arrays de controles (arreglos) en Visual Basic y VB.NET. Concepto y ejemplo de código (CU00320A) hay ejemplos de esto

El código que puedes utilizar será de tipo LabelArray(i).Text = "Dato " & i como se pone en los ejemplos, aunque tendrás que adaptarlo específicamente a lo que quieras hacer

Salu2

437
Ok, de cualquier forma ten en cuenta que si vas a borrar los archivos, es preferible que no incluyas esos links en tus respuestas (con incluir el código es suficiente). El motivo es que si pasado un tiempo alguien consulta tu respuesta, si los archivos están borrados no podrá verlos, y quedará como un link roto. Salu2

438

También te recomiendo que simplifiques el código: este curso se centra en php, por tanto no es necesario ni conveniente introducir elementos adicionales de HTML, CSS, JavaScript, etc. excepto los que específicamente te requiera el enunciado del ejercicio.

Como tú mismo te has autocorregido, no era necesario abrir con <?php y cerrar con ?> en cada línea, sino que puedes hacerlo una única vez para cada bloque de código php que quieras insertar.

El código que has planteado lo veo correcto, resuelve lo que pedía el ejercicio. Los links que has dejado no me funcionan, supongo que quizás has borrado esos archivos.

Salu2

439
Buenas, sí se puede operar sobre un fichero excel usando Visual Basic

Este sería un ejemplo tomado de un curso de aprenderaprogramar

Para hacer posible operar con ficheros de Excel vete al menú Proyecto -- > Agregar referencia -- > Elige la ficha COM (componente) -- > Selecciona Microsoft Excel 12.0 Object Library (o un nombre similar) y pulsa aceptar.

Crea un fichero Excel con el siguiente contenido:

Celda A1: Sala del museo   Celda B1: Visitas
Celda A2: Van Gogh      Celda B2: 32
Celda A3: Picasso      Celda B3: 24
Celda A4: Monet         Celda B4: 55
Celda A5: Miró         Celda B5: 44

Guarda y cierra este archivo en una ruta de tu ordenador y anota la ruta porque te va a ser necesaria

Ahora en Visual Basic crea un nuevo proyecto con un formulario y coloca en el formulario un label amplio y un botón.

Escribe el siguiente código (reemplaza la ruta del fichero excel por la ruta donde tú hayas guardado el fichero):

Código: [Seleccionar]
Imports Excel = Microsoft.Office.Interop.Excel

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Label1.Text = ""
        Label1.AutoSize = False
    End Sub
   
    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim objXLApp As Excel.Application
        Dim intLoopCounter As Integer
        Dim objXLWb As Excel.Workbook
        Dim objXLWs As Excel.Worksheet
        Dim objRange As Excel.Range

        objXLApp = New Excel.Application
        objXLApp.Workbooks.Open("C:\Users\Juan\CursoVB\semana6\ejemploSemana6.xlsx")
        objXLWb = objXLApp.Workbooks(1)
        objXLWs = objXLWb.Worksheets(1)
        MsgBox("Ahora la celda A5 contiene: " & objXLWs.Cells(5, 1).value)
        For intLoopCounter = 1 To CInt(objXLWs.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row)
            objRange = objXLWs.Range("A" & intLoopCounter)
            Label1.Text = Label1.Text & vbCrLf & objRange.Value
            objRange = objXLWs.Range("B" & intLoopCounter)
            Label1.Text = Label1.Text & " -- > " & objRange.Value
        Next intLoopCounter

        'Escribimos en el fichero
        objXLWs.Cells(5, 1) = "Rembrandt"
        MsgBox("Ahora la celda A5 contiene: " & objXLWs.Cells(5, 1).value)
        objXLApp.Quit()
    End Sub

End Class

Ejecuta el programa. El resultado esperado es que muestre una caja de alerta indicando: “Ahora la celda B2 contiene Miró” y seguidamente que muestre “Ahora la celda B2 contiene Rembrandt” (si te pregunta si quieres guardar los cambios en el fichero excel responde Sí). En el label se debe mostrar la información que existía inicialmente en el fichero. Comprueba que ahora en el fichero en lugar de Miró figura Rembrandt.

Salu2

440
Buenas Pepote21, todo correcto

Recomendar que no se dejen etiquetas vacías como

        <style type="text/css">
           
        </style>

Salu2

Páginas: 1 ... 17 18 19 20 21 [22] 23 24 25 26 27 ... 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".