Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema con variables globales y parametros

Estas en el tema de Problema con variables globales y parametros en el foro de .NET en Foros del Web. Estoy dando visual c# con procedimientos y variables globales y no paro de liarme. Ahora el problema es que tengo que hacer un ejercicio tan ...
  #1 (permalink)  
Antiguo 13/08/2012, 05:04
 
Fecha de Ingreso: octubre-2009
Mensajes: 182
Antigüedad: 15 años, 1 mes
Puntos: 5
Problema con variables globales y parametros

Estoy dando visual c# con procedimientos y variables globales y no paro de liarme. Ahora el problema es que tengo que hacer un ejercicio tan sencillo como una tabla de multiplicar con una sola variable global.

El formulario tiene un textbox donde pongo el numero para que saque la tabla de multiplicar, un boton para hacer el calculo y el otro para limpiar y a si pòder hacer otra tabla de multiplicar y un listbox donde tengo que sacar los numeros multiplicados.

Al calcular primero me saca los numeros del 1 al 10 despues limpio y pongo otro numero y no hace nada. Pongo el codigo del primer boton:


int numero = 1;
private void button1_Click(object sender, EventArgs e)
{

int numero_introducido=int.Parse(textBox1.Text);

Tabla_Multiplicar(numero_introducido);
}
void Tabla_Multiplicar(int resultado)
{
while (numero <= 10)
{
resultado = resultado*numero;
listBox1.Items.Add(numero.ToString());
numero++;
};
}

Estes es el codigo que he puesto en el boton calcular. He cambiado el nombre de las variables y tod hasta que me ha dejado ejecutar el programa y el resultado es el comentado. Le pongo al textbox cualquier numero y me saca siempre 1,2,3, a si hasta 1 en el listbox despues le doy a limpiar pongo otro numero en el textbox le doy a calcular y no me hace nada.

Gracias. Que follon con los parametros de veras yo creia haber entendido esto y lo e las variables globales pero parece ser que no del todo.

Gracias de ante mano.
  #2 (permalink)  
Antiguo 13/08/2012, 08:06
 
Fecha de Ingreso: agosto-2011
Mensajes: 28
Antigüedad: 13 años, 3 meses
Puntos: 3
Respuesta: Problema con variables globales y parametros

Al listbox estas ñadiendo la variable "numero" que la estas usando solo como contandor, en este caso tienes que añadir "resultado".

Saludos.
  #3 (permalink)  
Antiguo 13/08/2012, 08:54
 
Fecha de Ingreso: octubre-2009
Mensajes: 182
Antigüedad: 15 años, 1 mes
Puntos: 5
Respuesta: Problema con variables globales y parametros

Cita:
Iniciado por caotz Ver Mensaje
Al listbox estas ñadiendo la variable "numero" que la estas usando solo como contandor, en este caso tienes que añadir "resultado".

Saludos.
De eso me he dado cuenta despues de poner el mensaje por que aun que yo ponga los problemas no me paro ahi, intento resolverlos.

Al poner en el listbox la variable resultado me salen numeros pero no me sale 3,6,9 hasta 30 que es lo que tiene que salir si no da unos resultados que ni se parecen. Para poner un ejemplo cuando pongo en el listbox 3 sale:

3,6,18,72,360, no sigo por que ya los numeros son mas grandes.

El caso es que sigo sin que esto funcione bien.

Gracias.
  #4 (permalink)  
Antiguo 13/08/2012, 09:14
 
Fecha de Ingreso: octubre-2009
Mensajes: 182
Antigüedad: 15 años, 1 mes
Puntos: 5
Respuesta: Problema con variables globales y parametros

Cita:
Iniciado por jlmn23 Ver Mensaje
De eso me he dado cuenta despues de poner el mensaje por que aun que yo ponga los problemas no me paro ahi, intento resolverlos.

Ya he solucionado el problema pero ahora tengo otros 2 que ya son faciles.

El primero es que quiero hacer un if para que compruebe si hay un numero en el textbox de lo contrario que de un mensaje diciendo que no hay nada y que tiene que poner un numero. Pongo el codigo que tengo ahora:

int numero = 1;
int numero2;
private void button1_Click(object sender, EventArgs e)
{

int numero_introducido;

if (textBox1.Text = "")
{ MessageBox.Show("Debe introducir un numero"); }
else
{
numero_introducido = int.Parse(textBox1.Text);
};




Tabla_Multiplicar(numero_introducido);
}
void Tabla_Multiplicar(int resultado)
{
while (numero <= 10)
{
numero2 = resultado;
resultado = resultado*numero;
listBox1.Items.Add(resultado.ToString());
resultado = numero2;
numero++;
};

}

Eso esta en el codigo que calcula la multiplicacion y me dice en el if que no se puede convertir explicitamente un string en bool.

Y el segundo fallo esta cuando limpio con otro boton el txtbox y la lista que al poner en el textbox otro numero no hace nada. Pongo codigo del segundo boton:

