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 ... 6 7 8 9 10 [11] 12 13 14 15 16 ... 76
201
Hola! Encuentro un problema en tu código. Si sumamos las personas nos sale:

12
23
45
21

101 personas

Sin embargo al ejecutar tu código me ha salido esto:

Citar
El total de personas que entraron en el banco en el día de hoy fueron 105 personas.

El total de horas que no entro ninguna persona en el banco fue de 2 hora\s

La hora 4, es la que tuvo el mayor número de personas con 45 personas.

El número medio de personas por hora que entraron en el banco fue de 17.

Aquí parece que hay un error. Intenta revisar el código y determinar dónde tienes el error.

Saludos!

202
Comunidad / Re:Hola me presento
« : 24 de Junio 2016, 21:41 »
Hola Fabián! Te daremos todas las manos que podamos  ;D Mírate los cursos disponibles en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=57&Itemid=86

Saludos!

204
Hola! Este ejercicio parece fácil pero a mí por lo menos recuerdo que cuando lo hice me costó bastante, no es tan sencillo como parece y de hecho mucha gente necesita de ayuda para poder sacarlo.

Saludos!

205
Hola! Lo veo todo bien; hay una línea que me ha llamado la atención:

printf("El n\xA3mero medio de personas por hora que entraron al banco fue %d\n", totalClientes/6);

Aquí parece que vas a imprimir un entero (%d), pero luego tienes totalClientes/6 que puede dar un valor decimal ¿Esto te funciona bien mostrándonte los resultados con decimales?

Saludos!

206
Hola Germán! Para poder ayudarte sube el código o alguna imagen donde podamos ver lo que ocurre. En este post tienes indicaciones sobre cómo subir imágenes o código: http://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Saludos!

207
Hola!

Con desarrollo para Android tienes que seguir la propia API de Android, puedes consultarla en https://developer.android.com/guide/topics/ui/drag-drop.html

Puedes guiarte por este ejemplo que te copio:

Partimos de 3 archivos xml para construir la vista, un layout principal “activity_drag.xml”, otro para definir un fondo, “shape.xml” y por último, otro para definir el fondo cuando arrastramos un elemento “shape_target.xml”.

Código de “activity_drag.xml”:

Código: [Seleccionar]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
 
    <LinearLayout
        android:id="@+id/left"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:orientation="vertical"
        android:background="@drawable/shape"
        >
 
        <ImageView
            android:id="@+id/imagen1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher" />
    </LinearLayout>
 
    <LinearLayout
        android:id="@+id/right"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:orientation="vertical"
        android:background="@drawable/shape" >
 
        <ImageView
            android:id="@+id/imagen2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher" />
    </LinearLayout>
</LinearLayout>

Este código es simple, tenemos dos LinearLayouts alineados horizontalmente con una imagen cada uno, en este caso la imagen por defecto del icono del app.

Si te fijas, los 2 layouts internos, en la propiedad background tienen un ‘@drawable/shape’, por lo que cogerá como fondo el fichero shape.xml, el cual se muestra aquí:

Código: [Seleccionar]
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
 
    <solid
        android:color="#0385B9"
        />
 
    <stroke
        android:width="2dp"
        android:color="#FFF" />
 
    <corners
        android:bottomLeftRadius="7dp"
        android:bottomRightRadius="7dp"
        android:topLeftRadius="7dp"
        android:topRightRadius="7dp" />
 
</shape>

Declaramos que la forma será un cuadrado, que tendrá color azul, un stroke de 2dp, que vendría a hacer las veces de un margen entre layouts, y por último, un borde redondeado.

Cabe destacar que puede haber otras maneras de definir nuestros fondos para un layout.

Por último, vamos a tener un “shape_target.xml” que se “activará” cuando agarremos una imagen para moverla, cuyo código es:

Código: [Seleccionar]
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
 
    <stroke
        android:width="2dp"
        android:color="#000" />
 
    <solid
        android:color="#FFF"
        />
 
    <corners
        android:bottomLeftRadius="7dp"
        android:bottomRightRadius="7dp"
        android:topLeftRadius="7dp"
        android:topRightRadius="7dp" />
 
