Aiuto problema catalogo (categoria librerie)

Sono una novizia nella comunity, se inserisco questo codice nel compilatore non compila, ho provato a togliere il main ecc ma non va. Nel grader suggerisce di passare solo id come dato nelle funzioni, ma facendo così non saprei come farlo andare. Sono riuscita a fare questo, mettendo come input i fogli di testo scaricati gli output sono corretti, cosa posso fare?

#include <iostream>
#include <fstream>
#include <map>
using namespace std;

void aggiungi(int id, pair<int, int> elenco[]);
void togli(int id, pair<int, int> elenco[], int Q);
int conta(int id, pair<int, int> elenco[], int Q);

int main() {
    ios::sync_with_stdio(false);
    fstream a;
    fstream b;
    a.open("catalogo.input0.txt", ios::in);
    b.open("output.txt", ios::out);
    int Q;
    a >> Q;
    pair<int, int> libri[Q];
    for(int i = 0; i < Q; i++){
        libri[i].first = -1;
        libri[i].second = 0;
    }
    for(int i = 0; i < Q; i++){
        char t;
        int id;
        a >> t >> id;

        if(t == 'a')
            aggiungi(id, libri);
        else if (t == 't')
            togli(id, libri, Q);
        else if (t == 'c')
            b << conta(id, libri, Q) << endl;
    }
    return 0;
}

void aggiungi(int id, pair<int, int> elenco[]){
    int i = 0;
    bool fatto = false;
    while(elenco[i].first != -1){
        i++;
    }
    for(int j = 0; j < i; j++)
        if(elenco[j].first == id){
            elenco[j].second ++;
            fatto = true;
        }
    if(fatto == false){
        elenco[i].first = id;
        elenco[i].second++;
    }
}

void togli(int id, pair<int, int> elenco[], int Q){
    for(int i = 0; i < Q; i++)
        if(elenco[i].first == id){
            elenco[i].second--;
            return;
        }
}

int conta(int id, pair<int, int> elenco[], int Q){
    bool trovato = false;
    for(int i = 0; i < Q; i++)
        if(elenco[i].first == id){
            return elenco[i].second;
            trovato = true;
        }
    if(trovato == false)
        return 0;
}

Ciao, questo problema usa i grader e di conseguenza devi necessariamente attenerti alle definizioni che ti è richiesto implementare, ciò significa che anche i parametri delle funzioni richieste devono essere esattamente quelli specificati nel testo. Qui trovi una guida su come funzionano i grader.

Nel tuo caso dovresti dichiarare quell’array libri come globale in modo da poterlo usare nelle altre tre funzioni. Prova a convertire il codice che hai postato in modo che sia compatibile con il grader e successivamente (quando avrai notato che tale implementazione non ti permette di ottenere il punteggio massimo (spoiler)) puoi provare a pensare ad una soluzione più efficiente.

3 Mi Piace