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

Problemas con C#

Estas en el tema de Problemas con C# en el foro de .NET en Foros del Web. Bueno recien estoy aprendiendo este lenguaje anteriormente ya sabia C++ y Java, actualmente estoy trabajando con mono 2.4 y haciendo algunos ejercicios propuestos,pero me tope ...
  #1 (permalink)  
Antiguo 21/07/2009, 07:25
Avatar de paelams  
Fecha de Ingreso: marzo-2008
Mensajes: 23
Antigüedad: 16 años, 1 mes
Puntos: 0
Problemas con C#

Bueno recien estoy aprendiendo este lenguaje anteriormente ya sabia C++ y Java,
actualmente estoy trabajando con mono 2.4 y haciendo algunos ejercicios propuestos,pero me tope con esta error; que me gustaria saber en que me confundi

Cita:
/*Programa que multiplica dos valores definidos por el usuario*/

using System;

public class Ejemplo01
{
public static void Main()
{
byte num1;
byte num2;
ushort resp;

Console.WriteLine("Introduce el primer numero");
num1 = Convert.ToByte(Console.ReadLine());

Console.WriteLine("Introduce el segundo numero");
num2 = Convert.ToByte(Console.ReadLine());

resp=num1*num2;

Console.WriteLine("La multiplicacion de {0} y {1} es {2}",
num1, num2,resp);

}
}
me sale un error que para mi no deberia salir porque en ningun lugar declaro una variable entera

Cita:
Cannot implicity convert type 'int' to 'ushort'.An explicity conversion exist
  #2 (permalink)  
Antiguo 21/07/2009, 09:05
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Problemas con C#

pero el resultado de tu num1 * num2 es entero asi que tiene todo el sentido

si estas multiplicando numeros enteros solo haz una conversion a enteros si multiplicas algo como

11101
x1111
====

solo cambia el res al tipo que sporte la operacion en este caso un entero no un short sin signo
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 21/07/2009, 09:16
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Problemas con C#

cambia: resp=num1*num2;
por: resp=(ushort)(num1*num2);

aqui algo que te puede orientar mejor:
http://msdn.microsoft.com/es-es/libr...4z(VS.80).aspx
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #4 (permalink)  
Antiguo 21/07/2009, 13:57
Avatar de paelams  
Fecha de Ingreso: marzo-2008
Mensajes: 23
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Problemas con C#

gracias por sus comentarios,aunque el ejercicio propuesto decia explicitamente dos byte y el resultado en ushort.

veo que la manera seria por un type casting explicito, aunque aun me pregunto porque explicito y no implicito ya que facilmente multiplicar dos variables byte caben en una variable ushort,bueno no se si sean caprichos del compilador.


Probando como jugar con estas variables hice este programa que facilmente me devulve errores,bueno eso era lo que queria hacer:


Cita:
/*Programa que multiplica dos valores definidos por el usuario*/

using System;

public class Ejemplo01
{
public static void Main()
{
byte num1;
sbyte num2;
ushort resp;

Console.WriteLine("Introduce el primer numero");
num1 = Convert.ToByte(Console.ReadLine());

Console.WriteLine("Introduce el segundo numero");
num2 = Convert.ToSByte(Console.ReadLine());

resp=(ushort)(num1*num2);

Console.WriteLine("La multiplicacion de {0} y {1} es {2}",
num1, num2,resp);

}
}
para probar puse 7 y -9 y el resultado 65473

////////////////
Bueno, el problema como dije antes es el error

Cita:
Cannot implicity convert type 'int' to 'ushort'.An explicity conversion exist<Are you missing a cast?>
Se supone que estoy creando variables byte y me aparecen como si fueran variables enteras(int)
en cuyo caso si seria bien justificado el casting explicito,pero en este de byte a short creo que no deberia haber ningun casting explicito y deberia funcionar con un simple cast implicito

ustedes que opinan?
  #5 (permalink)  
Antiguo 21/07/2009, 14:54
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Problemas con C#

cambia la declaracion del res por int
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #6 (permalink)  
Antiguo 21/07/2009, 15:11
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Problemas con C#

Cita:
Iniciado por paelams Ver Mensaje
para probar puse 7 y -9 y el resultado 65473

Claro que esta bien el resultado ya que SByte esta entre -255 y +255, ahora si multiplicamos 7*-9 = -63 , y como UShort tiene que estar entre 1y 65536 (solo positivos), por ser negativo, el resultado es la diferencia entre el maximo y el valor absoluto del producto:

En resumen si tenemos una variale de tipo Byte (1-255) y hacemos un buble que vaya sumandole 1 por cada iteracion, al llegar a 255 volvera a empezar en 1 ya que el 256 no esta en su intervalo permitido, en el link que te pase hay bastante documentacion sobre esto.
__________________
Vivir para ser buenos y ser buenos para servir mejor.
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 11:09.