الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كود برنامج أنشئ فريقك بلغة السي

بدأه tantie L في 3 ديسمبر 2013 · 0 رد · 761 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1

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

 

ملاحظة : الكود قمت بكتابته في الونيكس لذلك ممكن تكون هناك مشاكل لتشغيله على الويندوز و هذا عائد لما ندرس به

 

كنت قد طرحت سؤالا سابقا عن منهجية التفكير لكتابة برنامج لانشاء فريق كرة قدم باستخدام القوائم و كما هو متوقع فقد وجدت الاجابات الوافية

في النهاية تمكنت من كتابة الكود الخاص بي و هذا خلال الشهر الفائت و قد كان متعبا بالنسبة لمبتدئة التقت بالقوائم لأول مرة 

لكن هناك بعض الحالات الخاصة التي لم اتمكن من معالجتها لأنني لم اعرف كيفية التعامل مع الدالتين isalpha و isdigit و كيف اوظفهما و كلما حاولت ذلك أقع في الأمر المزعج حلقة لا منتهية و البرنامج يعلق لذلك لم أوظفهما 

ما علينا، عدد أسطر الكود هو 328 أعلم أنه كثير لكن هذا ما أسعفتني به أفكاري

فكرة الكود تعتمد على أن يقوم المستعمل بادخال معلومات 4 لاعبين وضعياتهم محددة مسبقا و هذا يحدث ان اختار الخيار الأول و لكن ان قام من اول مرة باختيار الخيارات 2.....6 فان البرنامج سيطبع له رسالة القائمة فارغة و فيما يخص الخيار 7 فهو تفريغ القائمة و انهاء البرنامج حسنا سأترككم مع الكود الخاص بي 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct joueur
{
  char n[20],p[20];
  char ps[2];
  int pr;
  struct joueur *ptrn;
}J;
//**************la creation****************
J *init()
{
    printf("vous allez entrer 4 joueur gardien(G), deffenseur(D), melieu terain(M) et attaquant(A)\n");
    J *tete,*P,*j1,*j2,*j3,*j4;
    int i;
    tete=NULL;
    j1=(J*)malloc(sizeof(J));
    printf("le nom de gardien 1 :");
    scanf("%s",(j1->n));
    printf("le nom de f :");
    scanf("%s",&(j1->p));
    getchar();
    do{
            printf("entrer G pour la position :");
            scanf("%s",(j1->ps));
            getchar();
       }while((strcmp((j1->ps),"G")));
    printf("la valeur :");
    scanf("%d",&(j1->pr));
    printf("--------------------------\n");
    (j1->ptrn)=NULL;
    if(tete!=NULL)
    {
         P->ptrn=j1;
    }
    else
    {
         tete=j1;
    }
    P=j1;
    j2=(J*)malloc(sizeof(J));
    printf("le nom de deffenseur 1 :");
    scanf("%s",&(j2->n));
    printf("le nom de f :");
    scanf("%s",&(j2->p));
    getchar();
    do{
            printf("entrer D pour la position :");
            scanf("%s",&(j2->ps));
            getchar();
       }while((strcmp((j2->ps),"D")));
    printf("la valeur :");
    scanf("%d",&(j2->pr));
    printf("--------------------------\n");
    (j2->ptrn)=NULL;
    if(tete!=NULL)
    {
         P->ptrn=j2;
    }
    else
    {
         tete=j2;
    }
    P=j2;
    j3=(J*)malloc(sizeof(J));
    printf("le nom de milieu tirain 1 :");
    scanf("%s",&(j3->n));
    printf("le nom de f :");
    scanf("%s",&(j3->p));
    getchar();
    do
    {printf("entrer M pour la position :");
    scanf("%s",&(j3->ps));
    getchar();}while((strcmp((j3->ps),"M")));
    printf("la valeur :");
    scanf("%d",&(j3->pr));
    printf("--------------------------\n");
    (j3->ptrn)=NULL;
    if(tete!=NULL)
    {
         P->ptrn=j3;
    }
    else
    {
         tete=j3;
    }
    P=j3;
    j4=(J*)malloc(sizeof(J));
    printf("le nom d'atakant 1 :");
    scanf("%s",&(j4->n));
    printf("le nom de f :");
    scanf("%s",&(j4->p));
    getchar();
    do{printf("entrer A pour la position :");
    scanf("%s",&(j4->ps));
    getchar();}while((strcmp((j4->ps),"A")));
    printf("la valeur :");
    scanf("%d",&(j4->pr));
    printf("--------------------------\n");
    (j4->ptrn)=NULL;
    if(tete!=NULL)
    {
         P->ptrn=j4;
    }
    else
    {
         tete=j4;
    }
    P=j4;
    return tete;
}
//****************affichage***************
void aff(J *tete)
{    J *P;
     P=tete;
     if(!tete)
     printf("la liste n'existe pas\n");
     else
     {
           while (P!=NULL)
           {
                 printf("-> %s\n",(P->n));
                 printf("-> %s\n",(P->p));
                 printf("-> %s\n",(P->ps));
                 printf("-> %d\n",(P->pr));
                 printf("------------------\n");
                 P=P->ptrn;
           }
      }
}
//***************vider la liste*****************
J *vider(J *tete)
{
        tete=NULL;
        printf("la liste est vide\n");
        printf("-------------------------------------\n\n");
        printf("-------------------------------------\n");
        printf("merci bcp\n");
        return tete;
}
//*******************la supression d'un element**************
J *supr_par_prenom(J *tete)
{
    J *Prec,*P;
    char Jprenom[20],position[2];
    int trouv=1;
    printf("entrer le nom de f : ");
    scanf("%s",&Jprenom);
    printf("entrer la position : ");
    scanf("%s",&position);
    P=tete;
    while(trouv==1 && P!=NULL)
    {
         if(strcmp((P->p),Jprenom)==0 && strcmp((P->ps),position)==0)
         {
               trouv=0;
         }
         else
         {
               Prec=P;
               P=P->ptrn;
         }
    }
    if(trouv==1)
    {
         printf("ce joueur n'existe pas\n");
    }
    else
    {
         if(P==tete)
         {
                tete=P->ptrn;
         }
         else
         {
                Prec->ptrn=P->ptrn;
         }

         free(P);
    }
    return (tete);
}
//**************la recherche par nom de f*********************
void recherch_par_nom(J *tete)
{
     char Jrnom[20],Jposition[2];
     J *P;
     int nbr;
     if(!tete)
     printf("la liste n'existe pas\n");
     else
     {P=tete;
     nbr=0;
     printf("entrer le nom de f de ce joueur : ");
     scanf("%s",&Jrnom);
     printf("entrer la position de ce joueur : ");
     scanf("%s",&Jposition);
     getchar();
     while(P!=NULL)
     {
        if(((strcmp((P->p),Jrnom))==0) && ((strcmp(Jposition,(P->ps)))==0))
        {
            printf("-> %s\n",(P->n));
            printf("-> %s\n",(P->p));
            printf("-> %s\n",(P->ps));
            printf("-> %d\n",(P->pr));
            nbr=nbr+1;
        }
        P=P->ptrn;
      }
      if(nbr==0)
      {
          printf("ce joueur n'existe pas\n");
      }
}}
//**************la recherche des elemenents inferieur ou egale un valeur***************
void recherch_par_valeur(J *tete)
{
     J *P;
     int valeur,nbr;
     if(!tete)
     printf("la liste n'existe pas\n");
     else
     {
            P=tete;nbr=0;
            printf("entrer la valeur de ce joueur : ");
            scanf("%d",&valeur);
            while (P!=NULL)
            {
                  if((P->pr)<=valeur)
                  {
                        printf("-> %s\n",(P->n));
                        printf("-> %s\n",(P->p));
                        printf("-> %s\n",(P->ps));
                        printf("-> %d\n",(P->pr));
                        printf("--------------\n");
                        nbr=nbr+1;
                  }
                  P=P->ptrn;
            }
            if(nbr==0)
            {
                  printf("cette valeur n'existe pas\n");
            }
      }
}
//***************l'insertion d'un element******************
J *insert_un_joueur(J *tete)
{
     J *nvj,*P;
     char Jinfo_n[20],Jinfo_p[20],Jinfo_ps[2];
     int trouv,Jinfo_pr;
     printf("le nom : ");
     scanf("%s",&(Jinfo_n));
     printf("le nom de f : ");
     scanf("%s",&(Jinfo_p));
     printf("la position : ");
     scanf("%s",&(Jinfo_ps));
     printf("la valeur : ");
     scanf("%d",&(Jinfo_pr));
     P=tete;
     trouv=1;
     while(P!=NULL && trouv==1)
     {
            if(strcmp((P->ps),(Jinfo_ps))==0)
            {
                    trouv=0;
            }
            else
            {
                    P=P->ptrn;
            }
     }
     if(trouv==1)
     {
            printf("ce joueur ne peut pas inserer, modifier la position SVP\n");
     }
     else
     {
            nvj=(J*)malloc(sizeof(J));
            memcpy(nvj->n,Jinfo_n,sizeof(Jinfo_n));
            memcpy(nvj->p,Jinfo_p,sizeof(Jinfo_p));
            memcpy(nvj->ps,Jinfo_ps,sizeof(Jinfo_ps));
            nvj->pr=Jinfo_pr;
            nvj->ptrn=P->ptrn;
            P->ptrn=nvj;
     }
     return tete;
}
main()
{
      int i,valeur,ter=1,c;
      J *JOUEUR,*Jtete;
      JOUEUR=NULL;
      printf("ce programme pour creer votre equipe et vous pouvez modefier les joueurs\n");
      printf("entrer votre commonde SVP :\n1-la creation de votre equipe\n2-l'insertion un autre joueur\n3-l'affichage de votre equipe\n4-la recherche par le nom\n5-la recherche par valeur\n6-la supression par le nom\n7-veder la liste et quitter le programme\n");
      do
      {
       printf("votre commonde :");
       scanf("%d",&c);
       switch(c)
       {
                 case 1:JOUEUR=init();break;
                 case 2:
                 if(JOUEUR==NULL)
                 printf("la liste n'existe pas\n");
                 else
                 JOUEUR=insert_un_joueur(JOUEUR);break;
                 case 3:aff(JOUEUR);break;
                 case 4:recherch_par_nom(JOUEUR);break;
                 case 5:recherch_par_valeur(JOUEUR);break;
                 case 6:
                 if(JOUEUR==NULL)
                 printf("la liste n'existe pas\n");
                 else
                 JOUEUR=supr_par_prenom(JOUEUR);break;
                 case 7:
                 if(JOUEUR==NULL)
                 printf("la liste n'existe pas\n");
                 else
                 JOUEUR=vider(JOUEUR);printf("au revoir\n");return 0;break;
                 default:printf("ce choix n'existe pas\n");break;
       }
       printf("1 pour une autre commonde deferant a 1 pour termener :");
       scanf("%d",&ter);
       }while(ter==1);
}

أرجو المعذرة لأنني لم أشرح الكود الآن و لكنني سأحاول ذلك في وقت لاحق و أكيد ان كان هناك أي استفسار أو أي خطأ أو أي حالات خاصة اخرى لم أوظفها فأفيدوني يا أساتذتي الكرام فانما أنا سائرة في الطريق كمبتدئة

لكم جزيل الشكر و الله ولي الأجر و الثواب

تم تعديل هذه المشاركة بواسطة tantie L في 3 ديسمبر 2013 في 03:25

1

ابتسم للدنيا تبتسم لك و افعل الخير و انساه و لا تنسى أي أمر سيء قمت به حتى لا تكرره


لا تنسونا من صالح دعائكم أعانكم الله و ثبتكم على سواء السبيل


:)  :lol:  ^_^ 

مواضيع مشابهة