Foro Oficial De C++

Hola, estoy con un problema de Herencia que no se si tiene solución. Tengo una clase Combinacion de la cual extiendo 2 subclases CruceOX y CrucePX, ambas tienen implementado el metodo cruce. Lo que me quiero hacer es crear un objeto Combinacion c; y que este objeto haga c.cruce(); y de alguna forma poder decirle que ese cruce es de CruceOX o de CrucePX. No se si se entiende lo que quiero hacer o bien si es factible, básicamente la clase padre debería de implementar un hijo u otro.
 
Hola, estoy con un problema de Herencia que no se si tiene solución. Tengo una clase Combinacion de la cual extiendo 2 subclases CruceOX y CrucePX, ambas tienen implementado el metodo cruce. Lo que me quiero hacer es crear un objeto Combinacion c; y que este objeto haga c.cruce(); y de alguna forma poder decirle que ese cruce es de CruceOX o de CrucePX. No se si se entiende lo que quiero hacer o bien si es factible, básicamente la clase padre debería de implementar un hijo u otro.

Eso se resuelve implementando un factory para el objeto Combinacion.

Aqui puedes leer como funciona ese patrón: http://sourcemaking.com/design_patterns/factory_method/cpp/1
 
  • Me gusta
Reacciones: |Nc| Silop
De nuevo yo, tengo un problema con leer una matriz desde un archivo. Me carga mal los datos en la matriz del algoritmo.
la matriz es la siguiente:
Maquinas: 10
Tareas: 5
Mejor: 6100
54 83 15 71 77 36 53 38 27 87 76 91 14 29 12 77 32 87 68 94
79 3 11 99 56 70 99 60 5 56 3 61 73 75 47 14 21 86 5 77
16 89 49 15 89 45 60 23 57 64 7 1 63 41 63 47 26 75 77 40
66 58 31 68 78 91 13 59 49 85 85 9 39 41 56 40 54 77 51 31
58 56 20 85 53 35 53 41 69 13 86 72 8 49 47 87 58 18 68 28

la leo:
Código:
char lectura[200];
   std::stringstream ss;
   ss << "../../instancias/tai_" << cantidadTareas << "_" << cantidadMaquinas;
   std::string filename = ss.str();
   ifstream archivo(filename.c_str());
  
   matriz = (int **) malloc(cantidadTareas*sizeof(int*));
  
   for(int j=0; j<cantidadTareas; j++)
   {
     matriz[j]= (int *) malloc(cantidadMaquinas*sizeof(int));
   }
    
  
   for(int i = 0; i < 3; i++)
     archivo.getline(lectura, 200, '\n');
  
   for(int i = 0; i < cantidadMaquinas; i++)
   {
     for(int j = 0; j < cantidadTareas; j++)
     {
       archivo >> matriz[i][j];
     }
   }

y me carga en la matriz:
54 83 15 71 77 36 53 38 79 3 11 99 56 70 99 60 16 89 49 15
79 3 11 99 56 70 99 60 16 89 49 15 89 45 60 23 66 58 31 68
16 89 49 15 89 45 60 23 66 58 31 68 78 91 13 59 58 56 20 85
66 58 31 68 78 91 13 59 58 56 20 85 53 35 53 41 69 13 86 72
58 56 20 85 53 35 53 41 69 13 86 72 8 49 47 87 58 18 68 28

para leer la matriz uso:
Código:
for(int i = 0; i < cantidadMaquinas; i++)
    {
        for(int j = 0; j < cantidadTareas; j++)
        {
            std::cout << matriz[i][j] << " ";
        }
        std::cout << "\n";
    }

Alguna idea que podrá ser??
 
Impresión de un string al revés... de puro desparche...

Código:
#include <iostream>
#include <cstring>

using namespace std;

void Reverse (string s){
   int l = s.length();
  
   while (l >= 0)
     cout << s[--l];
}

int main(int argc, char** argv){

   Reverse("Stringini!");
   return 0;
}
 
  • Me gusta
Reacciones: Likibuay
Estoy intentando implementar este codigo pero la cadena proviene de un archivo de texto .txt y me da un error en el while de su consigo, no logro dar con el problema.

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>

FILE *archivo_remplazo;

