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 - do-while

#601
¡¡¡Yuju!!!

Yo creo que los mas melancolicos echabamos ya de menor el rebobinar cintas con lapices... lo intente con un CD pero, la verdad, no es lo mismo...

¡Saludos!
#602
Cada dia entiendo mas porque la llaman ley de inseguridad ciudadana.

A partir de ahora, cada vez que un policia zurre a alguien, va a tener mayor impunidad, ya que ni se le podra filmar ni fotografiar cometiendo delitos...
#603
Cita de: zonahurbana en 17 Octubre 2012, 06:29 AM
Duda #4. Cuando declaro variables de un tipo y el usuario ingresa datos de otro tipo, en muchas ocasiones se entra en un bucle infinito, lo que normalmente no ocurriría si el usuario ingresara lo que se le solicita. O también ocurre esto cuando el usuario ingresa más contenido del permitido. ¿Cómo podría yo asegurar la entrada correcta de datos? Por ejemplo, usar isalpha o isdigit no tiene sentido en este caso, ya que esa comprobación sólo la podría hacer yo luego de que ya se ha ejecutado el cin>> (¿O sí es posible usarlos sobre el valor que se está tratando de ingresar justamente antes de almacenarlo?).

Tendras distintas opciones dependiendo del lenguaje:

C: scanf devuelve un valor indicando cuantos de los datos especificados se han leido. Devolvera un valor menor al numero de elementos de la lista de parametros que debe leer si: hay un error de lectura, el parametro no corresponde con el especificador de tipo o se encuentra EOF.

Por lo tanto, si quieres asegurarte de que los datos que lees son correctos, te recomiendo leer los datos de uno en uno y comprobar si se han leido de forma correcta comprobando el valor devuelto por scanf. Por ejemplo:

int entero,lector;

while(!scanf("%d",&entero))
{
    //se ha producido un error en la lectura por alguna de las razones anteriores
    //terminamos de leer los datos que queden en la entrada para la siguiente lectura
    while((lector = getchar()) != '\n' && lector != EOF);
}
//terminamos de leer los datos que queden en la entrada para la siguiente lectura
while((lector = getchar()) != '\n' && lector != EOF);


C++: El operador >> activara el failbit, si el tipo leido no coincide con el tipo del parametro o si hay algun tipo de error de lectura:
Código (cpp) [Seleccionar]

    int numero;

    while((cin >> numero).fail()) //si el leido no coincide con el del parametro o hay algun error
    {
        //resetamos los bits de error
        cin.clear();

        //terminamos de leer los datos que quedan en la entrada para poder realizar la siguiente lectura
        while(cin.get() != '\n' && !cin.eof());
    }
    //terminamos de leer los datos que quedan en la entrada para poder realizar la siguiente lectura
    while(cin.get() != '\n' && !cin.eof());


¡Saludos!
#604
¡Buenas!

No se que precision te hace falta, ni que tamaño de datos estas utilizando.

Siempre puedes recurrir a utilizar por ejemplo una cantidad fija de decimales. Asi cada elemento de la matriz lo puedes multiplicar por ejemplo por 10 y quedarte con la parte entera (transformas los elementos de la matriz en ints (bij) = 10 * aij. Cada elemento del vector lo multiplicas tambien por 10 vi = 10 * vi, realizas la operaciones con los valores enteros y al terminar tendras que dividir por cien cada elemento del vecto para recuperar los datos de tipo float. La matriz la puedes guardar con valores enteros (suponiendo que sus valores sean constantes), y asi solo tendras que realizar 2n operaciones de float, con n la dimension del espacio que manejes, en lugar del monton de operaciones que realizabas antes...

Siempre puedes utilizar mas decimales, pero ten en cuenta que si multiplicas el vector y la matriz por 100, estaras tratando con valores que son 10000 veces superiores a lo que deberian ser, por lo tanto corres el peligro de salirte del rango de los enteros segun lo grandes que sean los valores que manejas...

¡Saludos!
#605
¿Añadiendo un caracter como miembro del struct e inicalizandolo con un salto de linea?

¿Escribiendo en el archivo un caracter salto de linea despues de escribir el struct?

De todas formas, asgurate de que si vas a leer o escribir en un fichero que maneja otro programa, lo hagas con datos del mismo tamaño.

¡Saludos!
#606
¡buenas!

De hecho el que empieza deberia de perder siempre:

Pierded el que coge la ultima. (Hay 17 fichas)
Gana el que coger la penultima. (Reducimos a 16 fichas)
Entre una jugada y la.siguente siempre se pueden suma 4 fichas
Si el segundo jugador conoce las reglas siempre cogera la 16° ficha y perdera el.que empieza.

sibquieres dar una oportunidad al que empieza añade una ficha, o aumenta a 4 el numero maximo de fichas que se puedan coger. Asi si el que empieza conoce el algoritmo para ganar podra hacerlo y sino, es mas que posible que pierda.

¡saludos!
#607
No hay nada que corregir. Lo unico que tienes que hacer es leer los registros con la segunda aplicacion. Eso si, asegurate de compilar tambien el programa que lee el fichero con el mismo compilador que el que lo crea, asi te aseguras de que los tamaños de los datos y la alineacion de los campos del struct sean los mismos.

¡Saludos!
#608
Cita de: Xedrox en 13 Octubre 2012, 07:49 AM
1) Como puedo poner el salto de linea? Siempre me sale todo seguido, y necesito el salto de linea porque asi lo va leer otra aplicacion. Asi como esta ahora genera un registro a continuacion del otro, y con '\n' no funciona.

Si dentro de la cadena del struct pones un salto de linea y abres el fichero con un editor de texto, el salto de linea estara ahi.

Si quieres insertar un salto de linea despues de cada registro, tendras que usar evidentemente un caracter cuyo valor sea un salto de linea, y escribirlo en el fichero convirtiendolo a una cadena.

De todas todas tiene que funcionar.

Cita de: Xedrox en 13 Octubre 2012, 07:49 AM
2) Cuando abro el archivo con notepad, veo caracteres binarios al final del registro :S, no se de donde salen.

Como estas utilizando un fichero binario, escribes todo el bloque de memoria del struct, de ahi salen los datos que no quieres que salgan, de las posiciones no inicalizadas del vector de caracteres.

Mas informacion, tambien se añadiran (posiblemente) bytes intermedios y al final segun la alineacion entre campos que maneje tu compilador.

Y te sigo diciendo lo mismo, si quieres ver la informacion "bonita" con tu editor de texto, tendras que dar salida con formato (modo texto) a los datos, sino, si manejas bloques de memoria porque te hace falta utilizar ficheros binarios, no pretendas que la informacion quede "bonita".

¡Saludos!
#609
¡Buenas!

Para lo que quieres hacer tendras que usar archivos de texto, no binarios.

¡Saludos!
#610
Lee bien, sobre todo loque esta entre parentesis, y luego me cuentas.30.000 = 20% de las ganacias que han obtenido en el torneo. Aun les quedan las cuatro quintas partes: 120.000...

A mi que no me digan que eso no sale rentable...