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

an object of structure in another structure

مغلق
بدأه فدا في 9 مايو 2006 · 8 رد · 633 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هلأ لو عندي

كتبت سوف يظهر بهذا الشكل

typedef struct DATE {
 int Dyear;
 char Dmonth[10];
 int Dday;} date;

 typedef struct FLIGHT {
 int routeNum;
 int flightNum[3];
 date flightDate[3];
 int flightTime[3];
 int seatsAvailiable;  } flight;

وبدي ادخل قيم في

date flightDate[3];

اعمل

loop

و اكون عاملة

date dat;

و ادخل فيه القيم

و بعدين شلون احط هالقيم

في ال object

اللي في structre flight

اللي من نوع

date

?

تم تعديل هذه المشاركة بواسطة فدا في 9 مايو 2006 في 23:14

#2
 typedef struct FLIGHT {
 int routeNum;
 int flightNum[3];
   struct DATE {
   int Dyear;
   char Dmonth[10];
   int Dday;   } flightDate[3];

 int flightTime[3];
 int seatsAvailiable;  } flight;

و بدنا نوصل الها بفانكشن انو نعبي فيها التاريخ

هيك

    printf("\n\n\tEnter Flight %d Date ( year..month..day)  : ",i+1);
     scanf(stdin,"%d%s%d",&ft.flightDate.Dyear,ft.flightDate.Dmonth,&ft.flightDate.Dday);

ما بيقبل بيقولي

structure required on left side of . or *.

طيب شلون اوصل يعني

!!

:^)

#3

يا جماعة شو الخطأ بهذا الكود

الله يخليكو مستعجل

كود سي و معمول عالتوربو

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

 typedef struct DATE {
 int Dyear;
 char Dmonth[10];
 int Dday; } date;

 typedef struct FLIGHT {
 int routeNum;
 int flightNum;
 date flightDate;
 int flightTime;
 int seatAvailable;  } flight;



 void newFlight()
 {

 flight ft;
 FILE *fl;

 clrscr();
 ft.routeNum=0;

 if((fl=fopen("d:\FLY.bin","rb+"))==NULL)
 printf("\n\n\n\n\t\tcannot open file\n");



 else
   {
   printf("\n\n\n\t Enter route number : ");
   scanf("%d",&ft.routeNum);


   if(ft.routeNum!=0)
   {
   printf("\n\n\n\t this route already exist ! .. Try again ");
   printf("\n\n\tEnter Route Number (1 .. 1000 .. eof to exit) : ");
   scanf("%d",&ft.routeNum);
   while(!feof(stdin))
   {

     printf("\n\n\tEnter flight number of route %d : ",ft.routeNum);
     fscanf(stdin,"%d",&ft.flightNum);
     printf("\n\n\tEnter Flight Date ( year )  : ");
     fscanf(stdin,"%d",&ft.flightDate.Dyear);
     printf("\n\n\tEnter Flight Date ( month )  : ");
     fscanf(stdin,"%s",ft.flightDate.Dmonth);
     printf("\n\n\tEnter Flight Date ( day )  : ");
     fscanf(stdin,"%d",&ft.flightDate.Dday);
     printf("\n\nEnter seat available : ");
     fscanf(stdin,"%d",&ft.seatAvailable);

       fseek(fl,(ft.routeNum-1)*sizeof(flight),SEEK_SET);
       fwrite(&ft,sizeof(flight),1,fl);
       printf("\n\n\n\n\n\tEnter route number : ");
       scanf("%d",&ft.routeNum);
       }// end while
       } //end if

     else
     {
       while(!feof(stdin))
       {


       printf("\n\n\tEnter flight %d of route %d Numbers : ",ft.routeNum);
       fscanf(stdin,"%d",&ft.flightNum);
       printf("\n\n\tEnter Flight Date ( year..month..day)  : ");
       fscanf(stdin,"%d%s%d",&ft.flightDate.Dyear,&ft.flightDate.Dmonth,&ft.flightDate.Dday);
       printf("\n\nEnter seat available : ");
       fscanf(stdin,"%d",&ft.seatAvailable);



       fseek(fl,(ft.routeNum-1)*sizeof(flight),SEEK_SET);
       fwrite(&ft,sizeof(flight),1,fl);
       printf("\n\n\n\n\n\tEnter route number : ");
       scanf("%d",&ft.routeNum);
       }// end while
       }// end else
       fclose(fl);
       }// end else
       }// end function




     void main()
     {

     int list2=3;

     clrscr();

     while(list2!=2)
     {
       printf("\n\n\n\n\n\n\n");
       printf("\n\t\t       Access Flight Information ..");
       printf("\n\n\t\t       1 .. Add new flight to a specific route ..");
       printf("\n\n\t\t       2 .. exit");
    // printf("\n\n\t\t       2 .. Delete an existing flight form a specific route ..");
    // printf("\n\n\t\t       3 .. Show all flights in specific route ..");
       printf("\n\n\n\n\n\n\n\t\t      Please Enter ur choice : ");
       scanf("%d",&list2);

       switch(list2)
       {
       case 1:
        newFlight();
        break;

       case 2:
        exit();
       }
       }

    }
