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;
}