• Sábado 15 de Marzo de 2025, 11:08

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 - ProfesorX

Páginas: 1 ... 16 17 [18] 19 20 ... 32
426
C# / Re: Realizar una busqueda en Base de datos
« en: Domingo 3 de Enero de 2010, 05:06 »
Utiliza como consulta:

Código: SQL
  1.  
  2. SELECT nombre_campo FROM tabla WHERE condicion;
  3.  
  4.  

Y añade codigo para que cuando oprimas el boton buscar, se ejecute la consulta.

Busca sobre consultas con parametros en ADO.net para mas informacion sobre como puedes definir tu consulta.

427
C# / Re: Necesito saber estos comandos
« en: Sábado 2 de Enero de 2010, 23:06 »
Consejo, utiliza las etiquetas [ code][ /code], para que se pueda leer mejor tu codigo

Cita de: "d4rwins"
y quiero hacer que una vez te de el resultado Vuelva al principio


Para que te regrese al principio, o sea, para repetir el calculo, debes usar un ciclo do..while, el do se pone antes de la parte donde te quieres regresar, y el while al final de la parte que quieres regresar, algo como:

Código: C#
  1.  
  2.             /// Comienzo del ciclo do..while
  3.             do
  4.             {
  5.                 Console.Write("Eliga la opcion que prefier: ");
  6.                 ///
  7.                 /// codigo de mi programa
  8.                 ///
  9.                 Console.WriteLine("¿Quiere usted saber cuanto ha vivido en otras unidades?");
  10.                 Console.WriteLine("");
  11.                 Console.WriteLine("1-Si");
  12.                 Console.WriteLine("2-No");
  13.                 volver = Int32.Parse(Console.ReadLine());
  14.             }
  15.             while (volver == 1); /// Fin del ciclo do..while
  16.             Console.WriteLine("Gracias por usar mi programa! Adios!");
  17.             Console.WriteLine("D4rWiNS Copyright 2010");
  18.  
  19.  
  20.  

Citar
Tambien me gustaria saber el comando:
numero = Int32.Parse(Console.ReadLine());

Pero para una cadena de texto es decir para poder introducir un texto en vez de un numero

No hay ningun comando, se lee directo en la variable, ya que el metodo ReadLine() regresas un valor de tipo texto, o sea string, por lo tanto la variable debe ser de tipo string, o sea:

Código: C#
  1.  
  2.             string texto;
  3.             texto = Console.ReadLine();
  4.  
  5.  

Saludos :)

428
Programación de Archivos del Sistema / Re: Guardar ruta en un bat?
« en: Miércoles 30 de Diciembre de 2009, 02:21 »
Cita de: "fORU-"
se podra guardar en algun archivo bat y cuando entre en programa ejecutar ese bat para que se vaya a esa ruta

Si se puede.

429
C# / Re: Como reutilizar el codigo
« en: Miércoles 30 de Diciembre de 2009, 00:04 »
Pues no se me ocurre un ejemplo con altas-bajas-modificacion, pero se me ocurre un ejemplo de animales, supon que quieres definir una clase Mamiferos, pero a la vez quieres separar los mamiferes terrestres, de los acuaticos, y los que son ambos, o sea, terrestres y acuaticos, podrias definir una clase separada para cada tipo de mamifero (MamiferoAcuatico, MamiferoTerrestre, MamiferoTerrestreAcuatico)  y de ahi heredar a cada tipo de animal, pero estarias definiendo 3 clases diferentes de mamifero dado que no se permite la herencia multiple, pero si usaras interfaces, podrias hacer algo como esto:

Código: C#
  1.  
  2.     public abstract class Mamifero
  3.     {
  4.     }
  5.     public interface Acuatico
  6.     {
  7.         void Nadar();
  8.     }
  9.     public interface Terrestre
  10.     {
  11.         void CaminarEnTierra();
  12.     }
  13.     public class Elefante : Mamifero, Terrestre
  14.     {
  15.         public void CaminarEnTierra()
  16.         {
  17.         }
  18.     }
  19.     public class Ballena : Mamifero, Acuatico
  20.     {
  21.         public void Nadar()
  22.         {
  23.         }
  24.     }
  25.  
  26.     public class Morsa : Mamifero, Acuatico, Terrestre
  27.     {
  28.         public void Nadar()
  29.         {
  30.         }
  31.         public void CaminarEnTierra()
  32.         {
  33.         }
  34.     }
  35.  
  36.  