</shape>

Lista la vista de nuestra app.

El código del manifest.xml, se podría decir que es el archivo donde irá la configuración de nuestra app:

Código: [Seleccionar]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.dragdrop"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="18" />
 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.dragdrop.DragActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>

Una de las cosas que más habría que tener en cuenta sería la versión mínima de nuestro sdk, en este ejemplo es la 16 debido a que algunas de las funciones utilizadas en el código están disponibles sólo a partir de esa versión.

Vamos al código Java:

Código: [Seleccionar]
package com.example.dragdrop;
import android.app.Activity;
import android.content.ClipData;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.DragEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.DragShadowBuilder;
import android.view.View.OnDragListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.LinearLayout;
 
public class DragActivity extends Activity {
 
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_drag);
    findViewById(R.id.imagen1).setOnTouchListener(new imgTouchListener());
    findViewById(R.id.imagen2).setOnTouchListener(new imgTouchListener());
    findViewById(R.id.left).setOnDragListener(new ContainerDragListener());
    findViewById(R.id.right).setOnDragListener(new ContainerDragListener());
  }
 
  private class imgTouchListener implements OnTouchListener {
    public boolean onTouch(View view, MotionEvent motionEvent) {
 
    /*ACTION_DOWN -> A pressed gesture has started, the motion contains the initial position*/
      if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
        ClipData data = ClipData.newPlainText("", "");
        /*Creates an image that the system displays during the drag and drop operation. This is called a "drag shadow".*/
        DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
        view.startDrag(data, shadowBuilder, view, 0);
        /*while the img is moving, the view is invisible, if we comment this line, the view 'will move' when we drop it*/
        view.setVisibility(View.INVISIBLE);
        return true;
      } else {
        return false;
      }
    }
  }
 
 private class ContainerDragListener implements OnDragListener {
    Drawable enterShape = getResources().getDrawable(R.drawable.shape_droptarget);
    Drawable normalShape = getResources().getDrawable(R.drawable.shape);
 
    @Override
    public boolean onDrag(View v, DragEvent event) {
      int action = event.getAction();
      switch (event.getAction()) {
      case DragEvent.ACTION_DRAG_STARTED:
        // do nothing
        break;
      case DragEvent.ACTION_DRAG_ENTERED:
      /*change de background*/
      v.setBackground(enterShape);
        break;
      case DragEvent.ACTION_DRAG_EXITED:
        v.setBackground(normalShape);
        break;
      case DragEvent.ACTION_DROP:
        // Dropped, reassign View to ViewGroup
        View view = (View) event.getLocalState();
        LinearLayout oldContainer = (LinearLayout) view.getParent();
        oldContainer.removeView(view);
        LinearLayout newContainer = (LinearLayout) v;
        newContainer.addView(view);
        view.setVisibility(View.VISIBLE);
        break;
      case DragEvent.ACTION_DRAG_ENDED:
        v.setBackground(normalShape);
      default:
        break;
      }
      return true;
    }
  }
}

El método ‘onCreate’ es llamado al crear la app, en él obtenemos los layouts y les añadimos un evento ‘onDragListener’, y obtenemos las imagenes, a las cuales les añadimos el evento ‘onTouchListener’.

A continuación tenemos la clase imgTouchListener, de la cual se creará una instancia para el evento añadido a la imagen, en ella, simplemente ‘escuchamos’ que la acción llevada a cabo es la de ‘pulsar’ la imagen, en ese caso llevamos a cabo el proceso de cambio de layout.

Por otra parte, la clase ‘ContainerDragListener’ es la encargada de cambiar el fondo de los layouts cuando arrastramos la imagen, en esta clase, el evento más importante sería ‘ACTION_DROP’, que se produce cuando soltamos la imagen en el nuevo layout, cuando se produzca ese evento, lo que haremos será eliminar la imagen (view) del antiguo layout y añadirla al nuevo.

Saludos!

208
Hola!