textBox1.Text = "";
listBox1.Items.Clear();

Pues eso fala el if, si quito el if va pero quiero que se compruebe eso antes si hay un numero y el boton de limpiar pues cuando le doy y vuelvo a poner otro numero no me hace el calculo.

Gracias chicos.
Gracias.
  #5 (permalink)  
Antiguo 14/08/2012, 03:04
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 7 meses
Puntos: 344
Respuesta: Problema con variables globales y parametros

El problema del if es por usar el operador de asignación ( = ) y no el de igualdad ( == ).

El segundo problema es que no reinicias el contador a 0 cada vez que llamas al método Tabla_Multiplicar.

Un consejo es que uses variables con nombres con sentido en el contexto, es decir, al método Tabla_Multiplicar le pasas una variable llamada resultado, cuando realmente no es el resultado sino el número del cual quieres obtener la tabla de multiplicar.

Código C#:
Ver original
  1. int contador = 1;
  2. int resultado = 0;
  3.  
  4. private void button1_Click(object sender, EventArgs e)
  5. {
  6.  
  7. int numero_introducido;
  8.  
  9. //Es ==, no =
  10.  if (textBox1.Text == "") //Tambien puedes poner textBox1.Text.Equals("") o mejor
  11. //String.IsNullOrEmpty(textBox1.Text) que controla tanto que la cadena sea vacía como que sea nula
  12.  {
  13.   MessageBox.Show("Debe introducir un numero");
  14.  }
  15.  else
  16.  {
  17.  numero_introducido = int.Parse(textBox1.Text);
  18.  Tabla_Multiplicar(numero_introducido);
  19.  }
  20.  
  21. }
  22. void Tabla_Multiplicar(int numero_tabla)
  23. {
  24.  
  25. //Reiniciamos el contador a 0 cada vez que se realiza una nueva tabla de multiplicar
  26. contador= 0;
  27.  
  28. while (contador <= 10)
  29. {
  30.  resultado = contador * numero_tabla;
  31.  listBox1.Items.Add(resultado.ToString());
  32.  contador++;
  33. }
  34. }

Saludos.

Última edición por alexg88; 14/08/2012 a las 03:15
  #6 (permalink)  
Antiguo 14/08/2012, 05:09
 
Fecha de Ingreso: octubre-2009
Mensajes: 182
Antigüedad: 15 años, 1 mes
Puntos: 5
Respuesta: Problema con variables globales y parametros

Cita:
Iniciado por alexg88 Ver Mensaje
El problema del if es por usar el operador de asignación ( = ) y no el de igualdad ( == ).

El segundo problema es que no reinicias el contador a 0 cada vez que llamas al método Tabla_Multiplicar.

Un consejo es que uses variables con nombres con sentido en el contexto, es decir, al método Tabla_Multiplicar le pasas una variable llamada resultado, cuando realmente no es el resultado sino el número del cual quieres obtener la tabla de multiplicar.

Código C#:
Ver original
  1. int contador = 1;
  2. int resultado = 0;
  3.  
  4. private void button1_Click(object sender, EventArgs e)
  5. {
  6.  
  7. int numero_introducido;
  8.  
  9. //Es ==, no =
  10.  if (textBox1.Text == "") //Tambien puedes poner textBox1.Text.Equals("") o mejor
  11. //String.IsNullOrEmpty(textBox1.Text) que controla tanto que la cadena sea vacía como que sea nula
  12.  {
  13.   MessageBox.Show("Debe introducir un numero");
  14.  }
  15.  else
  16.  {
  17.  numero_introducido = int.Parse(textBox1.Text);
  18.  Tabla_Multiplicar(numero_introducido);
  19.  }
  20.  
  21. }
  22. void Tabla_Multiplicar(int numero_tabla)
  23. {
  24.  
  25. //Reiniciamos el contador a 0 cada vez que se realiza una nueva tabla de multiplicar
  26. contador= 0;
  27.  
  28. while (contador <= 10)
  29. {
  30.  resultado = contador * numero_tabla;
  31.  listBox1.Items.Add(resultado.ToString());
  32.  contador++;
  33. }
  34. }
  35.  
  36. Ya he solucionado el problema, habia puesto tu ejercicio y no funcionaba lo habre copiado mal, el caso es que ya tengo el problema resuelto con mi codigo, he puesto la llamada al procedimiento en el else y el contador en vez de poner 0 he puesto 1 y va de maravilla. Todo esto pasa por que estoy estudiando c# en casa con un manual y no tengo un profesor que me ayude cuando tengo problemas de este tipo. Este tipo de ejercicios de parmetrs y variables globales y demas me etan dando unos quebraderos de cabeza que jamas imaginaba tener. Ahora me toca ver funciones, espero que se me de mejor.
  37.  
  38. Gracias.

Saludos.

Etiquetas: globales, parametros, tabla, textbox, variables, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:15.