Quizas no sea un ejemplo muy elegante, pero es el unico que se me ocurrio de momento, espero que con esto te quede mas claro.

Saludos :)

430
C# / Re: Como reutilizar el codigo
« en: Martes 29 de Diciembre de 2009, 20:23 »
Me parece que estas confundiendo el uso de interfases.

Las interfaces solo se utilizan para garantizar que debes implementar los metodos de la interfaz, y para ayudar a solventar la "limitacion" de que C# no soporta herencia multiple (o sea, que no puedes heredar de mas de una clase), pero lo que si es permitido es que una clase tenga multiples interfaces. Por esa razon, las interfases no contienen codigo, solo nombres de los metodos que debes implementar.

Puedes corregir el error que te marca cambiando la manera en como estas definiendo tu metodo en la clase ChequearTipo.

En lugar de poner:

Código: C#
  1.  
  2.         void IChequearTipo.NroEnteroKeyPress(Object sender, KeyPressEventArgs e)
  3.  
  4.  

debes poner
Código: C#
  1.  
  2.         public void NroEnteroKeyPress(Object sender, KeyPressEventArgs e)
  3.  
  4.  

De esa forma, estas definiendo el metodo NroEnteroKeyPress() que tienes en tu interfaz

Saludos :)

431
Programación de Archivos del Sistema / Re: Guardar ruta en un bat?
« en: Martes 29 de Diciembre de 2009, 19:21 »
No es necesario hacer muchos cd. basta con uno, de la siguiente manera:

Código: Text
  1.  
  2. cd "Archivos de programaMySQLMySQL Server 5.1bin"
  3.  
  4.  

Las comillas son necesarias, ya que la ruta contiene espacios.


Ah, un detalle mas, es necesario que estes en la unidad correcta, en tu ejemplo estas en la unidad d:, si estuvieras en la unidad c: y esa unidad no contiene los directorios, te marcara error, asi que antes tienes que cambiarte a la unidad d:

Saludos :)

432
C/C++ / Re: operador de incremento y punteros
« en: Sábado 26 de Diciembre de 2009, 21:36 »
Cita de: "cabeto14"
¿sabes porque hay que encerrarlo en parentesis o ponerle el incremento como prefijo?

Esto se debe a la precedencia de operadores en C/C++, ya que el operador ++ (incremento) tiene mayor precedencia que el operador * (indireccion), ademas de que el orden de evaluacion de ++ es de derecha a izquierda, en lugar de izquierda a derecha como el operador *, por lo tanto, incrementa la direccion de la variable primero, y luego accede al dato. Por eso para garantizar que se acceda primero al dato, y luego se incremente, se usa parentesis, todo lo que este entre parentesis tiene mayor precedencia que lo que no tiene parentesis, garantizando que los operadores se evaluen de la manera como tu quieras y no de la manera por defecto.

Saludos :)

433
Pascal / Re: Consulta MUY IMPORTANTE!!! para hoy dia 20-12-09
« en: Lunes 21 de Diciembre de 2009, 20:47 »
Para Frambuesa:

Ya se te dijo que aqui NO SE HACEN TAREAS, tambien se te dijo que no todos somos expertos en matematicas, y no tenemos por que saber los conceptos que necesitas, y mucho menos, crear un tema que diga MUY IMPORTANTE, aqui no eres nadie para decir que tu trabajo es MUY IMPORTANTE. ¿acaso nuestro tiempo no lo es? Practicamente nos estas menospreciando, el titulo de tu mensaje nos da a entender que solo lo que tu piensas tu tiempo y tu trabajo es importante, el de nosostros no.

