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 - MAFUS

#1381
Es cierto que GeSHi es poco descriptivo y, sobre todo para la gente nueva que entra, no se pondrá a jugar con cada una de las opciones de formato antes de postear su duda así que van a dejar el código en texto llano. Yo también lo he hecho.

Por eso en vez de tener el título GeSHi, la lista desplegable debería titularse 'elige tu lenguaje...' o 'Código en lenguaje...'; o algo que a primera vista ya diera a entender que eso sirve para que el código que va dentro se va a formatear en el lenguaje que se elija.
#1382
Programación C/C++ / Re: Struct con puntero
13 Febrero 2016, 23:32 PM
Sobre el libro que pides tienes un buen paper en esta dirección:
www.cimat.mx/~alram/cpa/pointersC.pdf
#1383
C no tiene capacidad para saber de que tipo es una variable, sólo le interesa lis bytes que ocupa. El elegir el tipo ya lo has hecho pasando a la función el dato con el bool y es el que debes usar para inicializar.
Para inivializar con bools el operador ternario va muy bien.

nave.capacidad = bando? 1500 : 2000;
#1384
Es del antivirus. Debes detenerlo, pausar-lo o poner en la lista de excepción a tu programa.
#1385
Programación C/C++ / Re: Archivos bINARIOS c++
8 Febrero 2016, 21:28 PM
Ahora estaría bien que, para el resto de la gente con un problema similar al tuyo, expusieras el código al que has llegado.
#1386
Pues que tratas una tabla como un array unidimensional y que tratas un array unidimensional como un valor escalar.
#1387
Podrías probar de usar el algoritmo de Euclides que dice algo así:
1. Si el resto de la división entre el mayor y el menor es 0, el MCD es el menor.
2. Sino, realizar de nuevo la división entre el menor y el resto de la división anterior.
3. Repetir todo hasta que el punto 1 se cumpla.
#1388
En tu nueva versión hay un fallo de lógica que en la anterior estaba bien:
if(((Numero2 % PosDivj) == 0) && (PosDivi == PosDivj))

La versión que ahora tienes no cumple su trabajo:
if((Numero2%PosDivj)==0)
#1389
Los incrementos sin asignación:
PosDivj++;
PosDivi++;


El compilador te debe haber avisado de que

c.c:16:24: warning: operation on 'PosDivj' may be undefined [-Wsequence-point]
                 PosDivj=PosDivj++;

c.c:19:16: warning: operation on 'PosDivi' may be undefined [-Wsequence-point]
         PosDivi=PosDivi++;


La función debe ser algo así
int MCD(Numero1, Numero2) {
    int PosDivi = 1;
    int PosDivj;
    int MaxCD = 0;
   
    while(PosDivi<=Numero1) {
        if((Numero1 % PosDivi) == 0) {
            PosDivj = 1;
            while(PosDivj <= Numero2) {
                if(((Numero2 % PosDivj) == 0) && (PosDivi == PosDivj)) {
                    MaxCD = PosDivi;
                }
                PosDivj++;
            }
        }
        PosDivi++;
    }
    return MaxCD;
}

#1390
C no controla los límites de los arrays y deja escribir en cualquier parte de la memoria, deja esa tarea al programador; parte de su velocidad viene de que no realiza estos chequeos.
Ahora bien, puede haber compiladores que hagan esta comprobación,  pero esto ya es funcionalidad añadida.
El sistema operativo también será tu perro guardián impidiendo que puedasbescribir en zonas de memoria diferentes a la memoria dedatos que ha asignado a tu programa.