Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ivancea96

#891
Java / Re: Ayuda con Switch anidados
3 Diciembre 2016, 22:55 PM
Y eso te respondo. Con esas técncias, puedes hacerlo.
#892
Si el sendto retorna SOCKET_ERROR (-1), utiliza la función WSAGetLastError Para ver qué error hubo.
Aquí ves qué significa cada valor devuelto por WSAGetLastError: https://msdn.microsoft.com/en-us/library/windows/desktop/ms740148(v=vs.85).aspx
#893
Java / Re: Ayuda con Switch anidados
3 Diciembre 2016, 12:56 PM
Lo normal es que vaya a donde quieras de forma "natural". Por ejemplo, tienes un do-while. Su condición, si es false, lo haría salir al anterior, y luego lo mismo para el B.
También puedes poner una flag:
Código (java) [Seleccionar]
boolean salir = false;
do{
    // switch
    salir = true;
}while(/* tu condición */ && !salir);


Otra opción, es con el "break with label":
Código (java) [Seleccionar]
search:
for (i = 0; i < arrayOfInts.length; i++) {
    for (j = 0; j < arrayOfInts[i].length; j++) {
        if (arrayOfInts[i][j] == searchfor) {
            foundIt = true;
            break search;
        }
    }
}

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html


Siempre que puedas, mi recomendación es que lo hagas sin labels, de la forma más estructurada posible (Otros lenguajes no te permitirán hacer lo del label)

Otra opción, sería dividir el código en funciones (donde sean necesarias). Así, tendrás 2 posibilidades: break y return. Return saldrá de todos los loops y switchs, mientras que break solo del primero.
#894
Tendrás que usar el compilador de Microsoft. Puedes hacerlo con Visual Studio.
No tengo mucha más información de ello. Cada compilador añade sus cosillas no-estándar a los lenguajes.
#895
__try y __except son extensiones de Microsoft. Si compilas ese código con Visual Studio, te debería ir.
#896
Cita de: Flipeador2016 en 29 Noviembre 2016, 02:32 AM
1) ¿Por que pasa esto?, ¿cual es el problema?, ¿para que sirve la 'L', por ejemplo: 'L"string"'.
MessageBoxW requiere wide-chars (wchar_t), al finy  al cabo, es para lo que funciona. Los parámetros deben ser "wide char":
Código (cpp) [Seleccionar]
MessageBoxW(0, L"Texto", L"Título", MB_OK | MB_ICONINFORMATION);
Ambos. La 'L' implica que una cadena en vez de ser char*, es wchar_t*.

Interesante ver que el código, para utilizar bien los L"", debe estar en una codificación diferente a ANSI (UTF-8, por ejemplo).


Cita de: Flipeador2016 en 29 Noviembre 2016, 02:32 AM
2) ¿como declaro y uso una variable de tipo LPWSTR?
L"texto" es una LPWSTR. wchar_t* o WCHAR*. Son lo mismo.
LPWSTR == Pointer to Wide String
LPCWSTR == Pointer to Constant Wide String

La diferencia entre estos tipos y char es que wchar_t suele ser de mayor tamaño que char. (char -> 1 byte, wchar_t -> 2 bytes)
También existen char16_t y char32_t, como curiosidad.


Cita de: Flipeador2016 en 29 Noviembre 2016, 02:32 AM
4) ¿cual es la diferencia entre wchar_t, char32_t, WCHAR, TCHAR?, ¿cual debo usar?.
En caso de querer información sobre un tipo, tienes varias opciones.
Una rápida es forzar un error, y el compilador te suele decir qué tipos son:
Código (cpp) [Seleccionar]
TCHAR c = "error";
error: invalid conversion from 'const char*' to 'TCHAR {aka char}'
Ahí ya nos dice que TCHAR es un char.

Otra opción, dado que son tipos de Windows, es visitar sus referencias:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx
Ahí explica qué es TCHAR:
Código (cpp) [Seleccionar]
#ifdef UNICODE
    typedef WCHAR TCHAR;
#else
    typedef char TCHAR;
#endif


Y finalmente, otra:
Código (cpp) [Seleccionar]
#include <windows.h>
#include <typeinfo>

int main(){
cout << typeid(TCHAR).name() << endl;
}

Ese nombre a veces no es muy descriptivo. Pero puedes comparar nombres. Si 2 nombres son iguales, los tipos son iguales.
Si no te interesa el nombre, puedes hacer una comparación directa:
Código (cpp) [Seleccionar]
cout << (typeid(TCHAR) == typeid(char)) << endl;


Cita de: Flipeador2016 en 29 Noviembre 2016, 02:32 AM
3) ¿por que Code::Blocks usa Ansi por defecto (o tal vez tiene que ver el compilador)?, ¿por que no se muestra el texto que contiene caracteres, por ejemplo, acentuados (hablo del uso de, por ejemplo, con 'cout')?.

Code::Blocks -> Settings -> Editor -> Other Settings
Ahí elijes codificación.
En el caso de mi compilador, utiliza OEM-850 (u otro parecido, no me fijé)


Cita de: Flipeador2016 en 29 Noviembre 2016, 02:32 AM
5) ¿debo tener en cuenta algo al ejecutar mi programa en otra versión de Windows (sobre este tema)?.
En principio no. De existir algún problema, nunca me ha ocurrido.

Cita de: Flipeador2016 en 29 Noviembre 2016, 02:32 AM
6) ¿como convierto entre una página de códigos a otra?, ¿cual me recomiendan usar y como?.
Estas dos funciones te pueden ayudar:
MultiByteToWideChar
WideCharToMultiByte
#897
Código (cpp) [Seleccionar]
virtual void Transferir(Cuenta, double) = 0;

Dentro de ICuenta estás utilizando una clase (Cuenta) que no ha sido declarada aun.
Querrías poner:
Código (cpp) [Seleccionar]
virtual void Transferir(ICuenta*, double) = 0;
Si es así, solo sería poner eso (teniendo en cuenta que debes poner o puntero o referencia (&).

Si realmente quieres utilizar Cuenta, entonces pon antes de ICuenta:
Código (cpp) [Seleccionar]
class Cuenta;

class ICuenta
{
std::string Nombre;
double Saldo;

public:
virtual void Extraer(double) = 0;
virtual void Depositar(double) = 0;
virtual void Transferir(Cuenta, double) = 0;
};

Así, el compilador sabe que existe esa clase (aunque no sepa nada de ella).
#898
No estoy seguro, pero como dice que requierepthread, prueba agregando -lpthread
#899
http://www.ditutor.com/numeros_complejos/multiplicacion_complejos.html

Ve número a número. Colocas el primero en variables (r, im, por ejemplo). Luego, lo multiplicas por el siguiente y lo almacenas en esas mismas variables. Y así por cada uno de los restantes. Que el producto quede siempre en esas variables. Y ya luego, las muestras.

De todos modos, no sé si entendí bien lo que hace tu programa.
Unos consejos importantes:
- Tabula el código.
- Separa las funciones por 1 salto de línea al menos.
- Utiliza la misma forma de nombrar las funciones (si las funciones empiezan por mayúscula, vale. Si empiezan por minúscula, así sea. Pero no mezcles nomenclaturas)
- Si una función void termina, no necesitas ponerle "return;" al final. Pero bueno, pónselo si quieres, solo comento.
#900
Programación C/C++ / Re: problema vectores c
27 Noviembre 2016, 14:57 PM
Y luego:
for(i=0; i<n; i++){
        for(j=1; j<=n; j++)

j<=n va a coger un valor fuera del rango. Querrías poner i<n-1 y j<n.