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

#771
Programación C/C++ / Re: Llenado de Matriz
9 Mayo 2017, 15:19 PM
Ya entiendo, creo. La tabla debe tener dos unidades del mismo carácter en cualquier posición. Es decir: habrá un número tal de caracteres diferentes como la mitad de casillas de dicha tabla.
Pues deberás encontrar una forma de marcar los caracteres que han salido dos veces, para no incluirlos más.
Para darte ideas: usar una estructura que guarde el carácter y cuantas veces ha salido; usar un array adicional con correspondencia al de caracteres que indique cuantas veces ha salido un carácter; usar una lista enlazada donde se eliminen los caracteres que han salido dos veces.

#772
Programación C/C++ / Re: Llenado de Matriz
9 Mayo 2017, 09:28 AM
No entiendo la pregunta.
¿Quieres encontrar dos caracteres iguales que haya en la tabla?
#773
No, deberías, oara eso, montarte tu propia función de tratamiento de errores según errno.
#774
No deben existir templates para operadores. El hecho es que una sobrecarga de operadores, a vistas de código intermedio, son funciones y no tipos de datos. Los templates existen para adaptar tipos de datos a funciones y hacerlas genéricas. Como tu idea es cambiar a qué función llamar según el operador que quieres pasar la única forma que se me ocurre es mediante el preprocesador.
#775
Si miras los errores que lanza el compilador, para el código que tienes, dice:
cpp.cpp:10:47: error: 'Num Num::operator+(const Num&, const Num&)' must take either zero or one argument
    Num operator +(const Num &p1,const Num &p2)

Esta sobrecarga, dice el compilador, solo puede tener ningún o un solo argumento. A partir de aquí, una búsqueda rápida por internet te lleva al código correcto para estas sobrecargas.


De todas formas no creo que te deje hacer lo que quieres porqué las plantillas son para adaptar las variables y lo que buscas es adaptar el nombre de un método.
#776
Tienes hecha mal la sobrecarga.
A parte de eso puedes hacer uso de algo más primitivo que las plantillas: el preprocesador.

Un ejemplo de cómo hacerlo sería así:
Código (c++) [Seleccionar]
#include <iostream>

using namespace std;

class Num
{
public:
    double a, b;

    /* Dentro del mismo objeto, o en el archivo de implementación
     * preparo una macro que contendrá el código al que solo deberé
     * pasarle el operador que quiero. Pero cuidado pues el operador
     * deberá ser compatible. Solo sirve para ahorrar código.
     */

    #define SET_OP(op)                                                 \
    Num operator op(const Num &p)                                      \
    {                                                                  \
        Num erg;                                                       \
        erg.a = a op p.a;                                              \
        erg.b = b op p.b;                                              \
        return erg;                                                    \
    }
   
    // Hora de usar la macro con cada uno de los operadores.

    SET_OP(+);
    SET_OP(-);
    SET_OP(*);
    SET_OP(/);

    /* Elimino el símbolo de la macro por si quiero usarla más
     * adelnate con otros operadores u otro tipo de dato.
     */
     
    #undef SET_OP
};

int main()
{
    Num num1;
num1.a=1;
num1.b=75;

    Num num2;
num2.a=150;
num2.b=175;

    Num num1und2 = num1 + num2; // * Modificando acá el operador que cambie arriba la operación

    cout << "num1und2 " << "a: " << num1und2.a << ", b: " << num1und2.b << endl;

    return 0;
}
#777
Cuidado con dimensionar arrays a partir de variables,  eso es una dependencia del compilador. El estándar dice que solo se pueden dimensionar con constantes. Para dimensionar con variables debe de forma dinámica.
#778
Programación C/C++ / Re: Listas en C/C++
7 Mayo 2017, 00:45 AM
Tal vez te interese usar la función de biblioteca qsort.
#779
Debes estar detrás de C11 así que gets no existe.
Por lo demás ficha no es un array, pero lo tratas como tal.
#780
C provée un mecanismo para el control de errores. Como sabes las funciones devuelven información con de lo que han hecho o un código de error si no han conseguido realizar un trabajo. Además hay una variable local llamada errno que indica el último fallo ocurrido y por eso siempre debes comprobarla después de llamar a la función que te interesa controlar. Hay diferentes funciones para ello. Te recomiendo seguir el siguiente artículo: https://www.tutorialspoint.com/cprogramming/c_error_handling.htm