@
oregon: l'oggetto di flusso stream


mm, vi posto il codice e l'es così si capisce meglio:

esercizio->
1)Realizzare una funzione di nome sottoseq che, presi come suoi parametri un array di
interi A ed il numero n di elementi in A, determina la sottosequenza di numeri negativi di
lunghezza massima presente in A. La funzione restituisce come suo risultato la lunghezza della
sottosequenza trovata. Ad esempio, se A è (4,3,2,-1,-2,-1,2,2,-1,-1,-2,-1,0,3) la
risposta sarà 4.

2) Scrivere un programma principale che: (1) richiede all'utente l'anno A ed il nome di un mese
M; (2) prova ad aprire in lettura un file il cui nome è ottenuto dalla concatenazione della stringa
M con la stringa A e con la stringa “.dat” (ad es., “maggio2008.dat”); se il file non
esiste, il programma termina immediatamente dando un opportuno messaggio d'errore; se il file
esiste, legge dal file una sequenza di numeri interi (max. 10000), li memorizza in un array
dati e quindi, utilizzando (obbligatoriamente) la funzione sottoseq, determina e stampa la
lunghezza della massima sottosequenza di numeri negativi presente in dati.
mio code..
codice:
#include <iostream>
#include <fstream>

using namespace std;

void sottoseq(int a[],int n)
{
    int count=0;
    int subcount;
    for(int i=0;i<n;i++)
    {
        if(a[i]<0)
        {
            count++;
        }
        else
        {
            subcount=count;
            count=0;
        }
    }
    cout << count;


}

int main()
{

    char a[4]; //dichiaro un tipo char anche se l'anno andrebbe visto come intero, in quanto mi serve per la funz. di concatenazione
    char m [8]; //il mese più lungo al massimo è composto da 8 caratteri
    char sufffile[]=".txt";
    char pathfile[16];
    int dati[10000];
    int i;
    cout << "Anno?"<< endl;
    cin >> a;
    cout << "Mese?" << endl;
    cin >> m;
    strcpy(pathfile,m); // copio in pathfile la prima stringa e concateno le altre..
    strcat(pathfile,a);
    strcat(pathfile,sufffile);
    fstream leggidafile(pathfile,ios::in);
    if(!leggidafile) cout << "errore nella lettura";
    for(int i=0;i<10000;i++)
    {
        leggidafile >> dati[i]; //leggo da file e metto tutto in un array oppure uso while(leggidafile.get(dati[i])) se si tratta di soli char
        ;
    }
    sottoseq(dati,10000);




    return 0;
}
c'è qualcosa che non torna quando richiamo la funzione sottoseq per ultima..torna sempre 0..eppure funzione, funziona(scusate il gioco di parole) ^^