En todo caso, la culpable de no saber que hacer ERES TU, por no haber hablado claro con tu maestro y decirle que te explicara exactamente que es un arreglo equitativo, que es un arreglo completo, y que es un arreglo aritmetico. O en que libro podias encontrar informacion sobre eso, si no lo hiciste fue por que pensaste que otra persona lo averiguaria por ti, y eso no habla bien de ti. Por mi parte nunca he escuchado los terminos de tu problema, pero despues de tus respuestas anteriores, ni siquiera me preocuparia en buscar la respuesta para ayudarte, ni este ni en futuros porblemas que tengas.

Te dejo un enlace que esta publicado en este mismo foro, y que es claro que no leiste, para que no vuelvas a cometer el mismo error en otro foro, espero y ojala te tomes unos minutos y lo leas, pero con tu actitud, creo que no lo haras:

Como hacer preguntas de forma inteligente

Ahora solo pido a un moderador que cierre este hilo, no le veo caso a que siga abierto.

Saludos :)

434
C/C++ / Re: Ejercicio dificil, hasta de definir en ASUNTO!!
« en: Domingo 20 de Diciembre de 2009, 00:23 »
No es complicado, es muy facil de hacer utilizando vectores, de hecho, en tu programa de ejemplo defines un vector de 50, pero nunca lo utilzas.

Podrias definir un vector de 101 elementos para guardar todos los numeros, ya que dices que dedes introducir un numero del 0 al 100 inclusive, y del 0 al 100 son 101 numeros.

Usarias 2 vectores, uno para guardar los numeros, y otro para el contador de cada numero. Antes de comenzar a contar, mediante un ciclo inicializa a cero el vector contador.

Ahora, para que puedas leer menos de 100 numeros, utiliza un ciclo while en lugar de un ciclo for, y que la condicion de salida sea mediante una bandera, y en lugar de comparar, cuenta cada numero dentro de su posicion del vector, o sea, el numero 0 iria en la posicion 0, el numero 1 en la pocicion 1, el numero 2 en la posicion 2 y asi sucesivamente, algo asi mas o menos:
Código: C++
  1.  
  2.     int bandera = 0;
  3.     int i = 0;
  4.     while ((i < 100) && (bandera == 0)
  5.     {
  6.         printf("Introduce numero entre 0 y 100: ");
  7.         scanf("%i", &numero);
  8.         if ((numero < 0) || (numero > 100))
  9.             bandera = 1;
  10.         contador[numero] = contador[numero] + 1;
  11.         i++;
  12.  
  13.  

Cuando bandera sea igual a 1, o el contador sea mayor a 100, seria hora de dejar el ciclo.

Con esas pistas de seguro lo podras terminar.

Saludos :)

435
C# / Re: Llenar arreglo con serie aleatoria del 1 al 10
« en: Viernes 18 de Diciembre de 2009, 20:31 »
No quisiera decir te lo dije, pero te lo dije  :rolleyes:

Saludos :)

436
C# / Re: Llenar arreglo con serie aleatoria del 1 al 10
« en: Viernes 18 de Diciembre de 2009, 02:51 »
Cita de: "pedroqv"
como qeu se atonta el if

Mas bien los que nos atontamos somos los programadores  :rolleyes:

Bueno, yo sigo diciendo que el algoritmo que quieres usar no es muy eficiente, ya que cada vez que generas un numero nuevo, buscas dentro de todo el vector, para verificar que el numero no se repita.

Aun asi, revise tu codigo mas detenidamente, pero antes de decirte que tienes mal, te dare otro consejo.

Trata de usar el depurador de Visual Studio, es muy facil de usar, y te ayudara a encontrar esos pequeños errores que se nos escapan.

En especial, usa el Paso por instrucciones (tecla F11) y el Paso por procedimentos (F10) ademas de la inspeccion de variables, y ejecuta paso por paso tu programa en las partes mas citicas, y cuando hayas depurado ciertas partes, utilza puntos de interrupcion, para que tu progama se detenga solo en ciertas partes, y depures mas facil, todo esto combinado con la inspeccion de variables como dije antes.

Bueno, ahora si, vamos al fondo del problema :)

El problema es esta instruccion, o sea, el ciclo que revisa el vector desde el principio para verificar que no haya repetidos:
Código: C#
  1.  
  2.                 for (int j = 0; j < 10; j++)
  3.  
  4.  

