Partage
  • Partager sur Facebook
  • Partager sur Twitter

(Repost clair) "URGENT" : Examen Programmation

merci d'avance

Sujet résolu
    2 septembre 2007 à 21:16:58

    Bonjour à tous, voilà je m'entraine pour mon examen et j'ai rencontré quelques problèmes en créant un programme pour m'exercer:

    1. void saisie, je ne peut introduire de nom avec un ESPACE (ex: Jean Jacques ;-))
    2. void tri, ne s'effectue que par code et non par ordre alphabétique.
    3. void supp fonctionne une fois, ensuite bug.
    4. void save, la question du prof est "On demande à l'utilisateur d'introduire un seuil(int) (>0 && <100) (avec test). Pour chaque 'element", si la somme de ses cotes est supérieure au seuil, on l'enregistrera dans un fichier "Fich.txt".

    Voilà pour conclure je dirais juste que si quelqu'un sait résoudre l'une ou l'autre chose (de manière simple, nous n'avons pas vu bcp d'outils au cours), qu'il se manifeste. Je vous remercie tous d'avance! A++

    ---------------------------------------------------------------------------------------------------------
    code
    ---------------------------------------------------------------------------------------------------------

    1. #include <iostream>
    2. #include <string>
    3. #include <fstream>
    4. using namespace std;
    5. const int NE_MAX=20;
    6. const int NC_MAX=5;
    7. const int MAX=30;
    8. struct element{
    9.         char nom[MAX];
    10.         char code;
    11.         int cotes[NC_MAX];
    12. };
    13. void menu(int &choix){
    14.         cout<<"\n1. Saisie et Affichage du tableau"<<endl;
    15.         cout<<"2. Tri par ordre alphabetique par nom et code"<<endl;
    16.         cout<<"3. Suppression d'un element apres localisation"<<endl;
    17.         cout<<"4. Sauvergarde"<<endl;
    18.         cout<<"5. Arret du programme"<<endl<<endl;
    19.         cout<<"Entrez votre CHOIX : ";
    20.         cin>>choix;
    21. }
    22. void saisie (element t[], int &NE, int &NC){
    23.         int i,j;
    24.         do{
    25.                 cout<<"\nEntrez le nombre d'etudiants : "<<endl;
    26.                 cin>>NE;
    27.         }while(NE<1||NE>NE_MAX);
    28.         do{
    29.                 cout<<"\nEntrer le nombre de cotes : "<<endl;
    30.                 cin>>NC;
    31.         }while(NC<1||NC>NC_MAX);
    32.         for(i=0; i<NE; i++){
    33.                 cout<<"\nEntrer le nom de l'etudiant "<<i+1<<" : ";
    34.                 cin>>t[i].nom;
    35.                 cout<<"\nEntrer son code : ";
    36.                 cin>>t[i].code;
    37.                         for(j=0; j<NC; j++){
    38.                                 cout<<"\nEntrer la cote "<<j+1<<" : ";
    39.                                 cin>>t[i].cotes[j];
    40.                         }
    41.         }
    42. }
    43. void affiche (element t[], int NE, int NC){
    44.         int i,j;
    45.         cout<<"\nLe tableau est le suivant : "<<endl;
    46.         for(i=0;i<NE;i++){
    47.                 cout<<"Nom "<<i+1<<" : "<<t[i].nom<<endl;
    48.                 cout<<"Code : "<<t[i].code<<endl;
    49.                 for(j=0;j<NC;j++){
    50.                         cout<<"Cote "<<j+1<<" : "<<t[i].cotes[j]<<endl;
    51.                 }
    52.         }
    53. }
    54. void tri(element t[], int NE){
    55.         bool fin, fini;
    56.         int i;
    57.         element temp, tmp;
    58.         do{
    59.                 fin=true;
    60.                 for(i=0;i<NE-1;i++){
    61.                         if(t[i].nom>t[i+1].nom){
    62.                                 tmp=t[i];
    63.                                 t[i]=t[i+1];
    64.                                 t[i+1]=tmp;
    65.                                 fin=false;
    66.                         }
    67.                 }
    68.         }while(fin==false);
    69.         do{
    70.                 fini=true;
    71.                 for(i=0;i<NE-1;i++){
    72.                         if(t[i].code>t[i+1].code){
    73.                                 tmp=t[i];
    74.                                 t[i]=t[i+1];
    75.                                 t[i+1]=tmp;
    76.                                 fini=false;
    77.                         }
    78.                 }
    79.         }while(fini==false);
    80. }
    81. void dico "tri dichotomique"(element t[], int NE, string delnom, int&pos, bool &trouve){
    82.         int fin=NE-1, deb=0, mil;
    83.         trouve=false;
    84.         while(deb<=fin && trouve==false){
    85.                 mil=(fin + deb)/2;
    86.                 if(delnom==t[mil].nom){
    87.                         trouve=true;
    88.                 }
    89.                 else if(t[mil].nom<delnom){
    90.                         deb=mil+1;
    91.                 }
    92.                 else{
    93.                         fin=mil-1;
    94.                 }
    95.         }
    96.         pos=mil;
    97. }
    98. void supp "ression"(element t[], int&NE, int pos){
    99.         int i;
    100.         for(i=pos; i<NE; i++){
    101.                 t[i]=t[i+1];
    102.         }
    103.         NE=NE-1;
    104. }
    105. void save(element t[], int NE, int NC){
    106.         ofstream save;
    107.         save.open("fichier.txt");
    108.         if(save){
    109.                 cout<<"No error!"<<endl;
    110.                 int i,j;
    111.                 save<<NE<<endl;
    112.                 save<<NC<<endl;
    113.                 for(i=0;i<NE;i++){
    114.                         save<<t[i].nom<<endl;
    115.                         save<<t[i].code<<endl;
    116.                         for(j=0;j<NC;j++){
    117.                                 save<<t[i].cotes[j]<<endl;
    118.                         }
    119.                 }
    120.                 save.close();
    121.         }
    122.         else{
    123.                 cout<<"Error!"<<endl;
    124.         }
    125. }
    126. void main(){
    127.         element t[NE_MAX];
    128.         int choix=0;
    129.         int NE, NC;
    130.         int a=0;
    131.         bool trouve=false;
    132.         int pos=0;
    133.         string delnom;
    134.         while(a==0){
    135.                 do{
    136.                         menu(choix);
    137.                 }while(choix<1||choix>5);
    138.                 switch (choix){
    139.                         case 1:
    140.                                 saisie (t,NE,NC);
    141.                                 affiche (t,NE,NC);
    142.                                 break;
    143.                         case 2:
    144.                                 tri(t,NE);
    145.                                 affiche (t,NE,NC);
    146.                                 break;
    147.                         case 3:
    148.                                 cout<<"Entrer le nom a supprimer : ";
    149.                                 cin>>delnom;
    150.                                 dico(t,NE,delnom,pos,trouve);
    151.                                 if(trouve==true){
    152.                                         supp(t,NE,pos);
    153.                                 }
    154.                                 affiche(t,NE,NC);
    155.                                 break;
    156.                         case 4:
    157.                                 save(t,NE,NC);
    158.                                 break;
    159.                         case 5:
    160.                                 a=a+1;
    161.                                 break;
    162.                 }
    163.         };
    164. }
    • Partager sur Facebook
    • Partager sur Twitter
      3 septembre 2007 à 9:54:30

      Va voir dans les cours de M@théo section C++ le cours sur les objets string cela t'aidera pour la premiére fonction.
      Si tu ne la pas vu en cours tu lui di que le seul est unique commandement du programmeur est de lire la doc.

      Pour la suppression va voir le tuto sur le pile et les file (section non officiel programation c++)

      Voila bonne chance pour ton exam.

      Edit : A et utilise des

      1. #define NE_MAX 20
      2. #define NC_MAX 5
      3. #define MAX 30

      Plus tôt que des variables globales.

      Pour finir mais tes fonction dans un fichier fonction.cpp et utilise un fonction.h
      tout sera plus clair.
      • Partager sur Facebook
      • Partager sur Twitter

      (Repost clair) "URGENT" : Examen Programmation

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown