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