La propiedad sorted en los listbox sirve para ordenar alfabéticamente Strings, es decir, cadenas de texto.

Al ordenar como si fuera un texto lo que hace es buscar el carácter más bajo, y según ese ordena. Por ejemplo 13 lo pondría antes que 5 porque lo que mira primero es el primer carácter (primera letra) y como 1 es más pequeño que 5 pues coloca 13 antes que 5, sólo porque los trata como si fueran texto.

Si lo que quieres es ordenar números puedes basarte en este código:

Código: [Seleccionar]
Private Shared Sub SortIntegerListBox(ByVal listBox As ListBox)
    Dim TempList As New List(Of Integer)
    For Each LI In listBox.Items
        TempList.Add(Integer.Parse(LI.ToString()))
    Next
    TempList.Sort()
    listBox.DataSource = TempList
End Sub

Un ejemplo de cómo se podría usar el código:

Código: [Seleccionar]
    Dim Items As New List(Of Integer)
    Items.Add(1)
    Items.Add(13)
    Items.Add(2)

    Me.ListBox1.DataSource = Items
    SortIntegerListBox(Me.ListBox1)

Saludos!

209
Hola! ¿Puedes explicar en qué consiste el juego? Hablas de movimientos y de que todas las celdas estén vacías ¿no puedes llamar a una función que compruebe en cada movimiento si se alcanza el estado de "todas las celdas están vacías"?

212
Hola! Como bien has visto, se trata simplemente de decidir dónde tienes la información dependiendo de si los datos van a cambiar dinámicamente o no. Si por ejemplo debe haber cambios según lo que vaya haciendo el usuario o no, etc. Siempre hay que pensar qué puede ser preferible, unas veces será preferible usar JavaScript y otras Ajax u otras herramientas.

Saludos!

213
Hola!

Supongo que Pedro igual no ha visto tu respuesta.

Sí, el ejercicio iba enfocado a eso que has hecho. Lo único que te diría es que mejores la presentación, por ejemplo añadirle bordes y márgenes a la tabla para que se vea mejor.

Veo aquí una cosa rara en xmlhttp.open("GET"," CU01207F(01).php?pais="+str);

¿Por qué hay un espacio en blanco antes del nombre del archivo CU01207F(01).php?

Saludos!

216
Hola! Lo único que me ha chocado es for (i = 0; i <= 5; i++) ya que establece un límite exacto de lo que recorres con el bucle, pero creo que en esta entrega del curso todavía no se ha explicado EOF.  Cuando se entregue eso se verá una forma de extraer un número indefinido de elementos de un fichero.

Saludos!

218
Hola Eusebio, ¿tú sabes el intervalo solución o tiene que calcularlo el programa?

Saludos!

219
Hola, para que te devuelva solo x unidades usarías limit

select u.nick, prov.nombre, post.fechaPost, post.titulo, post.comentario, img.ruta
from usuario AS u, post AS post, provincias AS prov, imagenes AS img 
order by post.fechaPost
LIMIT 1


Si lo que quieres es obtener muchos registros donde solo obtengas el primer registro de una relación uno a muchos puedes guiarte por el siguiente ejemplo (la verdad es que no es muy sencillo pero con un poco de tiempo se hace):

Base de datos de ejemplo:

Código: [Seleccionar]
<!--- SQL to create and populate the data tables. --->
<cfsavecontent variable="strSQL">
<!--- Create table for contact data. --->
DECLARE @contact TABLE (
id INT IDENTITY( 1, 1 ),
name VARCHAR( 20 )
);

<!---
Create table for phone data (each phone number will be
associated with exactly one contact).
--->
DECLARE @phone TABLE (
id INT IDENTITY( 1, 1 ),
name VARCHAR( 20 ),
ext VARCHAR( 7 ),
is_preferred BIT,
contact_id INT
);



<!--- Populate the contact data. --->
INSERT INTO @contact
(
name
)(
SELECT 'Ben Nadel' UNION ALL
SELECT 'Maria Bello' UNION ALL
SELECT 'Jodie Foster' UNION ALL
SELECT 'Christina Cox'
);


