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

#1
Programación C/C++ / Re: Sobrecarga del operador +
26 Diciembre 2021, 06:57 AM
Entiendo. Me olía que por ahí iban los tiros. Ocurren tantas cosas que uno llega a perder el hilo de lo que va sucediendo  ;D ;D


Gracias
#2
Programación C/C++ / Sobrecarga del operador +
25 Diciembre 2021, 20:58 PM
Buenas, chavales. Feliz Navidad y aniversario de Newton.

Estaba yo haciendo prácticas de C++ (le voy a dar una oportunidad) y no llego a entender del todo porqué saca unos resultados tan raros.

El código:
Código (cpp) [Seleccionar]
#include <iostream>

class vector {
private:
    int *n;
    int tamano;

public:
    vector(int tamano = 5);
    ~vector();
    void visualizar();
    void llenar();
    vector operator + (vector &);
    int& operator[] (int i) { return n[i]; };
};

vector::vector(int t):tamano(t) {
    n = new int[tamano];
    llenar();
}

vector::~vector() {
    delete[] n;
}

vector vector::operator + (vector &v) {
    vector resultado(tamano);
    for(int i=0; i<tamano; ++i) {
        resultado[i] = n[i] + v[i];
    }
    return resultado;
}

void vector::visualizar() {
    for(int i=0; i<tamano; ++i) {
        std::cout << n[i] << '\t';
    }
    std::cout << std::endl;
}

void vector::llenar() {
    for(int i=0; i<tamano; ++i) {
        n[i] = rand() % 10;
    }
}

int main() {
    vector a, b;
    a.visualizar();
    b.visualizar();
   
    vector c;
    c = a + b;
    c.visualizar();
   
    vector d = a + b;
    d.visualizar();

    return 0;
}


El resultado:
1       7       4       0       9
4       8       8       2       4
1577824 0       1573200 0       13
5       15      12      2       13


Es decir: porqué 'c' no y 'd' sí.
#3
No te acuerdas cómo funcionan las cadenas en C.
Acuérdate del carácter terminal y que en una cadena construida a mano, como en quitar_espacios, C no te lo va a incluir automáticamente.

Después explícame qué haces en la función palindromo. No lo que deberías hacer, sino lo qué haces.
#4
Programación C/C++ / Re: Ayuda con función setw()
2 Diciembre 2021, 19:49 PM
Y da formato al código. Si vas a presentarlo a alguien, aún sea pidiendo ayuda, formatea el código. Da pereza, es un bloque sin separaciones, sin indexado.
#5
Comparas y haces la pregunta:
¿Diez es menor que diez?
El programa te responde: No, por lo que no hago el cuerpo del if y ejecuto directamente pila.pop();
La siguiente iteración comparas y preguntas:
¿Tres es menor que diez?
El programa te responde: Sí, ejecuto el cuerpo del if y escribo en 'menor' el valor actual del top de la pila; después borro ese número del top.
#6
Te lo explico para el ejemplo de 5x5.
Dije:
Citar¿Qué podrían tener en común los pares
(5, 1)
(4, 2)
(3, 3)
(2, 4)
(1, 5)?

Si te das cuenta:
5+1 = 6
4+2 = 6
3+3 = 6
2+4 = 6
1+5 = 6

Sabiendo que tu vas desde 1 hasta 5, siendo este caso filas = 5
en tu if, dentro del for de j debería poner:

if(i+j == filas+1) {
    printf("** ");
} else {
    printf("%02d ", j);
}
#7
Sabiendo que los asteriscos van se colocan en (hablamos de una matriz de 5x5):
Fila 1, columna 5;
Fila 2, columna 4;
Fila 3, columna 3;
Fila 4, columna 2;
Fila 5, columna 1.

¿Qué podrían tener en común los pares
(5, 1)
(4, 2)
(3, 3)
(2, 4)
(1, 5)?

Esa respuesta es la que necesita el if para dibujar el número o los asteriscos.
#8
Te recomiendo cambiar gets por fgets.

Si no quieres el salto de línea lo mejor es que lo busques y lo borres.

Una solución podría ser:
#include <string.h> // strchr

// ...

fgets(buffer, MAX_LENGTH, stdin);

// Miro si se capturó el salto de línea con fgets.
char *c = strchr(buffer, '\n');
if(c) {
   // Si se capturó transformo el salto de línea en fin de cadena.
   *c = '\0';
} else {
   // No se capturó, pues aprovecho y borro lo que haya quedado en stdin.
   while(getchar()!='\n');
}





Editado: quitando la parte que recomendaba cambiar de foro por estar mal ubicado.
#9
Programación C/C++ / Re: Usar qsort para guardar
31 Octubre 2021, 02:47 AM
Para hacerlo con qsort una forma rápida que veo sería hacer un struct con una pareja de datos de cada array y después hacer un array con ellos.

algo así:

struct par {
   int code;
   char color[10]
};


Despues generas un array de 3 pares con ese struct, metes los datos colores y code, cada uno en la posición que te interese, haces dos funciones de comparación para qsort, una que ordene por code y la otra por color y ya lo tienes.
#10
Esto me recuerda un proyecto llamado CHIP-8. Un chip virtual con sus especificaciones y con juegos diseñados para él.

Un poco de info sobre ese chip: https://github.com/mattmikolay/chip-8/wiki/