1. Para empezar, la condicion j < 10 es incorrecta, ya que revisas todo el vector aun cuando este no esta lleno todavia, lo mas correcto seria revisar solo hasta donde hayamos leido, o sea la condicion seria j < i.

2. El orden de evaluacion del ciclo for es como sigue:

a. Inicializa la variable j (j = 0)
b. Pregunta si j < 10, si es verdadero entra al ciclo, si es falso, sale del ciclo.
c. cuerpo del ciclo.
d. incrementa j y regresa al paso b.
e. salida del ciclo

Por lo tanto, dentro de tu ciclo, cuando tu haces:
Código: C#
  1.  
  2.                    if (aux[j] == num)
  3.                     {
  4.                         num = r.Next(0, 10);
  5.                         j = 0;
  6.                     }
  7.  
  8.  

Tu regresas j a cero, pero despues de eso, el for incrementa j antes de preguntar si j < 10, por lo tanto, cuando entra al ciclo, en realidad j vale 1 y no cero como podrias suponer, asi que se salta el primer elemento en la comparacion de repetidos. Entonces si random te repite el numero que esta en la primera posicion del vector, no te lo cambia, porque el for se salta el primer elemento. De hecho si ejecutas el programa, veras que el numero que se repite cuando se llega a repetir, siempre es el de la primera posicion. (en tu ejemplo es el 4 el que esta en la primera, y ese es precisamente el que se repite  :lol:)

La solucion correcta entonces seria usar un ciclo while en lugar de un ciclo for, e incrementar la variable j, solamente cuando el numero no este repetido

Código: C#
  1.  
  2.                     int j = 0;
  3.                     while (j < i)
  4.                     {
  5.                         if (aux[j] == num)
  6.                         {
  7.                             num = r.Next(0, 10);
  8.                             j = 0;
  9.                         }
  10.                         else
  11.                         {
  12.                             j++;
  13.                         }
  14.                     }
  15.  
  16.  

Pruebalo y veras que ahora si funciona correctamente.

Todo esto lo encontre usando las opciones de depuracion de Visual Studio, asi que sigue mi consejo y depura tu mismo con el depurador, veras que es increible.

Bueno, fue divertido mientras duro  :P

Saludos :)

437
C# / Re: Llenar arreglo con serie aleatoria del 1 al 10
« en: Jueves 17 de Diciembre de 2009, 22:32 »
Eso es porque el algoritmo que estas usando no es correcto.

La clase Random genera un numero nuevo cada vez, pero no garantiza que el numero generado no se repita.

Lo que necesitas es un algoritmo parecido a los que se utilizan para barajar las cartas.

Te dejo un codigo que adapte de http://casidiablo.net/codigo-ejemplo-didactico-con-strings-en-java-simulacion-para-barajar-y-repartir-cartas/ para barajar cartas. Antes de usarlo, deberas llenar tu vector con los numeros del 0 al 9, y ya despues llamar al metodo barajar.

Código: C#
  1.  
  2.         static void barajar()
  3.         {
  4.             Random r = new Random();
  5.  
  6.             // Para cada carta, elegir otra carta aleatoria e intercambiarlas
  7.             for (int primera = 0; primera < aux.Length; primera++)
  8.             {
  9.                 int segunda = r.Next(0, 10);
  10.                 int temp = aux[primera];
  11.                 aux[primera] = aux[segunda];
  12.                 aux[segunda] = temp;
  13.             }
  14.         }
  15.  
  16.  

Saludos :)

438
C# / Re: Obtener nombres de carpetas
« en: Jueves 17 de Diciembre de 2009, 19:56 »
Revisa la clase System.IO.Directory, y el resto de clases del namespace System.IO, contiene muchas clases para manejo de archivos y directorios.

Saludos :)