void searchh(char fitxizen[100], char de[256], char por[256]){
   
    FILE *Fd;
   
    int cont=0, i, tmp1, tmp2, konta=0, j=1, g=0, y, u=0;
    char rrsss[256] = "", cadena[100]="";//archivo donde se va a aguardar los resultados de la busqueda
    char palabra20x[20]="";
    char pal[0], letra, *ap;
    char dee, porr;
   
    strcat(rrsss, "Remplazo.txt");
   
    Fd=fopen(fitxizen,"r");
   
    archivo_remplazo = fopen(rrsss, "w");
    fclose(archivo_remplazo);

    archivo_remplazo = fopen(rrsss, "a"); //guarda solo para ver   
   
    if (Fd==NULL) printf("Error abriendo el fichero");
    int c, centero2=0, ccc=0, cccc=0, ccccc=0;
   
    //definicion de variables
       
    while(!feof(Fd)){
        fscanf(Fd," %[^\n]",&cadena);
        ap=strstr(cadena,de);
        puts(ap);
        y=strlen(por);
       
        while(ap!=NULL){
            strcpy(ap,por);
            ap=strstr(ap,de);
        }
        puts(cadena);
        free(de);
        free(por);
    }
   
    fclose(archivo_remplazo);
    fclose(Fd);
    //reccc();
}

los datos provienen de este codigo

searchh("a.txt", "PROGRAMA", "MAIN");
 
saludos laneros, tengo una gran duda estoy tratando de crear una liberia sin declarar objeto, un ejemplo de una libreria declarando objeto seria

Código:
#include <Servo.h>

Servo miServo;
mi servo seria el objeto pero necesito crear una libreria de manera que no tenga que nombrar un objeto, si alguien sabe como se llaman estas librerias, asi yo busco un tutorial, un ejemplo de lo que necesito seria

Código:
#include <math.h>

void suma (){
math.sum(2, 4);
}

Como ven a math no tuve que declararle un objeto si no que la use directamente, alguien me podria decir cual es el nombre de este tipo de librerias. gracias
 
Hola , no entiendo como tener un atributo del tipo array de struct. Les dejo mis codigos. Ayuda por favor.Me da error.
------------------------------------------------------------------
classAntena.h

#ifndef CLASSANTENA_H_
#define CLASSANTENA_H_


class Antena{

private:
Celular celulares;

public:
void incrementarLlamadasRealizadas(int);
void incrementarLlamadasRecibidas(int);
void incrementarDuracionLlamadas(int,int);
void modificarInicioLlamada(int,int);
void modificarFinLlamada(int,int);
int devolverLlamadasRealizadas(int);
int devolverLlamadasRecibidas(int);
int devolverDuracionLlamadas(int);
int devolverNumeroCelular(int);

};

#endif /* CLASSANTENA_H_ */

--------------------------------------------------------------
classAntena.cpp

#include "classAntena.h"

struct Celular{

int numeroCelular;
int cantLlamadasRealizadas;
int cantLlamadasRecibidas;
int duracionLlamadas;
int inicioLlamada;
int finLlamada;
};

void Antena::incrementarLlamadasRealizadas(int posCel){

celulares[posCel].cantLlamadasRealizadas++;
}

void Antena::incrementarLlamadasRecibidas(int posCel){

celulares[posCel].cantLlamadasRecibidas++;
}

void Antena::incrementarDuracionLlamadas(int duracionLlamada, int posCel){

celulares[posCel].duracionLlamadas += duracionLlamada;
}

void Antena::modificarInicioLlamada(int comienzoDeLlamada, int posCel){

celulares[posCel].inicioLlamada = comienzoDeLlamada;
}

void Antena::modificarFinLlamada(int finDeLlamada, int posCel){

celulares[posCel].finLlamada = finDeLlamada;
int duracionLlamada = celulares[posCel].finLlamada - celulares[posCel].inicioLlamada;
incrementarDuracionLlamadas(duracionLlamada, posCel);
}

int Antena::devolverLlamadasRealizadas(int posCel){

return celulares[posCel].cantLlamadasRealizadas;
}

int Antena::devolverLlamadasRecibidas(int posCel){

return celulares[posCel].cantLlamadasRecibidas;
}

int Antena::devolverDuracionLlamadas(int posCel){

return celulares[posCel].duracionLlamadas;
}

int Antena::devolverNumeroCelular(int posCel){

return celulares[posCel].numeroCelular;
}
 
qué error?

Si ya está manejando clases, por qué quiere utilizar estructuras? No le parece
que estaría mejor hacer una clase Celular?

Saludos!
 
saludos laneros, tengo una gran duda estoy tratando de crear una liberia sin declarar objeto, un ejemplo de una libreria declarando objeto seria

Código:
#include <Servo.h>

Servo miServo;
mi servo seria el objeto pero necesito crear una libreria de manera que no tenga que nombrar un objeto, si alguien sabe como se llaman estas librerias, asi yo busco un tutorial, un ejemplo de lo que necesito seria

Código:
#include <math.h>

void suma (){
math.sum(2, 4);
}

Como ven a math no tuve que declararle un objeto si no que la use directamente, alguien me podria decir cual es el nombre de este tipo de librerias. gracias

Si la libreria es tuya debes incluirla entre comillas "" y no con <>

De todas formas es bastante confuso lo que preguntas, quizas debas leer algo mas sobre C/C++

Salu2
 
Última edición:

Los últimos temas