#include <vector>
using namespace std;
long long titles[200000];
int number[200000];
int T,N;
for(int i=0;i<200000;i++) {
titles[i]=0;
number[i]=0;
}
void aggiungi(long long int id) {
bool exist;
if(T==0) {
T+=1;
titles[0]=id;
number[0]=1;
}
else {
exist=false;
for(int i=0;i<T;i++) {
if(id==titles[i]) {
number[i]+=1;
exist=true;
}
}
if(!exist) {
titles[T]=id;
number[T]=1;
T+=1;
}
}
}
void togli(long long int id) {
for(int i=0;i<T;i++) {
if(id==titles[i]) {
number[i]-=1;
}
}
}
int conta(long long int id) {
bool exist;
exist=false;
for(int i=0;i<T;i++) {
if(titles[i]==id) {
return number[i];
exist=true;
}
}
if(!exist) {
return 0;
}
}
capisco che questo sia un problema risolto con un grader ma non capisco come posso fare il problema in altri modi, eppure la piattaforma mi da continuamente errori di compilazione:
error: expected unqualified-id before ‘for’
perciò non capisco come posso risolvere questo problema.
Primo, questo for a cosa serve? Il programma non accede mai a delle posizioni del vettore se non sono state scritte, quindi non serve inizializzare ogni elemento a 0.
Secondo, T deve essere inizializzata = 0 altrimenti il codice non funziona.
Oltre a questi ci sono altre cose che potrebbero essere rimosse per aumentare la leggibilità, ma non dovrebbero causare problemi all’esecuzione.
Riprova risolvendo questi 2 problemi.
Ma quindi alla fine è impossibile creare un array universale in esercizi fatti con un grader? Non capisco com’è possibile fare il codice in altri modi.
Ci sono altri esercizi che trovo e secondo me hanno bisogno di strutture dati globali; non sono bravo con c++ e non capisco come posso fare
Se è necessario avere strutture globali di solito viene fornita una funzione inizia per inizializzarle. Uno stratagemma alternativo consiste nel tenere in una variabile globale se è mai stata chiamata una funzione e fare l’inizializzazione alla prima chiamata.
In ogni caso qui non serve inizializzare le strutture globali, i valori di default sono già quelli che ti servirebbero.