439
C/C++ / Re: Uso de los vectores
« en: Jueves 17 de Diciembre de 2009, 19:38 »
Es correcto lo que te dice el compañero, la condicion del ciclo esta mal, deberia ser <, no >, ademas decir que los vectores en C/C++ siempre comienzan en cero, por lo tanto un vector de 10 elementos va del 0 al 9, por lo tanto la condicion debe ser <, no <=, si pones <= y son diez elementos, tratara de leer el elemento en la posicion 11, dado que el elemento 11 su indice es 10.

Saludos :)

440
C/C++ / Re: problema con registro y datos enumerados
« en: Miércoles 16 de Diciembre de 2009, 19:33 »
El tipo enum no es mas que una variacion especial del tipo entero, cuando defines un enum, estas definiendo constantes enteras automaticas, que por defecto comienzan en el numero 0.

En el ejemplo que mencionas, Simple = 0, Doble = 1, Suite = 2.

Tendrias varias opciones para guardar el valor en la variable habit de tu estructura.

1. Usar una variable adicional de tipo char[], y luego usar condiciones if para guardar el valor correcto:

Código: C++
  1.  
  2.     char tipo[20];
  3.     cout << "Introduce tipo de habitacion ";
  4.     cin.getline(tipo, 20-1);
  5.    
  6.     if (strcmp(tipo, "simple") == 0)
  7.     {
  8.         c1.habit = Simple;
  9.     }
  10.     else
  11.         if (strcmp(tipo, "doble") == 0)
  12.         {
  13.             c1.habit = Doble;
  14.         }
  15.         else
  16.         {
  17.             if (strcmp(tipo, "suite") == 0)
  18.             {
  19.                 c1.habit = Suite;
  20.             }
  21.         }
  22.  
  23.  

2. Usar una variable adicional de tipo int y luego usar un switch para guardar el valor correcto:

Código: C++
  1.  
  2.     int tipo;
  3.     cout << "Introduce tipo de habitacion (0 = simple, 1 = doble, 2 = suite :";
  4.     cin >> tipo;
  5.     switch (tipo)
  6.     {
  7.     case Simple :
  8.         c1.habit = Simple;
  9.         break;
  10.     case Doble :
  11.         c1.habit = Doble;
  12.         break;
  13.     case Suite :
  14.         c1.habit = Suite;
  15.         break;
  16.     }
  17.  
  18.  

3. Usar una variable adicional de tipo entero y luego usar un typecast para guardar el valor directamente en tu variable.

Código: C++
  1.  
  2.     int tipo;
  3.     cout << "Introduce tipo de habitacion (0 = simple, 1 = doble, 2 = suite :";
  4.     cin >> tipo;
  5.         // Typecast de la variable.
  6.         c1.habit = (TTipo) tipo2;
  7.  
  8.  


Para verlos seria algo parecido, puedes usar un switch, y dependiendo el valor de c1.habit, en pantalla muestas el tipo de habitacion escribiendolo manualmente, o sea, cuando c1.habit sea igual a Simple, imprimes con cout la Frase "Habitracion Simple" y asi por el estilo.

Tu decides cual es el metodo que mas te gusta o el que mas te convenga.

Saludos :)

441
C# / Re: iniciar mi programa con el sistema
« en: Miércoles 16 de Diciembre de 2009, 00:24 »
Pues aplica lo mismo que te dije, crea una clave de registro para tu programa, desde dentro de tu programa.

Para crear la clave, suponiendo que instalaste tu programa en C:Archivos de programaMi folder:

Código: C#
  1.  
  2.             Microsoft.Win32.RegistryKey miClave = Registry.LocalMachine.CreateSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun");
  3.             miClave.SetValue("MiClaveDePrograma", @"C:Archivos de programaMi folderMiprograma.exe");
  4.  
  5.  

Para borrar la clave y que ya no se inicie automaticamente:

Código: C#
  1.  
  2.             Microsoft.Win32.RegistryKey miClave = Registry.LocalMachine.CreateSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun");
  3.             miClave.DeleteValue("MiClaveDePrograma");
  4.  
  5.  


Ya solo tendrias que crear el formulario y el checkbox que ejecute ese codigo.

Saludos :)

442
C# / Re: iniciar mi programa con el sistema
« en: Martes 15 de Diciembre de 2009, 18:35 »
Modo facil:

