برنامج,بلفةc أرجو تصحيح الأخطاء!

djwy · 18 · 3778

djwy

  • Newbie
  • *
    • مشاركة: 47
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
في: كانون الأول 01, 2012, 08:03:04 مسائاً
سم الله الرحمن الرحيم
لقد قمت بكتابة برنامج بلغة الC(في الأسفل) وهو  عبارة عن امتحان لي مع  العلم أني مبتدئ في اللغة  وفي المجال بشكل عام   وأرجو منكم إخوتي وأخواتي  الأعزاء أن تقوموا بالإطلاع على البرنامج وتنبيهي  على الأخطاء الموجودة  فيه وشرح موضع الخطأ وبالتفصيل الممل إن سمحتم  وسأكون شاكرا لكم وأرجو  تقديم بعض الإرشادات والنصائح حول البرنامج واللغة  ككل وأي شيء يمكنه  مساعدتي على الفهم بشكل واضح  للمجال"البرمجة...."....وشكرا
وها هو نص التمرين هنا  مع العلم  أنه يشترط في التمرين ألا أقوم بأي تغيير في البرنامج الأصلي  "Programme  Principale"أوفي و Variables globales   ولكن يسمح بالإضافة في   les  Procedures
وها هو البرنامج /:


#include
#include


typedef struct S_ElementFile{


         int val ;
         struct S_ElementFile* suivant ;
        }elementfile;





int i, choix ;
int fileactuelle ;
elementfile* tete[5] ;
elementfile* queue[5] ;


/* Procédure 1 */

void affichernumero(int* nb)  {


   *nb = fileactuelle ;
}


/* Procedure 2 */

void changerfile(int*chang)  {


scanf("%d",&i);
*chang = i ;
fileactuelle = *chang ;

printf("\nyou are in file number %d in adresse%p",fileactuelle,tete->suivant) ;

}

/* Procedure 3 */