#4

في عدة أشياء لاحظتها أثناء قراءتي للكود ويبدو أنك ستحتاج لتعديل عدة نقاط

- متغير الشهر : char Dmonth[10];

هل تريد من المستخدم إدخال اسم الشهر كاملاً :o

- جملة switch : مناقش خيارين 1 و 2 وربما المستخدم يدخل اي قيمة ...

- في الدالة newFlight :

if((fl=fopen("d:\FLY.bin","rb+"))==NULL)
printf("\n\n\n\n\t\tcannot open file\n");

* لم يتم إنشاء الملف مسبقاً فكيف سيتم القراءة منه ؟

* في المسار يجب استخدام \\

scanf("%d",&ft.routeNum);


  if(ft.routeNum!=0)

لماذا استخدمت الشرط السابق ؟

while(!feof(stdin))

متى ستنتهي هذه الحلقة ؟؟

إن اراد المستخدم إنهاء عملية إدخال البيانات ماذا يفعل؟

نقطة أخرى :

استخدام scanf لعملية إدخال البيانات دون التأكد من المدخلات هل صحيحة ام لا سيسبب مشاكل كبيرة في الداتا ..

تحياتي

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#5

ايوة هو المفروض في switch case

انو اعمل default

بس هادا كود مبدأي

لان هذا 1 على 10 من المشروع

و لسا باقي كتير

فقلت اهتم بالتفاصيل بعدين

::

المستخدم بيخرج بالضغط على كنترول و z

لان في جملة بال printf

انو للخروج eof

::

بالنسبة لتدخيل اسم الشهر

ايوة بدي اياه كاسم

كلو او لا هو حر

انا عطينه المساحة الكافية

::

بالنسبة لجملة ال if

هاي عشان يتأكد انو المكان اللي بدي اكتب فيه فاضي

اذا مش فاضي ما يكتب فيه

عشان ما بدي يمحي معلومات يدخلها المستخدم بالاول

::

::

::

عفكرة انا يدوب بعد الفجر بفكر بالموضوع

استنتجت انو ما في فايل اصلا يعملو اب ديت

و غيرتها اول مرة المود لـ wb

و بعدين رجعتها متل ما هلأ في الكود فوق

::

::

::

طيب انا لو بدي احقق شرط

انو اخلي بينفع انو ال route الواحدة

ينفع تاخد اكتر من flight

شو اعمل ؟

array og flights ?

و هيك راح يكون لازم array

من الوقت والتاريخ و المقاعد المتوفرة

انا جربته

بس مش متأكدة من شكلو

؟؟

#6

مظبوط تعملى array of flight و array of routes و زى ما كنت قلتلك قبل كدة الربط بينهم حيبقى عن طريق ال routenum .

#7

اه فهمت قصة الربط

بس انا فكرت انو array

لل flight

انو ليش يلزمني array for route

لان المسموح انو الروت الواحد ياخد اكتر من فلايت

لكن العكس غير صحيح

:lol:

الشمروع بالمرفقات

:rolleyes:

و الباسورد

programming

C_FINAL_PROJECT.doc

#8

حتحتاجى array لل route علشان البرنامج بتاعك مش حيبقى فيه route واحد بس أكيد حيبقى أكتر من واحد.

#9

ايوة انا شفت وين الغلط

و عدلته في الكود الاولاني

:lol:

هذا الموضوع مغلق.

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