Pon un Acceso directo a tu programa en la carpeta de Incio de Windows. En windows XP esta carpeta es: Documents and SettingsAll UsersMenú InicioProgramasInicio

Modo Dificil.

Crea una clave de registro para tu programa dentro de HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun

Saludos :-)

443
MySQL / Re: crear usuario
« en: Domingo 13 de Diciembre de 2009, 23:06 »
jaja ya habias encontrado la respuesta cuando estaba escribiendo  :lol:

Saludos :)

444
MySQL / Re: crear usuario
« en: Domingo 13 de Diciembre de 2009, 23:05 »
Hola no se cual sea ese MySQL de consultas que dices, pero puedes crear usuarios y asignar privilegios desde la ventana de linea de comandos de MySQL;

1. Abre una ventana de simbolo de sistema.
2. Cambiate al directorio donde esta instalado MySQL (normalmente C:Archivos de programaMySQLMySQL Server 5.1bin)
3. Cuando instalas MySQL por pirmera vez, crea un usuario por defecto llamado root, asi que puedes entrar com o root, para hacerlo, escribe el siguiente comando:

mysql -u root

Si al instalar definiste al usuario root sin contraseña o:

mysql -u root -p

si lo definiste con contraseña

escribe la contraseña en caso que te la pida.

4. Cuando estes en la linea de comandos de mysql puedes crear tu usuario nuevo y asignarle privilegios con los sigçuientes comandos

Código: SQL
  1.  
  2. CREATE USER pedroqv@localhost IDENTIFIED BY 'mypassword';
  3. GRANT ALL PRIVILEGES ON *.* TO pedroqv@localhost WITH GRANT OPTION;
  4.  
  5.  

445
C/C++ / Re: Me falta terminarlo
« en: Viernes 11 de Diciembre de 2009, 19:07 »
Hola.

Un consejo, cuando publiques codigo usa las etiquetas de code, facilita la lectura.

El error lo tienes en la definicion de tu funcion

Código: C++
  1.  
  2. void Transfomar1 (float real, float imag)
  3. {
  4.     float ang, raiz, modulo;
  5.  
  6.  

Deberia ser:

Código: C++
  1.  
  2. void Transformar1 (float real, float imag)
  3. {
  4.     float ang, raiz, modulo;
  5.  
  6.  

Te comiste una letra r, pusiste Transfomar1 en lugar de Transformar1

Saludos :)

446
C/C++ / Re: conversion vector string
« en: Viernes 11 de Diciembre de 2009, 18:55 »
El error esta en esta funcion:

Código: C++
  1.  
  2. vector <string> TC (int &m){
  3.        vector <string> TC(10);
  4.        TC[2]="abc";
  5.        TC[3]="def";
  6.        TC[4]="ghi";
  7.        TC[5]="jkl";
  8.        TC[6]="mno";
  9.        TC[7]="pqrs";
  10.        TC[8]="tuv";
  11.        TC[9]="wxyz";
  12.        return TC[m];
  13.        }
  14.  
  15.  

Tratas de regresar un string, pero tu funcion la tienes definida como que regresa un vector<string>, debes eliminar la parte de vector<>, quedando de la siguiente manera:

Código: C++
  1.  
  2. string TC (int &m){
  3.     vector <string> TC(10);
  4.     TC[2]="abc";
  5.     TC[3]="def";
  6.     TC[4]="ghi";
  7.     TC[5]="jkl";
  8.     TC[6]="mno";
  9.     TC[7]="pqrs";
  10.     TC[8]="tuv";
  11.     TC[9]="wxyz";
  12.     return TC[m];
  13. }
  14.  
  15.  

Saludos :)

447
Visual C++ / Re: Resolver Ejercicios!!
« en: Jueves 10 de Diciembre de 2009, 19:00 »
No se hacen tareas

448
C# / Re: Colas
« en: Miércoles 9 de Diciembre de 2009, 01:59 »
No necesitas meter (enqueue) cada valor por separado (nombre y nota) ya que forman parte de la misma variable (alumno), con que metas alumno es suficiente. De hecho, lo que haces es meter 2 veces el mismo valor a la cola. Lo que debes hacer es un new Dato() para cada nombre diferente que vayas a meter.