void ajouterelement(elementfile* liste,int *Nb int valu char s) {


   elementfile* nouv ;

printf ("dans quelle file vous voulez ajouté cet nouveau element")
printf("entre nombre de file que vous avez ajouté cet nouveau elemnt : ");
scanf("%d",*Nb);
   i=*Nb;

   if (tete==NULL){
       printf("la file est vide ");


       nouv = malloc(sizeof(elementfile));
   scanf("%d",&nouv->val);
   tete=nouv;
   queue=NULL
   tete->suivant=queue;

}
   else{
   printf ("si vous voudrez lajouté en debut cliquez sur \"D\"ou bien en a la fin cliquez sur \"F\"");

   scanf("%c",&s);

       switch (s)
       {
       case 'D':
       case 'd':
              {

       nouv = malloc(sizeof(elementfile));

          scanf("%d",&nouv->val);


          nouv->suivant = tete;
               tete = nouv;
           break;
           }


       case 'F':
       case 'f':
             {
                queue=NULL;
                 while (liste->suivant!= queue){
                     liste = liste->suivant;

                     }
              nouv = malloc(sizeof(elementfile));

          scanf("%d",&nouv->val);
         nouv->suivant = queue;
         liste->suivant= nouv;

           break;
           }

       default:
       printf("Erreue in choice !! Exit.....\n");
       break;

       }
       fileactuelle=*Nb;
   }

   /* Procedure 4 */


void retirerelement(elementfile* liste,int *Nb ) {



   elementfile* nouv ;

printf ("dans quelle file vous voulez retiré un element")
printf("entre nombre de file que vous avez retiré le element : ");
scanf("%d",*Nb);
   i=*Nb;

   if (tete==NULL)  printf("la file est vide ");

   else {
        queue=NULL;
                 while (liste->suivant!= queue){
                     liste = liste->suivant;
                    nouv=liste;
                   while(liste->suivant!= queue){
                       liste=liste->suivant;
                       }
                   }

      nouv->suivant= queue;
       liste->suivant=NULL;
       free (liste);
        liste=nouv;
         liste->suivant=queue;


}
fileactuelle=*Nb;
   }


      /*Procedure5*/


void afficherelements(elementfile* liste,int *valu){

   int no=0;
   elementfile*afich;

printf("entre nombre de liste que vous voulez afficher ");

scanf("%d",*valu);
i=*valu;
fileactuelle=*valu;
queue= NULL
printf("%d",tete->val);
    while(liste!=queue){
         printf("%d",liste->val);
             liste=liste->suivant;
                 no++;

                   }




   }


          /*Programme Pricipale*/


   void main () {


       fileactuelle = 0;

       for( i= 0 ; i<5 ;i++){

           tete = NULL;
           queue= NULL;
       }
       do {

           clrscr;
           printf("\n***************************************************************************\n");
           printf("\n*    1- Afficher le numéro de la file actuelle                          *\n");
           printf("\n*    2- Changer la file actuelle                                        *\n");
           printf("\n*    3- Ajouter un élément dans la file actuelle                        *\n");
           printf("\n*    4- Retirer un élément de la file actuelle                          *\n");
           printf("\n*    5- Affichage de la file actuelle                                   *\n");
           printf("\n*    0- Quitter                                                         *\n");
           printf("\n*************************************************************************\n");
           printf("\n Introduisez votre choix:");



           /* Lire le choix*/

           scanf("%d",&choix);


           switch (choix){

               case 1: affichernumero(); break;
               case 2: changerfile(); break;
               case 3: ajouterelement(); break;
               case 4: retirerelement(); break;
               case 5: afficherelement(); break;
               default: printf("Erreur de choice!! Exit...."); break;
               }

           }while(choix!=0);

           printf("programme est quitté !");
       }







djwy

  • Newbie
  • *
    • مشاركة: 47
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #1 في: كانون الأول 02, 2012, 06:15:20 مسائاً
ولا رد ..........................؟؟؟؟؟؟؟؟؟؟؟؟؟؟


وَليد

  • Hero Member
  • *****
    • مشاركة: 1441
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #2 في: كانون الأول 02, 2012, 09:09:29 مسائاً
السلام عليكم ورحمة الله

شفرة: [اختيار]


#include<stdio.h>
#include <conio.h>


typedef struct S_ElementFile{


int val ;
struct S_ElementFile* suivant ;
}elementfile;





int i, choix ;
int fileactuelle ;
elementfile* tete[5] ;
elementfile* queue[5] ;


/* Procédure 1 */

void affichernumero(int* nb) {


*nb = fileactuelle ;
}


/* Procedure 2 */

void changerfile(int*chang) {


scanf(&quot;%d&quot;,&i);
*chang = i ;
fileactuelle = *chang ;

printf(&quot;\nyou are in file number %d in adresse%p&quot;,fileactuelle,tete[i]->suivant) ;

}

/* Procedure 3 */

void ajouterelement(elementfile* liste,int *Nb int valu char s) {


elementfile* nouv ;

printf (&quot;dans quelle file vous voulez ajouté cet nouveau element&quot;)
printf(&quot;entre nombre de file que vous avez ajouté cet nouveau elemnt : &quot;);
scanf(&quot;%d&quot;,*Nb);
i=*Nb;

if (tete[i]==NULL){
printf(&quot;la file est vide &quot;);


nouv = malloc(sizeof(elementfile));
scanf(&quot;%d&quot;,&nouv->val);
tete[i]=nouv;
queue[i]=NULL
tete[i]->suivant=queue;

}
else{
printf (&quot;si vous voudrez lajouté en debut cliquez sur \&quot;D\&quot;ou bien en a la fin cliquez sur \&quot;F\&quot;&quot;);

scanf(&quot;%c&quot;,&s);

switch (s)
{
case 'D':
case 'd':
{

nouv = malloc(sizeof(elementfile));

scanf(&quot;%d&quot;,&nouv->val);


nouv->suivant = tete[i];
tete[i] = nouv;
break;
}


case 'F':
case 'f':
{
queue[i]=NULL;
while (liste->suivant!= queue){
liste = liste->suivant;

}
nouv = malloc(sizeof(elementfile));

scanf(&quot;%d&quot;,&nouv->val);
nouv->suivant = queue;
liste->suivant= nouv;

break;
}

default:
printf(&quot;Erreue in choice !! Exit.....\n&quot;);
break;

}
fileactuelle=*Nb;
}

/* Procedure 4 */


void retirerelement(elementfile* liste,int *Nb ) {



elementfile* nouv ;

printf (&quot;dans quelle file vous voulez retiré un element&quot;)
printf(&quot;entre nombre de file que vous avez retiré le element : &quot;);
scanf(&quot;%d&quot;,*Nb);
i=*Nb;

if (tete[i]==NULL) printf(&quot;la file est vide &quot;);

else {
queue[i]=NULL;
while (liste->suivant!= queue){
liste = liste->suivant;
nouv=liste;
while(liste->suivant!= queue){
liste=liste->suivant;
}
}

nouv->suivant= queue;
liste->suivant=NULL;
free (liste);
liste=nouv;
liste->suivant=queue;


}
fileactuelle=*Nb;
}


/*Procedure5*/


void afficherelements(elementfile* liste,int *valu){

int no=0;
elementfile*afich;

printf(&quot;entre nombre de liste que vous voulez afficher &quot;);

scanf(&quot;%d&quot;,*valu);
i=*valu;
fileactuelle=*valu;
queue= NULL
printf(&quot;%d&quot;,tete[i]->val);
while(liste!=queue){
printf(&quot;%d&quot;,liste->val);
liste=liste->suivant;
no++;

}




}


/*Programme Pricipale*/


void main () {


fileactuelle = 0;

for( i= 0 ; i<5 ;i++){

tete[i] = NULL;
queue[i]= NULL;
}
do {

clrscr;
printf(&quot;\n******************** ****************************** *************************\n&quot;);
printf(&quot;\n* 1- Afficher le numéro de la file actuelle *\n&quot;);
printf(&quot;\n* 2- Changer la file actuelle *\n&quot;);
printf(&quot;\n* 3- Ajouter un élément dans la file actuelle *\n&quot;);
printf(&quot;\n* 4- Retirer un élément de la file actuelle *\n&quot;);
printf(&quot;\n* 5- Affichage de la file actuelle *\n&quot;);
printf(&quot;\n* 0- Quitter *\n&quot;);
printf(&quot;\n******************** ****************************** ***********************\n&quot;);
printf(&quot;\n Introduisez votre choix:&quot;);



/* Lire le choix*/

scanf(&quot;%d&quot;,&choix);


switch (choix){

case 1: affichernumero(); break;
case 2: changerfile(); break;
case 3: ajouterelement(); break;
case 4: retirerelement(); break;
case 5: afficherelement(); break;
default: printf(&quot;Erreur de choice!! Exit....&quot;); break;
}

}while(choix!=0);

printf(&quot;programme est quitté !&quot;);
}





وَليد

  • Hero Member
  • *****
    • مشاركة: 1441
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #3 في: كانون الأول 02, 2012, 09:35:40 مسائاً
أخي ممكن سؤال ؟

لم تضع نص التمرين او الامتحان :)
هكذا لن يستطيع احد مساعدتك , بل لن يستطيع أي احد فهم كود برنامجك ..

سأحاول المساعدة
 (les erreures syntaxique)


شفرة: [اختيار]
[COLOR=Navy]void ajouterelement(elementfile* liste,int *Nb [COLOR=Red],[/COLOR] int valu [SIZE=3][COLOR=Red],[/COLOR][/SIZE] char s)[/COLOR]
[COLOR=Navy]{[/COLOR]
    [COLOR=Navy]elementfile* nouv ;

printf (&quot;dans quelle file vous voulez ajouté cet nouveau element&quot;);
scanf(&quot;%d&quot;,*Nb);
    i=*Nb;

    if (tete[i]==NULL){
        printf(&quot;la file est vide &quot;);


        nouv = malloc(sizeof(elementfile));
    scanf(&quot;%d&quot;,&nouv->val);
    tete[i]=nouv;
    queue[i]=NULL[/COLOR][COLOR=Red];[/COLOR]
[COLOR=Red] [COLOR=RoyalBlue]   [COLOR=Navy]tete[i]->suivant=queue;[/COLOR][/COLOR]
[COLOR=Black][COLOR=Blue]
}
    else{
    printf (&quot;si vous voudrez lajouté en debut cliquez sur \&quot;D\&quot;ou bien en a la fin cliquez sur \&quot;F\&quot;&quot;);

    scanf(&quot;%c&quot;,&s);

        switch (s)
        {
        case 'D':
        case 'd':
               {

        nouv = malloc(sizeof(elementfile));

           scanf(&quot;%d&quot;,&nouv->val);


           nouv->suivant = tete[i];
                tete[i] = nouv;
            break;
            }

        case 'F':
        case 'f':
              {
                 queue[i]=NULL;
                  while (liste->suivant!= queue){
                      liste = liste->suivant;

                      }
               nouv = malloc(sizeof(elementfile));

           scanf(&quot;%d&quot;,&nouv->val);
          nouv->suivant = queue;
          liste->suivant= nouv;

            break;
            }

        default:
        printf(&quot;Erreue in choice !! Exit.....\n&quot;);
        break;

        }
        fileactuelle=*Nb;
    }
[/COLOR]
[COLOR=Red]}[/COLOR][/COLOR][/COLOR]


شفرة: [اختيار]

/* Procedure 4 */


void retirerelement(elementfile* liste,int *Nb ) {
    elementfile* nouv ;
printf ("dans quelle file vous voulez retiré un element");
printf("entre nombre de file que vous avez retiré le element : ");
scanf("%d",*Nb);
    i=*Nb;

    if (tete[i]==NULL)  printf("la file est vide ");

    else {
         queue[i]=NULL;
                  while (liste->suivant!= queue){
                      liste = liste->suivant;
                     nouv=liste;
                    while(liste->suivant!= queue){
                        liste=liste->suivant;
                        }
                    }

       nouv->suivant= queue;
        liste->suivant=NULL;
        free (liste);
         liste=nouv;
          liste->suivant=queue;


}
fileactuelle=*Nb;
    }






وَليد

  • Hero Member
  • *****
    • مشاركة: 1441
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #4 في: كانون الأول 02, 2012, 09:44:23 مسائاً
أخي بما انك انت من برمج الكود أنتظر منك نص التمرين وشرح ما أردت تحقيقه من كل دالة

والباقي سهل

بالتوفيق أخي


djwy

  • Newbie
  • *
    • مشاركة: 47
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #5 في: كانون الأول 03, 2012, 06:17:58 مسائاً
ها هو نص التمرين في الرابط التالي
http://www.4shared.com/folder/ZEpONkFH/exercice.html
وشكرا جزيلا أخي على المساعدة  


وَليد

  • Hero Member
  • *****
    • مشاركة: 1441
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #6 في: كانون الأول 05, 2012, 07:57:03 صباحاً
السلام عليكم ورحمة الله

ومع ذلك أخي يبقي الكود غير مفهوم

سريعا أخي أنظر حسب نص التمرين

procedure 1

شفرة: [اختيار]
void affichernumero()
  {
    printf(&quot;Numero de la file actualle:%d\n&quot;,fileactuelle);
  }

procedure 2
شفرة: [اختيار]

void changerfile()
 {
    int NUM;
    do
     {
        printf("ENTRER NUM DE LA FILE:(0-4)");
        scanf("%d",&NUM);
     }
     while((NUM>4)||(NUM<0));
    fileactuelle =NUM ;
    printf("\nVOUS ETES DANS LA FILE %d\n",fileactuelle) ;
}

كما نحتاج دالة لاعطاء كل المتغيرات قيم أولية وهذا مهم

شفرة: [اختيار]


void initalisation()
{
    int i;
   fileactuelle=0;
   for(i=0;i<5;i++)
  {
    tete[i]=NULL;
    queue[i]=NULL;
  }
}

----------------------------------------------------------//

والبتالي يصبح الكود كالتالي :

شفرة: [اختيار]

#include
#include

typedef struct S_ElementFile{
                             int val ;
                             struct S_ElementFile* suivant ;
                            }elementfile;

int i, choix ;
int fileactuelle ;
elementfile  *tete[5] ;
elementfile  *queue[5] ;


void initalisation()
{
    int i;
   fileactuelle=0;
   for(i=0;i<5;i++)
  {
    tete[i]=NULL;
    queue[i]=NULL;
  }
}
/* Procedure 1 */
void affichernumero()
  {
    printf("Numero de la file actualle:%d\n",fileactuelle);
  }
/* Procedure 2 */
void changerfile()
 {
    int NUM;
    do
     {
        printf("ENTRER NUM DE FILE:(0-4)");
        scanf("%d",&NUM);
     }
     while((NUM>4)||(NUM<0));
    fileactuelle =NUM ;
    printf("\nVOUS ETES DANS LA FILE %d\n",fileactuelle) ;
}
main()
{
initalisation();
}






وَليد

  • Hero Member
  • *****
    • مشاركة: 1441
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #7 في: كانون الأول 05, 2012, 08:00:10 صباحاً

ان كان كل ما كتبته لك مفهوم أخي وأتمنى ذلك

حاول اعادة كتابة الدالة رقم 3

procedure 3

واشرح لي سريعا ما تحاول الوصول اليه

ثم نصححه جميعا ويكون فهمك أحسن ان شاء الله

بالتوفيق


djwy

  • Newbie
  • *
    • مشاركة: 47
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #8 في: كانون الأول 07, 2012, 11:04:16 صباحاً
نحن في التمرين لدينا cinq(5)files و  كل file تتكون من سلسلة: (liste chaine)و نريد أن نضع المعلومات في listes chaines وكما نعرف لإضافة عنصر جديد يجب إضافته في الأخير بواسطة المؤشر queue ولإزالة عنصر يجب إزالته من الأول بواسطة المؤشر tete ,الProcedure 3 هو لإضافة عنصر جديد لاحد السلاسل المستحدم يختارها ;و Procedure4 هو لأزالة عنصر من أول السلسلة والسلسلة يختارها المستخدم لاإزالة العنصر منها وكل سلسلة تبدا ب[tete[i وتنتهي ب [queue[i
i=1.......5;;;والProcedure 5هو لعرض عناصر  السلسة التي نحن فيها i=fileActuelle




djwy

  • Newbie
  • *
    • مشاركة: 47
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #9 في: كانون الأول 08, 2012, 07:00:24 صباحاً
لقد قمت ببعص التعديلات على البرنامج :

شفرة: [اختيار]
[LEFT]/***********************************/
/**Nom:  **/
/**Prenom: **/
/**********************************/
#include<stdio.h>
#include <conio.h>


typedef struct S_ElementFile{


     int info ;
 struct S_ElementFile* suivant ;
}ElementFile;





int i, choix ;
int FileActuelle ;
ElementFile* TeteFile[5] ;
ElementFile* QueueFile[5] ;


/* Procédure 1 */

void AfficherNumero()  {

   printf(&quot;Numero de la file actualle:%d\n&quot;,FileActuelle);
}


/* Procedure 2 */

void ChangerFile()  {
int chang;
do{
printf(&quot;\n entre nombre de file %d &quot;) ;
scanf(&quot;%d&quot;,&chang);

}while((chang >5)||(chang<1));
 i=chang ;
FileActuelle = chang ;
printf(&quot;vous etez dans la file %d\n&quot;,FileActuelle);
}
/* Procedure 3 */

void AjouterElement(ElementFile* liste,int *Nb ) {

printf (&quot;dans quelle file vous voulez ajouté cet nouveau element&quot;);
printf(&quot;entre nombre de file entre 1...5 que vous avez ajouté cet nouveau elemnt : &quot;);
scanf(&quot;%d&quot;,&i);
ElementFile* nouv = malloc(sizeof(ElementFile));
printf(&quot;entrer la valeur que vous ajoutez dans la liste&quot;);
scanf(&quot;%d&quot;,&nouv->info);
if (TeteFile[i]==NULL){
printf(&quot;la file est vide &quot;);
TeteFile[i]=nouv;
QueueFile[i]=nouv;
nouv->suivant=nouv;


       }
  else{
 QueueFile[i]->suivant=nouv;
 QueueFile[i] = nouv;
  QueueFile[i]->suivant=NULL;
FileActuelle=i;
} }

/* Procedure 4 */


void RetirerElement(ElementFile* liste) {

printf (&quot;dans quelle file vous voulez retiré un element&quot;);
printf(&quot;entre nombre de file entre 1 _ 5 que vous avez retiré le element : &quot;);
scanf(&quot;%d&quot;,&i);
if (TeteFile[i]==NULL)  printf(&quot;la file est vide &quot;);

    else {
ElementFile* nouv= malloc(sizeof(ElementFile));
 nouv = TeteFile[i];
     free(TeteFile[i]);
TeteFile[i]=nouv->suivant;
FileActuelle=i;
    }

       /*Procedure5*/
void AfficherElements(ElementFile* liste){
int no=0;
printf(&quot;entre nombre de file que vous voulez afficher &quot;);
scanf(&quot;%d&quot;,i);
FileActuelle=i;
liste=TeteFile[i];
 while(liste!=NULL){
  printf(&quot;%d&quot;,liste->info);
 liste=liste->suivant;
no++;
                    }
}

        /*Programme Pricipale*/

void main () {

FileActuelle = 0;

for( i= 0 ; i<5 ;i++){

TeteFile[i] = NULL;
QueueFile[i]= NULL;
}
do {

clrscr();
printf(&quot;\n***************************************************************************\n&quot;);
printf(&quot;\n*    1- Afficher le numéro de la file actuelle                          *\n&quot;);
printf(&quot;\n*    2- Changer la file actuelle                                        *\n&quot;);
printf(&quot;\n*    3- Ajouter un élément dans la file actuelle                        *\n&quot;);
printf(&quot;\n*    4- Retirer un élément de la file actuelle                          *\n&quot;);
printf(&quot;\n*    5- Affichage de la file actuelle                                   *\n&quot;);
printf(&quot;\n*    0- Quitter                                                         *\n&quot;);
printf(&quot;\n*************************************************************************\n&quot;);
printf(&quot;\n Introduisez votre choix:&quot;);

/* Lire le choix*/

scanf(&quot;%d&quot;,&choix);

switch (choix){
case 1: AfficherNumero(); break;
case 2: ChangerFile(); break;
case 3: AjouterElement(); break;
case 4: RetirerElement(); break;
case 5: AfficherElements(); break;
}

}while(choix!=0);

[/LEFT]}




djwy

  • Newbie
  • *
    • مشاركة: 47
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #10 في: كانون الأول 08, 2012, 08:43:52 صباحاً
شكرا أخي وليد على المساعدة لقد أتممت كتابة الكود بطريقة صحيحة.....شكرا على العون جعلها الله في ميزان حسناتك :
شفرة: [اختيار]
[LEFT]/***********************************/
/**Nom:  **/
/**Prenom: **/
/**********************************/
#include<stdio.h>
#include <conio.h>
#include <stdlib.h>


typedef struct S_ElementFile{

     int info ;
 struct S_ElementFile* suivant ;
}ElementFile;


int i, choix ;
int FileActuelle ;
ElementFile* TeteFile[5] ;
ElementFile* QueueFile[5] ;


/* Procédure 1 */

void AfficherNumero()  {

   printf(&quot;Numero de la file actualle:%d\n&quot;,FileActuelle);
}


/* Procedure 2 */

void ChangerFile()  {
int chang;
do{
printf(&quot;\n entre nombre de file\n &quot;) ;
scanf(&quot;%d&quot;,&chang);

}while((chang >5)||(chang<1));
 i=chang ;
FileActuelle = chang ;
printf(&quot;vous etez dans la file %d\n&quot;,FileActuelle);
}
/* Procedure 3 */

void AjouterElement() {
printf (&quot;dans quelle file vous voulez ajoute cet nouveau element\n&quot;);

printf(&quot;entre nombre de file entre 1...5 que vous avez ajoute cet nouveau element :\n &quot;);
scanf(&quot;%d&quot;,&i);
ElementFile* nouv = malloc(sizeof(ElementFile));

printf(&quot;entrer la valeur que vous ajoutez dans la liste\n&quot;);
scanf(&quot;%d&quot;,&nouv->info);
if (TeteFile[i]==NULL){
printf(&quot;la file est vide alors cette nouveau element est le premier element&quot;);
TeteFile[i]=nouv;
QueueFile[i]=nouv;
nouv->suivant=nouv;
       }
  else{
 QueueFile[i]->suivant=nouv;
 QueueFile[i] = nouv;
  QueueFile[i]->suivant=NULL;
FileActuelle=i;
}
 }

/* Procedure 4 */


void RetirerElement() {

printf (&quot;dans quelle file vous voulez retiré un element\n&quot;);
printf(&quot;entre nombre de file entre 1 _ 5 que vous avez retiré le element : \n&quot;);
scanf(&quot;%d&quot;,&i);
if (TeteFile[i]==NULL)  printf(&quot;\nla file est vide\n &quot;);

    else {
ElementFile* nouv= malloc(sizeof(ElementFile));
 nouv = TeteFile[i];
  printf(&quot;l\&quot;element que va retire est:\n %d&quot;,TeteFile[i]->info);
     free(TeteFile[i]);
TeteFile[i]=nouv->suivant;
FileActuelle=i;
    }
    }

       /*Procedure5*/
void AfficherElements(){
ElementFile* liste;
int no=0;
printf(&quot;entre nombre de file que vous voulez afficher\n &quot;);
scanf(&quot;%d&quot;,&i);
FileActuelle=i;
liste=TeteFile[i];
 while(liste!=NULL){
  printf(&quot;%d&quot;,liste->info);
 liste=liste->suivant;
no++;
                    }
}

        /*Programme Pricipale*/

int main (){
/*Initisation*/
FileActuelle = 0;

for( i= 0 ; i<5 ;i++){

TeteFile[i] = NULL;
QueueFile[i]= NULL;
       }
do {

printf(&quot;\n*************************************************************************\n&quot;);
printf(&quot;\n*    1- Afficher le numéro de la file actuelle                          *\n&quot;);
printf(&quot;\n*    2- Changer la file actuelle                                        *\n&quot;);
printf(&quot;\n*    3- Ajouter un élément dans la file actuelle                        *\n&quot;);
printf(&quot;\n*    4- Retirer un élément de la file actuelle                          *\n&quot;);
printf(&quot;\n*    5- Affichage de la file actuelle                                   *\n&quot;);
printf(&quot;\n*    0- Quitter                                                         *\n&quot;);
printf(&quot;\n*************************************************************************\n&quot;);
printf(&quot;\n Introduisez votre choix: \n&quot;);

/* Lire le choix*/
scanf(&quot;%d&quot;,&choix);
switch (choix){
case 1: AfficherNumero(); break;
case 2: ChangerFile(); break;
case 3: AjouterElement(); break;
case 4: RetirerElement(); break;
case 5: AfficherElements(); break;
}
}while(choix!=0);
return(0);}[/LEFT]


وَليد

  • Hero Member
  • *****
    • مشاركة: 1441
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #11 في: كانون الأول 09, 2012, 12:07:54 مسائاً

السلام  عليكم ورحمة الله


جيد أخيـ , فقط هناك خطأ بسيط في الدالة رقم 3

مثلا ان قمنا باضافة عنصر : مثلا رقم 0

المشكل عند اظهار المحتوى
أنظر النتيجة




التصحيح


شفرة: [اختيار]

/* Procedure 3 */

void AjouterElement() {
printf (&quot;dans quelle file vous voulez ajoute cet nouveau element\n&quot;);

printf(&quot;entre nombre de file entre 1...5 que vous avez ajoute cet nouveau element :\n &quot;);
scanf(&quot;%d&quot;,&i);
ElementFile* nouv = malloc(sizeof(ElementFile));

    printf(&quot;entrer la valeur que vous ajoutez dans la liste\n&quot;);
    scanf(&quot;%d&quot;,&nouv->info);
    if (TeteFile[i]==NULL){
        printf(&quot;la file est vide alors cette nouveau element est le premier element&quot;);
    TeteFile[i]=nouv;
    QueueFile[i]=nouv;
 [B][I][SIZE=3][COLOR=Red]   nouv->suivant=NULL;[/COLOR][/SIZE][/I][/B]
       }
  else{
 QueueFile[i]->suivant=nouv;
 QueueFile[i] = nouv;
  QueueFile[i]->suivant=NULL;
FileActuelle=i;
    }
      }


بعد التصحيح قمت باضافة 3 عناصر وهي 0 ,   1  و  2

أنظر النتيجة






وَليد

  • Hero Member
  • *****
    • مشاركة: 1441
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #12 في: كانون الأول 09, 2012, 12:12:39 مسائاً

قم بتجربة البرنامج لاكثر من حالة للتحقق من برنامجكـ

بالتوفيق أخي

وأعتذر منك ان كنت قد قصرت معكـ في أي نقطة

[سلام]



djwy

  • Newbie
  • *
    • مشاركة: 47
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #13 في: كانون الأول 09, 2012, 02:20:55 مسائاً
شكرا لك وليد على التصحيح ,,,,أريد أن أسألك هل من طريقة لتشعيل البرنامج دون إضافة وبدل استعمال        int main نضع void main بدون return() فأنا كتبت البرنامج على  codeblocks وعند إضافة الدالة clrscr()كتب لي erreurولم يعمل الرنامج  


وَليد

  • Hero Member
  • *****
    • مشاركة: 1441
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #14 في: كانون الأول 09, 2012, 04:35:57 مسائاً
مقتبس من: djwy;668016
شكرا لك وليد على التصحيح ,,,,أريد أن أسألك هل من طريقة لتشعيل البرنامج دون إضافة وبدل استعمال        int main نضع void main بدون return() فأنا كتبت البرنامج على  codeblocks وعند إضافة الدالة clrscr()كتب لي erreurولم يعمل الرنامج  

السلام عليكم ورحمة الله

عفوًا أخي , بالنسبة للدالة main

الدالة في الاصل ترجع قيمة صحيحة nombre entier

عندما نكتب void  قبل الدالة يعني ان الدالة لا تقوم بارجاع اي قيمة , وبالتالي نستغني عن   ()   return


اذا نعم بالطبع يمكنك استعمال الصيغة الثانية وذلك لن يغير شئ الكود صحيح

----------------------------------

شفرة: [اختيار]
[COLOR=Navy]<stdlib.h>[/COLOR]لا , لا يمكنك الاستغناء عن المكتبة
باختصار لانك تستخدم الدالة malloc وهي دالة موجودة في مكتبة stdlib.h
ان قمت بالاستغناء عنها فان الدالة malloc  تصبح غير معروفة للـ compilateur

-----------------------------

[/COLOR][/SIZE] ;  ()  clrscr
الدالة تقوم بحذف كل ما تم إظهاره على الشاشة قبل تطبيق الدالة
clrscr() على حسب ما أضن تستخدم في نطام التشغيل linux
أما على windows وبالتحديد على CodBlocks يمكنك استخدام الدالة



شفرة: [اختيار]
system("cls");
مجربة وتعمل جيدا


ملاحظة : بالنسبة للمكتبة conio.h


بالنسبة للكود الذي كتبته فأنت في غنى عنها ويمكنك الاستغناء عنها