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

#831
¡Buenas!


   s("%d",&max);
   for ( max = 0; max<tope; max++);

   {
        tope--;
       system ("cls");

       p("LOS ELIMENTOS HAN SIDO ELIMINADOS");

       getch();

   }


Estas leyendo el numero de datos que quieres eliminar, despues descartas ese valor para usar la variable que lo almacena como contador en un bucle que no hace nada (inmediatamente despues del for tienes ; ), e inmediatamente despues declaras un bloque que decrementa el tope y realiza algunas instrucciones...

Repasa esta parte a ver si encuentras el (los) errores.

¡Saludos!
#832
¡Buenas!

Un problema que puede surgir al utilizar esos metodos es que se sobrepase la longitud de la cadena que almacena el resultado. Si no puedes utilizar funciones de libreria, por ejemplo para asignar una cadena que pueda tener la longitud total, puedes evitar el error indicando en la lista de parametros la longitud maxima de la cadena que contendra el resultado de la concatenacion, asi podras ir comprobando que no la sobrepasas, o si llegas al limite, dejar de añadir caracteres.

¡Saludos!
#833
Programación C/C++ / Re: Error en arbol
4 Noviembre 2011, 06:01 AM
¡Buenas!

Cierto, yo tampoco lo habia visto. :D, acuerdate de crear un destructor para liberar la memoria dinamicamente asignada.

¡Saludos!
#834
¡Buenas!

Eso lo habia visto yo aplicado a operaciones matematicas:

Infija: a + b
Prefija: + a b
postfija: a b +

Para pasar de una a otra se utilizan colas y recursividad, pero la verdad es que no he profundizado mucho (por no decir nada) en el tema.

¡Saludos!
#835
¡Buenas!

Otro detalle, si desconoces el tamaño del registro, poco podras hacer con fseek. Tendras que trabajar con ficheros binarios, con registros del mismo tamaño, para poder acceder a ellos de forma directa, y no sobre ficheros de texto.

¡Saludos!
#836
¡Buenas!

Cuando el operador / ve que sus dos valores son enteros, realiza la operacion entre enteros (te devolvera el cociente de la division euclidea), si quieres que realice la division entre float, alguno de sus operandos debe ser de ese tipo, lo que consigues mediante cast, o si el numero es una constante, añadiendo un punto justo despues del numero.

Las siguientes operaciones son equivalentes:


1 / 2 = 0 ( 1 = 2 * 0 + 1, por eso el resultado es cero)

((float) 1) / 2 = 0.5

1 / ((float)2) = 0.5;

1. / 2 = 0.5

1 / 2. = 0.5

1. / 2. = 0.5


Lo mismo sucede en el resto de operaciones y expresiones, los valores se convierten al tipo de dato capaz de almacenar cualquiera de los valores que aparecen en la expresion. Asi, al haber un valor float en las anteriores operaciones, el otro se convierte automaticamente a float para poder realizar la division.

Si en una expresion mezclas int, char y float, al final, el resultado sera un float, y en algun momento, los valores que forman parte de la expresion seran convertidos a float para realizar las operaciones. Lo mismo sucedera si mezclas char e int, el resultado sera un int, y en algun momento dejara de haber elementos char en al expresion, porque seran convertidos a int.

Puedes buscar informacion sobre la promocion (creo que se llamaba asi) entre los distintos tipos de dato. Si estas informado te encontraras con menos sorpresas inesperadas.

¡Saludos!
#837
¡Buenas!

Creo que se puede hacer mucho mas corto añadiendo dos variables mas, inf y sup que indiquen el infimo y supremo del conjunto resultante, si existe:

//Este programa calcula la interseccion de dos segmentos

#include<stdio.h>
#include<stdlib.h>

int main (void){

    float a,b,c,d,inf,sup;

    printf("\n Introduzca el primer numero del primer segmento");
    scanf ("%f",&a);

    printf("\n Introduzca el segundo numero del primer segmento");
    scanf ("%f",&b);

    printf("\n Introduzca el primer numero del segundo segmento");
    scanf ("%f",&c);

    printf("\n Introduzca el segundo numero del segundo segmento");
    scanf ("%f",&d);
    getchar(); // leemos el salto de linea que queda en stdin

    //comprobamos que los intervalos esten bien definidos (a <= b y c <=d)
    if(a > b || c > d)
    {
        printf("Los intervalos no estan bien definidos.\n");
    }
    else
    {
        //si el supremo de uno de los intervalos es menor que el infimo del otro
        if(b < c || d < a)
        {
            //el conjunto es vacio
            printf("Interseccion vacia.\n");
        }
        else
        {
            inf = a; //probamos con uno de los valores candidatos a infimo
            if(c > a) //y si no es el mayor de los infimos, lo cambiamos
                inf = c;

            sup = b; //probamos candidato a supremo
            if(d < b) //si no es el minimo de los dos supremos, lo cambiamos
                sup = d;

            printf("Interseccion: %f , %f\n",inf,sup);
        }
    }

    printf("Pulsar intro para terminar...");
    //leemos hasta que se wencuentre intro
    while(getchar() != '\n');

    return 0;
}


Espero que entiendas la logica del programa, sino, pregunta.
Se puede acortar todavia mas si conoces el operador condicional ternario.

¡Saludos!
#838
Por mi, que de una vez por todas lleven toda su vida en catalan, toda su enseñanza en catalan, todos sus negocios en catalan, todo lo que quieran en catalan. Eso si, cuando salgan de su zulo, que no pretendan que la gente hable en catalan. Si no saben castellano lo que se les va a descojonar la gente va a ser algo grandioso.

Al final por cabezoneria terminaran aislados del resto del mundo.

¡Saludos!
#839
¡Buenas!

Si os interesa el tema, he aqui un documental que me parecio bastante interesante:La paradoja de Hawking

No se de que año es, ahora lo miro, pero no creo que sea demasiado antiguo.

¡Saludos!

Por lo que acabo de leer, en 2004 fue cuando dijo que podria estar equibocado con la paradoja de la informacion, por lo que creo que el documental pudo haber sido hecho hacia el 2005.

¡Saludos de nuevo!
#840
Foro Libre / Re: Halloween
26 Octubre 2011, 20:23 PM
¡Buenas!

Pues no. No celebro Halloween.

Personalmente, me parece una imbecilidad y una invasion de las tradiciones que conozco. Tambien me parece que es un lavada de cerebro hacia nuestros chavales por parte de la industria y cultura anglosajona. En esta ultima, la gente sabra porque lo celebra, cual es el origen de la fiesta y en consecuencia el porque de toda la parafernalia que implica, pero preguntale tu a un español cual es la causa de que se celebre esta fiesta y la respuesta mas comun sera un encojimiento de hombros y un "no se".

Yo por mi parte, celebro la vispera de todos los santos, es decir, como al dia siguiente es la fiesta de todos los santos y no hay que hacer absolutamente nada (bueno, nunca resisto la tentacion de comerme un puñado de huesos de santo), el dia de antes, procuro pillarme una buena borrachera con los amigos que me acompañen para asi poder estar al dia siguiente con un resacon del carajo, y de paso, aprobechamos para echarnos unas buenas risas de toda esa gente que sale por ahi con pintas, sin tener ni idea de porque estan haciendo lo que hacen.

¡Saludos!