Para sacar los datos de la cola es lo mismo, no necesitas sacar los valores de nombre y nota por separado, con que saques alumno es mas que suficiente.

Normalmente no hago las tareas, solo doy pistas, pero en vista de que parece que estas completamente "encolado", perdon, enredado, te dejo la manera en que lo debes hacer. Analizalo.

Código: C#
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5.  
  6. public class Dato
  7. {
  8.     public string nombre;
  9.     public int nota;
  10. }
  11.  
  12. public class Colas
  13. {
  14.     static void Main()
  15.     {
  16.         Queue<Dato> alumne = new Queue<Dato>();
  17.         Dato alumno;
  18.         string nombre1;
  19.         int nota1;
  20.         do
  21.         {
  22.             Console.WriteLine("Introdueix el nom de l'alumne:");
  23.             nombre1 = Console.ReadLine();
  24.             Console.WriteLine("Introdueix la nota de l'alumne:");
  25.             nota1 = Int32.Parse(Console.ReadLine());
  26.             // Debes hacer new Dato() por cada dato nuevo que vayas a encolar
  27.             alumno = new Dato();
  28.             alumno.nombre = nombre1;
  29.             alumno.nota = nota1;
  30.             alumne.Enqueue(alumno);
  31.         } while (nombre1 != "");
  32.  
  33.         Console.WriteLine("Alumnos Suspendidos");
  34.         while (alumne.Count > 0) //Saber el numero de elementos de la cola.
  35.         {
  36.             // Retiras un elemento de la cola y lo guardas en alumno
  37.             alumno = alumne.Dequeue();
  38.             if (alumno.nota < 5)
  39.             {
  40.                 Console.WriteLine(alumno.nombre);
  41.                 Console.WriteLine(alumno.nota);
  42.                 Console.WriteLine();
  43.             }
  44.         }
  45.         Console.ReadKey();
  46.     }
  47. }
  48.  
  49.  

Saludos :)

449
C# / Re: Colas
« en: Martes 8 de Diciembre de 2009, 19:19 »
Por lo menos hubieras traducido el ejemplo que bajaste de internet al español  :wacko:

Tienes un error en esta linea:

Código: C#
  1.  
  2.         Dato alumno = new alumno();
  3.  
  4.  
Deberia ser:

Código: C#
  1.  
  2.         Dato alumno = new Dato();
  3.  
  4.  

Y luego, una vez que leiste tu datos en la variable alumno, solo tienes que hacer:

Código: C#
  1.  
  2.         alumne.Enqueue(alumno);
  3.  
  4.  

Para "encolar" tus datos de alumno.

Saludos :)

450
MySQL / Re: Problema con campo primario
« en: Martes 8 de Diciembre de 2009, 18:41 »
El problema es que estas usando 2 campos como clave primaria, id y correo, cuando haces eso, te toma los dos campos para generar la clave primaria, y el campo id es autonumerico, lo que significa que cada vez que insertas un registro, te genera un id numerico diferente, y al combinarlo con el correo, te genera 2 claves diferentes, y por lo tanto te deja hace la insercion.

Explicado con ejemplo:

id, correo
1, micorreo@micorreo.com
3, micorreo@micorreo.com
1, micorreo@micorreo.com

entonces si no te dejaria, ya que el conjunto de id + correo es el mismo.

Si lo que deseas es que al insertar un registro en la base de datos no te permita insertar el mismo correo dos veces, tienes que hacerlo manual, o sea, hacer un select (consulta) para buscar si existe el correo:

Código: SQL
  1.  
  2. SELECT correo FROM clientes WHERE correo = 'micorreo@micorreo.com';
  3.  
  4.  

Si la consulta te regresa cero filas, entonces el correo no existe y puedes insertarlo.

Si te regresa 1 fila, entonces el correo si existe, y mostrarias un mensaje de que no puedes hacer la insercion porque el correo ya existe.

Espero haberte ayudado.

Saludos :)

Páginas: 1 ... 16 17 [18] 19 20 ... 32