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 ... 3 4 5 6 7 [8] 9 10 11 12 13 ... 68
141
Hola! Todo bien, una cosa interesante sería ver: ¿si le pasamos como números a la función del apartado d) 87, 87, 45 ¿Qué resultado obtendríamos? ¿Sería lo deseable? Y si no es lo deseable, ¿cómo podríamos modificarlo para que nos devuelva 87?

Saludos!

142
Hola!

Una cosa interesante: ++i a veces tiene el mismo efecto que i++, pero otras veces no.

Básicamente la cuestión a tener en cuenta es qué se hace primero cuando se trata de asignaciones:

i++ --> primero asigno, luego incremento.
++i -->primero incremento, luego asigno.

Ejemplo:

i=0;
a=i++;
Resultado a=0, i=1

i=0;
a=++i;
Resultado a=1, i=1


Saludos!

144
Hola!

La única cosa que veo a comentar es la pregunta ¿Es legal escribir un if sin los corchetes { … }?

Considerar algo legal o no legal viene dado básicamente por la especificación oficial del lenguaje, es decir, los criterios que definieron los creadores del lenguaje. Y también por el comportamiento del compilador, es decir, si el compilador acepta o no una expresión.

Puede ocurrir que el compilador acepte algo y no sea legal. O puede ocurrir que algo supuestamente legal según la especificación del lenguaje no sea aceptado por un determinado compilador.

En C sí es legal escribir un if sin los corchetes. Es decir, es algo que los creadores del lenguaje especificaron que sí era posible, y es admitido por los compiladores. Lo que sí solemos decir es que no es recomendable usar if sin los corchetes, porque así evitamos confusiones. Cuando se usa un if sin corchetes es como si existiera un corchete únicamente para la siguiente instrucción después del if.

Esto se comenta en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=925:if-then-else-en-c-estructura-condicional-decision-o-bifurcacion-sintaxis-ejemplos-and-or-igual-que-cu00529f&catid=82:curso-basico-programacion-lenguaje-c-desde-cero&Itemid=210

Saludos!

145
Hola!

Todo bien, te has despistado en Elige un país: ya que estás trabajando con libros no con países  :)

Saludos!

146
Hola!

Yo he probado a ejecutar el código y a mí me funciona bien. El archivo miTexto.txt tiene que estar en la misma ruta que el archivo main.c del proyecto.

Una precaución que debes tener es que la ruta no sea directamente en C: porque en muchos equipos hay restricciones de escritura directa en ese directorio. Prueba a ponerlo en una ruta correspondiente a tu usuario a ver si así te deja ejecutarlo.

Saludos!

147
Hola!

Crear código es la forma "normal" de crear apps. No obstante, hay programas o aplicaciones web que te permiten crear apps sin tener que escribir código como Appy Pie, Native, Kinetise, Andromo App Maker y muchas otras. Tendrías que ver si te interesa alguna opción de estas. En general las posibilidades que te ofrecen son restringidas, pero si no quieres meterte con programación puedes ver si te va bien alguna de ellas.

Saludos!

148
Sí, se ve que si pones 6 te hace la transformación a entero y para que trabaje con decimales necesita que se especifique 6.0

¡Esto son detalles de los lenguajes! En otros lenguajes a lo mejor no ocurre lo mismo

Saludos!

149
Sí, plantear los problemas sobre papel es algo que suele ser útil, sobre todo cuando no se trata de cosas sencillas

Saludos!

150
Hola cigarzonl! En todos los ejercicios del curso debes incluir los getters y los setters para los atributos de clase que tengas

Saludos!

151
Hola! Es importante seguir las indicaciones de https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

- Incluir código

También es importante que digas con qué lenguaje de programación estás trabajando

Saludos!

152
Hola! Las clases deben incluir los métodos getters y setters para todos los atributos. Para tener una referencia ver este hilo: https://www.aprenderaprogramar.com/foros/index.php?topic=1220.0

Saludos!

153
Hola! Para poder ayudarte incluye tu código, ver lo que se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Para utilizar el tipo de dato definido en otro fichero tienes que cargar ese fichero desde el programa principal. Puedes ver un ejemplo en https://www.aprenderaprogramar.com/foros/index.php?topic=401.msg2505#msg2505

Saludos!

154
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!

156
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!

157
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!

158
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: https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Saludos!

159
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!

160
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!

Páginas: 1 ... 3 4 5 6 7 [8] 9 10 11 12 13 ... 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".