Salve sono nuovo del forum ho un problema con questo esercizio che mi chiede codesto:
Intro:
Dopo aver riordinato la sua estesa collezione di fumetti, Nemo si è accorto di possedere un enorme numero di doppioni. In svariati casi, alcuni numeri sono presenti in più di due copie. Lidia gli suggerisce quindi di fare un po' di ordine nella sua libreria e riporre tutti i doppioni in un grande scaffale. Nemo, prima di tutto, deve capire quanto grande dovrà essere questo scaffale in modo da contenere tutti i doppioni in suo possesso.
Si scriva un programma in C++ che sia in grado di calcolare l’esatto numero di doppioni in possesso di Nemo.
Il file di input contiene 100 task, uno per ogni riga.
Ogni riga del file di input contiene N+1 valori. Il primo valore indica il numero N di fumetti che Nemo possiede. I successivi N valori rappresentano la lista (non ordinata) dei numeri dei fumetti in possesso di Nemo.
Il file di output conterrà 100 righe di testo, una per ogni task contenuto nel file di input. Ogni riga del file di output dovrà contenere un unico valore, ovvero il numero esatto dei doppioni che Nemo possiede in quello specifico task.
Note
Se il numero di un fumetto è presente M volte allora bisogna considerare M-1 doppioni di questo fumetto.
Il numero N è sempre minore o uguale a 2000
I numeri dei fumetti sono sempre valori compresi tra 1 e 1000
Esempio
Il seguente esempio presenta un file di input, contenente 3 task, ed il corrispondente file di output.
input.txt:
13 12 23 12 52 23 55 12 32 686 12 45 52 34
5 34 89 123 34 234
7 1 5 89 32 45 67 21
output.txt
5
1
0
Ho provato a risolvere con questo codice ma quando gli do in input il file (il file citato nell'esempio) mi da l'output sbagliato non riesco a capire dove sia l'errore:
#include <iostream>
#include <fstream>
using namespace std;
ifstream leggi("input.txt");
ofstream scrivi("output.txt");
int main ()
{
int cont;
int N;
int x=0;
for (int i=0; i<3; i++) //scorri le colonne
{
cont=0;
leggi >> N;
int *A=new int [N];
for (int k=0; k<N; k++) //scorri le righe ma resta fisso l'indici fino all'incremento
{
leggi >> A[k];
x=A[k];
for (int j=0; j<N; j++) //scorri
{
leggi >> A[j];
if(k==j)
{
cont=cont;
}else if(x==A[j])
{
cont++;
}
}
}
scrivi << cont << '\n';
cout << " doppioni= "<< cont << "\n";
}
}