@
oregon: l'oggetto di flusso stream
mm, vi posto il codice e l'es così si capisce meglio:
esercizio->
mio code..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.
c'è qualcosa che non torna quando richiamo la funzione sottoseq per ultima..torna sempre 0..eppure funzione, funziona(scusate il gioco di parole) ^^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; }