Proverò ad esporveli, e se qualcuno avrà la pazienza e la voglia di aiutarmi gliene sarò molto grata.. :>
1) Questo programmino stampa n asterischi, con n dato:
#include <cstdlib>
#include <iostream>
using namespace std;
int main() {
int n;
cout<<"Quanti asterischi?"<<endl>>n;
while (n--)
cout<<'*';
cout<<endl;
system("PAUSE");
return 0;
}
Mi è stato detto che in questa forma esso non termina se n<0. In che senso?
2) Perché per scrivere qualcosa in un file in append bisogna utilizzare la formula ios::out | ios::app ? Intendo dire, qual è il significato logico di inserire un OR qui dentro?
3) Il costrutto
while (ff.get(c))
cout<<c;
(dove c è di tipo char) a cosa si riferisce esattamente? Mi è stato detto che la funzione get permette di leggere anche gli spazi, ma cosa significa in questo caso? "Quali" spazi vengono letti se è riferita a un char?
4) Questo programma scrive 4 interi nel file "esempio". Poi apre il file in lettura e stampa su video il suo contenuto.
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
fstream ff;
int num;
ff.open("esempio", ios::out);
if (!ff)
{
cerr<<"Il file non può essere aperto"<<endl;
exit(1);
}
for (int i=0; i<4; i++)
ff<<i<<endl;
ff.close();
ff.open("esempio", ios::in);
if(!ff)
{
cerr<<"il file non può essere aperto"<<endl>>num)
cout<<num<<'\t'<<endl;
system("PAUSE");
return 0;
}
L'uscita a video è effettivamente
0 1 2 3
ma perché non trovo gli stessi numeri scritti anche nel file "esempio"?
5) Qual è la differenza (se c'è) tra chiamata di una funzione e istanza di una funzione?
6) Il programma qui sotto apre in lettura il file "esempio" e legge N numeri interi. Poi controlla che le istruzioni di lettura non portino lo stream in stato di errore.
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
fstream ff;
int i, num;
const int N = 6;
ff.open("esempio", ios::in);
if(!ff)
{
cerr<<"Il file non può essere aperto"<<endl;
exit (1);
}
for (i=0; i<N>>num; i++)
cout<<num<<'\t';
cout<<endl;
if (i != N)
cerr<<"Errore nella lettura del file"<<endl;
system("PAUSE");
return 0;
}
Il mio dubbio (l'ultimo!) è: perché in uscita ottengo sempre
0 1 2 3
Errore nella lettura del file
? Dove sta l'errore/l'inghippo?
Grazie mille anticipatamente a chi mi risponderà!
