0

Estaba creando un programa, y cuando quise separar las funciones y ponerlas en una librería para que mi main quede más limpio, me surgió este error.

c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\Pepool17\AppData\Local\Temp\ccscKdt0.o:main.cpp:(.text+0x76): undefined reference to `votos(int*, char**, char**)'

Supongo que es un problema de enlazado, pero no tengo idea de como solucionarlo, estado viendo en otros post y nada me a funcionado.

Este es el código del deber.h

#ifndef DEBER_H_INCLUDED
#define DEBER_H_INCLUDED

int *diez_porciento(int arr[]);
char *obtener_ganador(char *candidatos[],int votos[],int maximo );
void votos(int personas[], char *candidatos[], char *provincias[]);

#endif

Este es el código del deber.cpp

#include <iostream>
#include <random>
#include <algorithm>
#include <string.h>
#include "deber.h"

using namespace std;


int *diez_porciento(int arr[]){
    int len_arr = 3;
    for(int i=0; i< len_arr ; i++){
        arr[i] *= 0.1;
    }
    return arr;
}

char *obtener_ganador(char *candidatos[],int votos[],int maximo ){
    int x = 0 ;
    for(int i=0; i<4; i++){ //La llegada se cambia dependiendo de la longitud del array votos
        if (votos[i] == maximo){
            x = i; break;
        }else{
            continue;
        }
    }
    return candidatos[x];
}


void votos(int personas[], char *candidatos[], char *provincias[]){
    
    int votos[3];

    for (int i=0; i < 3; i++){  //recorre toda la lista de personas

        int A=0 ,B=0 ,C=0 ,D=0; float porcentaje=0;

        for (int j=0 ; j <= personas[i]; j++){  //bucle para cada persona de la provincia

            int aleatorio = 0;
            aleatorio = rand()%4; //La llegada se cambia dependiendo de la longitud del array candidatos
            if (candidatos[aleatorio] == candidatos[0]){
                A+=1;
            }else if(candidatos[aleatorio] == candidatos[1]){
                B+=1;
            }else if(candidatos[aleatorio] == candidatos[2]){
                C+=1;
            }else{
                D+=1;
            }
            cout<<A<<" "<<B<<" "<<C<<" "<<D<<endl;
        }
        votos[0] = A; votos[1] = B; votos[2] = C; votos[3] = D;
        int max = *max_element(votos,votos+4);
        cout <<"El maximo es "<<max<<endl;
        porcentaje = ( max * 100 )/personas[i];
        
        if(porcentaje>40){
            cout<<"El ganador de la provincia "<<provincias[i]<<" es el candidato "<< obtener_ganador(candidatos, votos, max )<<endl;
        }else{
            cout<<"No hay ganador, se va a segunda vuelta"<<endl;
        }
        
    }
}

Y este es el código del main.cpp

#include <iostream>
#include <random>
#include <algorithm>
#include "deber.h"
using namespace std;


int main(){
    char *candidatos[4] = {"A","B","C","D"};
    char *provincias[3] = {"Pichincha", "Cuenca", "Cotopaxi"};
    int personas[3] = {100, 100, 100};
    
    votos(personas, candidatos, provincias);
    
    
    return 0;
} 

Si alguien pudiera ayudarme estaría muy agradecido.

  • ¿Responde esto a tu pregunta? [Simbolo externo sin resolver ¿Qué he hecho mal?](https://es.stackoverflow.com/questions/65557/simbolo-externo-sin-resolver-qu%c3%a9-he-hecho-mal) – Juanjo Feb 07 '21 at 20:46
  • Puedes compartir el comando con el que compilas? – Pablochaches Feb 09 '21 at 02:00

0 Answers0