<!--- Populate the phone data. --->
INSERT INTO @phone
(
name,
ext,
is_preferred,
contact_id
)(
<!--- Ben's numbers. --->
SELECT '212-555-BEN1', '', 1, 1 UNION ALL
SELECT '212-555-BEN2', '123', 0, 1 UNION ALL
SELECT '212-555-BEN3', '', 0, 1 UNION ALL

<!--- Maria's phone numbers. --->
SELECT '917-555-MAR1', '', 0, 2 UNION ALL
SELECT '917-555-MAR2', '', 0, 2 UNION ALL
SELECT '917-555-MAR3', '', 0, 2 UNION ALL

<!--- Christina's phone numbers. --->
SELECT '202-555-CHR1', '', 0, 4 UNION ALL
SELECT '202-555-CHR2', '15', 1, 4
);
</cfsavecontent>

Join standard:

Código: [Seleccionar]
<!--- Query for contacts and their phone numbers. --->
<cfquery name="qContact" datasource="#REQUEST.DSN.Source#">
    <!--- Create the SQL data tables and populate. --->
    #PreserveSingleQuotes( strSQL )#
    <!--- Select contacts as their numbers. --->
    SELECT
        c.name,
        <!--- Phone data. --->
        ( p.name ) AS phone_number,
        ( p.ext ) AS phone_ext,
        (
            ISNULL(
                p.is_preferred,
                0
            )
        ) AS is_preferred
    FROM
        @contact c
    LEFT OUTER JOIN
        @phone p
    ON
        c.id = p.contact_id
    ORDER BY
        c.name ASC
</cfquery>


<!--- Dump out contacts and their phone numbers. --->
<cfdump
    var="#qContact#"
    label="Contact Phone Numbers"
/>

Seleccionar el primero de los registros cuando hay varios:

Código: [Seleccionar]
SELECT TOP 1
    p.id,
    p.name,
    p.ext,
    p.is_preferred
FROM
    @phone p
WHERE
    p.contact_id = 1
ORDER BY
    p.is_preferred DESC,
p.id ASC

Consulta para obtener solo uno de los números de teléfono (el preferido):

Código: [Seleccionar]
<!--- Query for contacts and their phone numbers. --->
<cfquery name="qContact" datasource="#REQUEST.DSN.Source#">
    <!--- Create the SQL data tables and populate. --->
    #PreserveSingleQuotes( strSQL )#
    <!--- Select contacts as their numbers. --->
    SELECT
        c.name,
        <!--- Phone data. --->
        ( p.name ) AS phone_number,
        ( p.ext ) AS phone_ext,
        (
            ISNULL(
                p.is_preferred,
                0
            )
        ) AS is_preferred
    FROM
        @contact c
    LEFT OUTER JOIN
        @phone p
    ON
        (
                c.id = p.contact_id
            AND
                <!---
                    As part of the JOIN condition, make sure
                    that this ID of the phone record we return
                    is equal to the *most* preferred one for
                    that user.
                --->
                p.id = ISNULL(
                    (
                        SELECT TOP 1
                            p2.id
                        FROM
                            @phone p2
                        WHERE
                            <!--- Tie to current user record. --->
                            p2.contact_id = c.id
                        ORDER BY
                            p2.is_preferred DESC,
                            p2.id ASC
                    ),
                    0
                )
        )
    ORDER BY
        c.name ASC
</cfquery>


<!--- Show contact with max of ONLY one phone number. --->
<cfdump
    var="#qContact#"
    label="Contact Phone Numbers (Max: 1)"
/>

Con esto obtenemos solo un número de teléfono cuando el contacto tiene varios números de teléfono

Saludos!


220
Hola simchgab! Solo comentar que es preferible que los ejercicios de una entrega estén en un mismo hilo del foro para facilitar su localización. Por ello los uno en un mismo hilo. Saludos!

Páginas: 1 ... 6 7 8 9 10 [11] 12 13 14 15 16 ... 76
Esto es un laboratorio de ideas...
Aprender a programar

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