Programmation en C++ TP4 : fichiers 1 Ecriture dans un fichier

Transcription

Programmation en C++ TP4 : fichiers 1 Ecriture dans un fichier
Programmation en C++
TP4 : fichiers
1
1.1
Ecriture dans un fichier
Ecriture
On souhaite créer un fichier dans lequel on écrira des nombres entiers ou réels, des caractères ou
des mots.
Recopier le programme suivant nommé “ecriture1.cpp”, le compiler et l’exécuter. Ouvrir le fichier
“ecrit.dat” avec le bloc-notes et vérifier ce qui est écrit. Faire d’autres tests d’écriture.
#include <iostream>
#include <fstream> //gere ofstream et ifstream pour ecriture et lecture dans un fichier
using namespace std;
int main(void){
int a = 36, tab [6], i;
double b = 27.3;
char c = ’C’, d=100, e=’\x65’;
char mot[15]="informatique";
for (i = 0; i < 6; i++)
tab [i] = i*i;
ofstream fic ("ecrit.dat");
//cree le fichier s’il n’existe pas et l’ouvre
//ou bien ofstream fic ("ecrit.dat", ios::out); (ios::out est par defaut)
if (!fic.is_open()) //on verifie que le fichier est ouvert
cout << "Impossible d’ouvrir le fichier en écriture !" << endl;
else{
fic << a << " " << b << endl;
for (i = 0; i < 6; i++)
{
fic << tab [i] << " ";
}
fic <<endl<< c << " " << d << " " << e <<endl;
fic << mot;
}
fic.close(); //on ferme le fichier
return 0;
}
Si on exécute une deuxième fois le programme, on remarque que le fichier “ecrit.dat” est écrasé.
Si on souhaire écrire à la fin du fichier il faut modifier l’instruction ofstream fic ("ecrit.dat") ;
et la remplacer par ofstream fic ("ecrit.dat", ios : :out | ios : :app) ;, ou simplement ofstream fic
("ecrit.dat", ios : :app) ;
1.2
Utilisation
Ecrire un programme nommé “ecriture2.cpp” qui demande à l’utilisateur le nom d’un fichier, (avec
l’extension “.dat”, par exemple “toto.dat”), dans le but de le créer, de l’ouvrir puis d’y écrire.
Vérifier que cette étape s’est déroulée avec succès.
Les instructions :
1
srand(time(NULL)); //a n’ecrire qu’une seule fois au debut (initialisation)
nb_alea=rand()%11-5;
affectent à la variable nb_alea la valeur d’un entier compris entre −5 et 5 de manière aléatoire.
Compléter le programme afin qu’il écrive dans le fichier 101 lignes où sur chaque ligne seront
écrites l’abscisse et l’ordonnée, séparées par une tabulation, d’un point. Pour la première ligne, l’abscisse et l’ordonnée seront égales à 0.
fic << 0 << " " << 0 << endl;
Pour les lignes suivantes l’abscisse sera entière et variera de 1 à 100. Pour chaque abscisse, l’ordonnée sera la somme d’un entier aléatoire compris entre −5 et 5 avec l’ordonnée précédente.
Ouvrir le logiciel Gnuplot‘, puis écrire plot ’ ..........dat’ w l pour tracer les points et les lier.
Faire différents essais sur ce logiciel.
2
2.1
Lecture dans un fichier
Lecture
Ecrire un programme, (utiliser le programme “ecriture1.cpp”), qui crée un fichier et qui écrit dans
ce fichier un entier, un réel, un caractère et un mot. Le fichier est ensuite fermé.
Le programme rouvre alors le premier fichier, lit ce qui existe et l’affiche dans la console. On
utilise les instructions suivantes pour lire dans le fichier :
int a;
double b;
char c;
char mot[15];
ifstream fic ("ecrit.dat"); //ouvre le fichier
if (!fic.is_open())
cout << "Impossible d’ouvrir le fichier en lecture !" << endl;
else{
fic >> a >> b >> c >> mot; // lit dans le fichier
}
fic.close();
}
Le programme crée ensuite un deuxième fichier. Il lit ce qui existe et l’écrit dans le deuxième
fichier.
2.2
Utilisation
Demander à l’utilisateur de rentrer un entier N. Ecrire un programme qui stocke dans un premier
fichier les N abscisses (xi )1≤i≤N équiréparties entre 0 et π. Utiliser la fonction “rand()”.
Le programme lit ensuite dans le fichier les N abscisses et calcule leur images par la fonction sin.
Puis il écrit dans un deuxième fichier les coordonnées des points afin de tracer la courbe avec Gnuplot.
Le programme lit enfin les N abscisses dans le premier fichier et calcule leur images par la fonction
cos. Puis il écrit dans un troisième fichier les coordonnées des points afin de tracer la courbe avec
Gnuplot.
2

Documents pareils