تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 2 از 6 اولاول 123456 آخرآخر
نمايش نتايج 11 به 20 از 54

نام تاپيک: آموزش پيشرفته C

  1. #11
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    اسامي ماكروهاي از پيش تعريف شده

    اسامي تعداد 5 ماكرو ( قبلا"تعريف شده است ) كه به همراه كامپايلر استاندارد
    زبان C وجود دارند ، عبارتند از : - LINE( -1
    - FILE( -2
    - DATE( -3
    - TIME( -4
    - STDC( -5

    ماكروي -LINE- حاوي شماره دستوري از فايل برنامه است كه در حال ترجمه شدن
    مي باشد .
    ماكروي -FILE- حاوي نام فايلي است كه اكنون در حال ترجمه شدن مي باشد .
    ماكروي -DATE- حاوي رشته اي بصورت mm/dd/yy است و حاوي تاريخي است كه فايل
    برنامه ، ترجمه شده است ( mm براي بيان ماه ، dd براي بيان روز و yy براي بيان
    سال است ) .
    ماكروي -TIME- حاوي رشته اي بصورت hh:mm:ss است و شامل زماني است كه فايل
    برنامه ، ترجمه شده است ( hh براي بيان ساعت ، mm براي بيان دقيقه و ss براي
    بيان ثانيه است ) .
    ماكروي -STDC- مشخص مي كند كه كامپايلر مورد استفاده استاندارد است يا خير.
    اگر محتويات اين ماكرو برابر با يك (1) باشد ، كامپايلر استاندارد و در غير د استاندارد نيست .

  2. #12
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    دستور پيش پردازنده #line

    دستور # line محتويات دو ماكروي -LINE و -FILE - را تغيير مي دهد . دستور # line
    به صورت زير بكار مي رود : "
    نام فايل " <شماره > # line
    شماره ، يك عدد صحيح مثبت است كه مقدار جديد ماكروي -LINE- را مشخص مي كند
    و " نام فايل " كه اختياري نيز هست ، محتويات جديد ماكروي -FILE- را تعيين
    مي كند . ماكروي # line براي اشكال زدايي برنامه مفيد است .

    مثال : #include "stdio.h"
    #line 100
    main)(
    {
    printf("\nprintf start at address:");
    printf("%d\n"/_LINE)_;
    }

    در مثال بالا مقدار اوليه اي كه در ماكروي -LINE- قرار مي گيرد برابر با 100
    است . لذا شماره دومين دستورprintf برابر با 105 خواهد بود. اين مطلب از خروجي امه كه چاپ محتويات ماكروي -LINE- است مشخص مي گردد .

  3. #13
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    دستور پيش پردازنده # error

    دستور # error موجب جلوگيري از ادامه ترجمه برنامه توسط كامپايلر شده و به
    زير بكار مي رود :
    پيام خطا # error
    پيام خطا ، جمله اي است كه كامپايلر پس از رسيدن به اين دستور ، آن را بصورت
    زير در صفحه نمايش ظاهر مي كند :
    پيام خطا:Error directive شماره خط نام فايل :Error

    مثال : main)(
    {
    int arr[4] / i ;
    for( i=0 ; i < 100 ; i++)
    {
    if ( i > 4)
    #error enter less than 20 ;
    else
    scanf("%d"/&arr[i] );
    }

    در حين ترجمه برنامه مثال بالا پيام زير صادر مي شود : Error directive : enter less than 20

  4. #14
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    ساختمان ها

    قبلا" مشاهده كرديم كه چگونه يك متغير ، يك قلم از داده را در خود نگهداري
    مي كند و همچنين ديديم كه چگونه مي توان چند عنصر همنوع را در يك آرايه ذخيره
    كرد . گاهي لازم است ، چند عنصر غير همنوع را تحت يك نام در حافظه ذخيره نمود .
    ولي با مطالبي كه تاكنون گفته شد انجام اين كار ممكن نيست . بعنوان مثال ، اگر
    بخواهيم اطلاعات مربوط به كارمندان موسسه اي را كه شامل نام كارمند ( از نوع
    كاراكتري ) ، شماره كارمندي ( از نوع عدد صحيح ) ، حقوق ( از نوع عددي صحيح )
    غيره است ، تحت يك نام ذخيره كنيم . در اين صورت متغير معمولي و آرايه جوابگوي
    نياز ما نيستند . براي رفع اين مشكل در زبان C ، از نوعي داده به نام ساختمان
    استفاده مي شود . بنابراين مي توان گفت كه : " ساختمان " در زبان C نامي براي ه اي از متغيرها است كه اين متغيرها مي توانند همنوع نباشند .

  5. #15
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    تعريف نوع ساختمان

    براي تعريف نوع ساختمان ، از دستور struct بصورت زير استفاده مي شود : {
    <نام ساختمان > struct
    اجزاي ساختمان };

    نام ساختمان ، از قانون نامگذاري براي متغيرها تبعيت مي كند. اجزاي ساختمان
    متغيرهايي هستند كه قسمتي از ساختمان مي باشند و همانند يك متغير معمولي و يا
    آرايه بايد اسم و نوع هر كدام مشخص باشد. به يك ساختمان نمونه كه براي نگهداري
    اسم ، شماره كارمندي و حقوق كارمندان نوشته شده است توجه نماييد : struct personel {
    char name [31];
    int person;
    int salary;
    };

    در تعريف نوع ساختمان بايد موارد زير را در نظر داشت : 1
    حرف { مي تواند در همان خطي كه دستور struct آمده است نباشد . 2
    دستور structبه ; ختم مي شود .
    با مطالبي كه تاكنون گفته شد، روش تعريف نوع ساختمان مشخص گرديد. ولي تعريف
    ساختمان براي استفاده از آن كافي نيست . بلكه پس از تعريف نوع ساختمان بايد
    متغيرهايي از اين نوع را تعريف كرده وسپس اين متغيرها را در برنامه بكارگرفت .
    براي روشن شدن موضوع ، يادآوري مي كنيم كه intو floatو دو نوع تعريف شده براي
    كامپيوتر هستند كه بايد متغيرهايي از اين نوع ها تعريف و سپس از آنها استفاده
    گردد . تعريف متغيرهايي از نوع ساختمان به دو روش امكان پذير است :
    روش اول ) پس از تعريف نوع ساختمان ، متغيرهاي از نوع ساختمان با دستور struct
    تعريف مي شوند .
    در اين روش از شكل كلي زير استفاده مي شود : ;
    نوع ساختمان <اسامي متغيرهاي ساختمان >struct "
    نوع ساختمان " ، اسمي است كه قبلا" در دستور struct ساختار آن مشخص شده
    است . " اسامي متغيرهاي ساختمان " ، متغيرهايي را مشخص مي كند كه بايد از نوع
    ساختماني كه اسم آن در نوع ساختمان مشخص شده است باشد . اگر تعداد اين متغيرها
    بيش از يكي باشد با كاما از يكديگر جدا مي شوند . بعنوان مثال ، دستور struct personel p1/p2;

    دو متغير ساختمان به اسامي p1و p2و را تعريف مي كند كه از نوع ساختمان personel
    هستند .
    روش دوم ) در حين تعريف نوع ساختمان ( بلافاصله پس از تعريف نوع ) اسامي
    متغيرهاي ساختمان مشخص مي گردند .
    در اين روش از شكل كلي زير استفاده مي شود . {
    اسم ساختمان struct
    اجزاي ساختمان ;
    اسامي متغيرهاي ساختمان }
    در اين روش ، ذكر اسم ساختمان اجباري نيست . در دستور زير دقت كنيد : struct {
    char name [31];
    int persno;
    int salary;
    } p1/p2;

    دستور فوق دو متغير ساختمان به اسامي p1و p2و را تعريف مي كند كه ساختار خص شده است .

  6. #16
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    دسترسي به اجزاي ساختمان

    همانطوركه مشاهده شد هر ساختمان داراي چند جزئ است كه براي دسترسي به هر يك
    از اجزاي آن از روش كلي زير استفاده مي شود :
    <اسم متغير از نوع ساختمان >.<نام جزئ>
    بعنوان مثال ، با فرض اين كه p1و p2و دو متغير از نوع ساختمان بوده و داراي 3
    جزئ به اسامي name، person،و salaryو باشند ، دستورات زير موجب دسترسي به هر
    يك از اجزاي متغير p1 مي شوند كه در مورد p2 نيز ميتوان به همين طريق عمل كرد: p1.name
    p1.persno
    p1.salary

    اگر اجزاي ساختمان ، از نوع آرايه باشند ، ذكر انديس آرايه جهت دسترسي به
    عناصر آن الزامي است . بعنوان مثال ، دستور زير را در نظر مي گيريم : struct student {
    char name [31];
    int cours [10];
    int unit [10];
    int grade [10];
    int persno;
    } st1.st2;

    در دستور فوق بعضي از اجزاي ساختمان student بصورت آرايه اي تعريف شده اند .
    دستورات زير موجب دسترسي به اجزاي متغير ساختمان st1 مي شوند : st1.cours [1]
    st1.cours [i]
    st1.name

    همانطوركه مشاهده شد اگر اجزاي ساختمان رشته اي باشند ميتوان به تك تك عناصر
    آن نيز دسترسي پيدا كرد (st1.name[i])
    در مورد مقدار دادن به اجزاي ساختمان مي توان همانند يك متغير معمولي عمل
    كرد . لذا با فرض اين كه st1 متغير ساختماني باشد كه قبلا" تعريف شده است
    دستورات زير معتبر مي باشند : st1.persno=1243;( 1)
    printf("\n %d"/st1.persno);( 2)
    gets(st1.name);( 3)
    for( i=0;i<10;i++( )4)
    scanf("%d"/&st1.unit[i]);


    مثال : برنامه اي كه دو عدد موهومي را از ورودي خوانده و مجموع آنها را
    محاسبه مي كند و به خروجي مي برد . main)(
    {
    struct complex
    {
    int real ;
    int unreal ;
    } comp1 / comp2 /result ;
    printf("\n enter the real part");
    printf(" for number %d:"/1);
    scanf("%d"/&comp1.real );
    printf("\n enter the unreal part");
    printf(" for number %d:"/1 );
    scanf("%d"/&comp1.unreal );
    printf("\n enter the real part ");
    printf(" for number %d:"/2 );
    scanf("%d"/&comp2.real );
    printf("\n enter the unreal part");
    printf(" for number %d:"/2 );
    scanf("%d"/&comp2.unreal );
    result.real=comp1.real+comp2.real;
    result.unreal=
    comp1.unreal+comp2.unreal;
    printf("\nthe result of sum is:");
    printf("\nreal part=" );
    printf("%d"/result.real);
    printf("\n unreal part" );
    printf("=%d"/result.unreal);
    }

    نمونه اي از خروجي برنامه مثال بالا : enter the real part for number 1:12
    enter the unreal part for number 1:25
    enter the real part for number 2:5
    enter the unreal part for number 2:19

    the result of sum is:

    real part=17

    un

  7. #17
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    دسترسي به اجزاي ساختمان

    همانطوركه مشاهده شد هر ساختمان داراي چند جزئ است كه براي دسترسي به هر يك
    از اجزاي آن از روش كلي زير استفاده مي شود :
    <اسم متغير از نوع ساختمان >.<نام جزئ>
    بعنوان مثال ، با فرض اين كه p1و p2و دو متغير از نوع ساختمان بوده و داراي 3
    جزئ به اسامي name، person،و salaryو باشند ، دستورات زير موجب دسترسي به هر
    يك از اجزاي متغير p1 مي شوند كه در مورد p2 نيز ميتوان به همين طريق عمل كرد: p1.name
    p1.persno
    p1.salary

    اگر اجزاي ساختمان ، از نوع آرايه باشند ، ذكر انديس آرايه جهت دسترسي به
    عناصر آن الزامي است . بعنوان مثال ، دستور زير را در نظر مي گيريم : struct student {
    char name [31];
    int cours [10];
    int unit [10];
    int grade [10];
    int persno;
    } st1.st2;

    در دستور فوق بعضي از اجزاي ساختمان student بصورت آرايه اي تعريف شده اند .
    دستورات زير موجب دسترسي به اجزاي متغير ساختمان st1 مي شوند : st1.cours [1]
    st1.cours [i]
    st1.name

    همانطوركه مشاهده شد اگر اجزاي ساختمان رشته اي باشند ميتوان به تك تك عناصر
    آن نيز دسترسي پيدا كرد (st1.name[i])
    در مورد مقدار دادن به اجزاي ساختمان مي توان همانند يك متغير معمولي عمل
    كرد . لذا با فرض اين كه st1 متغير ساختماني باشد كه قبلا" تعريف شده است
    دستورات زير معتبر مي باشند : st1.persno=1243;( 1)
    printf("\n %d"/st1.persno);( 2)
    gets(st1.name);( 3)
    for( i=0;i<10;i++( )4)
    scanf("%d"/&st1.unit[i]);


    مثال : برنامه اي كه دو عدد موهومي را از ورودي خوانده و مجموع آنها را
    محاسبه مي كند و به خروجي مي برد . main)(
    {
    struct complex
    {
    int real ;
    int unreal ;
    } comp1 / comp2 /result ;
    printf("\n enter the real part");
    printf(" for number %d:"/1);
    scanf("%d"/&comp1.real );
    printf("\n enter the unreal part");
    printf(" for number %d:"/1 );
    scanf("%d"/&comp1.unreal );
    printf("\n enter the real part ");
    printf(" for number %d:"/2 );
    scanf("%d"/&comp2.real );
    printf("\n enter the unreal part");
    printf(" for number %d:"/2 );
    scanf("%d"/&comp2.unreal );
    result.real=comp1.real+comp2.real;
    result.unreal=
    comp1.unreal+comp2.unreal;
    printf("\nthe result of sum is:");
    printf("\nreal part=" );
    printf("%d"/result.real);
    printf("\n unreal part" );
    printf("=%d"/result.unreal);
    }

    نمونه اي از خروجي برنامه مثال بالا : enter the real part for number 1:12
    enter the unreal part for number 1:25
    enter the real part for number 2:5
    enter the unreal part for number 2:19

    the result of sum is:

    real part=17

    un

  8. #18
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

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

    مي توان به متغيرهاي از نوع ساختمان كه داراي كلاس حافظه استاتيك و خارجي
    باشند ، همانند آرايه ها مقدار اوليه داد . براي اين منظور مقادير اوليه در بين {
    و} قرار گرفته و با كاما از يكديگر جدا ميشوند. مقاديري كه به متغير ساختمان
    قرار مي گيرند : اولين مقدار به اولين جزئ، دومين مقدار به دومين جزئ و n امين
    مقدار به n امين جزئ نسبت داده مي شود . اگر تعداد مقادير ، از تعداد اجزاي
    متغير ساختمان كمتر باشند ، مقدار بقيه اجزاي عددي برابر با صفر و مقدار بقيه
    اجزاي رشته اي برابر با NULL ( كاراكتر تهي ) خواهد شد .

    مثال : ساختمان student را كه در زير آمده است در نظر بگيريد : struct student {
    char name[21] ;
    char address[30] ;
    int grade[10] ;
    int stno ;
    } s1/ s2 ;

    اكنون مجموعه دستورات زير را ملاحظه نماييد : struct student st1={( 1)
    "ali"/"mohammad"/
    "{0}/15} ;

    struct student st2={0} ;( 2)

    struct student st3={( 3)
    "ahmad"/
    '\0'/{15/20}/0} ;

    struct student st4={"reza"} ;( 4)

    دستور (1) ، مقدار "ali"در nameر، "mohammad"،در addressر ، صفر در كليه
    عناصر آرايه grade و 15در stnoر از متغير st1 قرار مي گيرد . در دستور (2)
    كليه اجزاي عددي متغير st2 ، مقدار صفر و اجزاي كاراكتري ، مقدار تهي را
    مي پذيرند ، در دستور (3) ، مقدار "ahmad"در nameر ، رشته تهي در address ، 15
    و 20 بترتيب در محل هاي اول و دوم آرايه grade و صفر در stno متغير st3 قرار
    مي گيرد . در دستور (4) ، مقدار "reza" در جزئ name از متغير st4 قرار گرفته و ن متغير مقدار صفر و اجزاي غيرعددي مقدار تهي را مي پذيرند.

  9. #19
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    نتساب ساختمانها به يكديگر

    در گونه هاي اوليه زبان C ، انتساب يك ساختمان به ساختمان ديگر امكان پذير
    نبود ولي در گونه هاي جديد C و همچنين در توربو C انتساب متغيرهاي ساختمان كه
    از يك نوع باشند امكان پذير است .

    مثال : برنامه اي كه مشخصات چند دانشجو را بهمراه معدل آنها از ورودي خوانده
    و سپس دانشجويي را كه دومين معدل را از نظر بزرگي دارد پيدا مي كند . struct student {
    char name[30] ;
    float grade ;
    } ;
    main)(
    {
    int i / n ;
    float y ;
    struct student st1={0} ;
    struct student st1={0}/ st ;
    printf("\n enter the number " );
    printf(" of student :" );
    scanf("%d"/&n );
    for( i=1 ; i <= n ; i++)
    {
    printf("\nenter name of student");
    printf(" %d: "/i );
    scanf("%s"/st.name );
    printf("\nenter grade of student");
    printf(" %d: "/i );
    scanf("%f"/&y );
    st.grade=y ;
    if( st.grade > st1.grade)
    {
    st2=st1 ;
    st1=st ;
    }
    else if( st.grade > st2.grade)
    st2=st ;
    }
    printf("\nthe name of second ");
    printf("student is: %s"/st2.name );
    printf("\n\nthe grade of second" );
    printf(" student is:" );
    printf("%.2f"/st2.grade );
    }

    نمونه اي از خروجي برنامه مثال بالا : enter the number of student:5
    enter name of student 1:ali
    enter grade of student 1:12.6
    enter name of student 1:sadegh
    enter grade of student 2:18.2
    enter name of student 3:reza
    enter grade of student 3:14.5
    enter name of student 4:mohammad
    enter grade of student 4:12
    enter name of student 5:ahmad
    enter grade of student 5:15
    the name of second student is:ahmad
    the grade of second student is:15.00

  10. #20
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    آرايه اي از ساختمانها

    يكي از بيشترين موارد كاربرد ساختمانها ، تعريف شدن بصورت آرايه مي باشد .
    براي تعريف آرايه اي از ساختمان ، ابتدا بايد نوع ساختمان را تعريف كرده وهمانند
    تعريف متغيرهاي معمولي ، آرايه اي از آن نوع را تعريف نمود . بعنوان مثال دستور struct personel st[100];

    آرايه 100 عنصري st را كه هر عنصر آن از نوع ساختمان هستند تعريف مي كند .
    اگر فرض شود كه persno يكي از اجزاي ساختمان personal باشد به طريق زير ميتوان
    به اين جزئ دسترسي پيدا كرد و مقداري را به آن نسبت داد : st [i] .persno= 100;

    دستور فوق موجب مي شود تا مقدار جزئ persno از عنصر i ام آرايه st برابر با 100
    گردد .

    مثال : برنامه اي كه مشخصات تعدادي از افراد را كه شامل نام و آدرس ( شامل :
    خيابان ، شهر و ... ) است ، از ورودي خوانده و در آرايه اي از ساختمان ها قرار
    مي دهد . اين برنامه قادر است : فردي را از آرايه حذف كند ، فرد جديدي را به
    آرايه اضافه نمايد و محتويات كل آرايه را چاپ كند . قبل از نوشتن اين برنامه
    جهت درك صحيح آن ، ساختار سلسله مراتبي و وظايف هر يك از توابع شكل ( الف ) را
    بيان مي كنيم :
    ؤؤؤؤؤؤؤؤؤؤؤؤ | main )(|

    ؤؤؤؤؤؤؤؤؤؤؤؤ |

    ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤ
    ؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |menu_seletc)(| | enter )(| | delete )(| | list )(| |init_list )(|

    ؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |

    ؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |find_free )(|

    ؤؤؤؤؤؤؤؤؤؤؤؤؤؤ
    شكل ( الف ) . نمودار سلسله مراتبي برنامه مثال

    وظيفه تابع ()main : تعريف ساختمان ها ، توابع و فراخواني توابع مطابق شكل
    ( الف ) .
    وظيفه تابع ()menu-slselect : ظاهر نمودن منويي در صفحه نمايش جهت انتخاب
    نوع عمل برنامه .
    وظيفه تابع ()enter : فراخواني تابع ()find-fefree جهت پيدا كردن جاي خالي
    در آرايه ، خواندن اطلاعات از صفحه كليد و وارد كردن آنها در جاي پيدا شده در
    آرايه .
    وظيفه تابع ()delete : حذف افراد از آرايه ( براي اين منظور اولين محل از
    جزئ name را برابر با '\0' قرار مي دهد ) .
    وظيفه تابع ()list : نمايش محتويات كامل آرايه .
    وظيفه تابع ()init-lslist : ارزش دهي به عناصر آرايه ( اولين محل از جزئname
    را برابر با '\0' قرار مي دهد ) .
    وظيفه تابع ()find-fefree : پيدا كردن جاي خالي در آرايه جهت قرار دادن
    اطلاعات جديد در آن محل . /* program example 8 - 4 */

    #include "stdio.h"
    #include "stdlib.h"
    #define MAX 100
    struct addr{
    char name[10] ;
    char street[15] ;
    char city[10] ;
    char state[3] ;
    unsigned long int zip;
    } addr_info[MAX] ;
    void init_list(void)/enter(void );
    void delete(void)/list(void );
    int menu_select(void)/find_free(void);
    main(void)
    {
    char choice / ch ;
    init_list )(;
    for(;{
    choice=menu_select )(;
    switch(choice)
    {
    case 1;
    enter{} ;
    break ;
    case 2;
    delete )(;
    break ;
    case 3;
    list )(;
    break ;
    case 4;
    exit(0 );
    }
    }
    }
    void init_list(void)
    {
    register int t ;
    for(t=0 ; t addr_info[t].name[0]='\0' ;
    }
    menu_select(void)
    {
    char s[10] ;
    int c ;
    clrscr )(;
    gotoxy(29.6 );
    printf("1 )<< enter a name >>");
    gotoxy(29.8 );
    printf("2 )<< delete a name >>");
    gotoxy(29.10 );
    printf("3 )<< list the file >>");
    gotoxy(29.12 );
    printf("4 )<< Quit >>");
    do {
    gotoxy(24/15 );
    printf(" Please enter your" );
    printf(" choice(1-4");
    gets(s );
    c=atoi(s );
    } while(c < 0 || c > 4 );
    return( c );
    }
    void enter(void)
    {
    int slot ;
    char s[80] ;
    slot=find_free )(;
    if(slot==-1)
    {
    printf("\n list full");
    return ;
    }
    gotoxy(5/17 );
    printf("enter name:" );
    gets(addr_info[slot].name);

    gotoxy(40/17 );
    printf("enter street:" );
    gets(addr_info[slot].street);

    gotoxy(5/19 );
    printf("enter city:" );
    gets(addr_info[slot].city);

    gotoxy(40/19 );
    printf("enter state:" );
    gets(addr_info[slot].state);

    gotoxy(22/21 );
    printf("enter zip:" );
    gets(s );

    addr_info[slot].zip=
    strtoul(s/'\0'/10 );
    }
    find_free(void)
    {
    register int t ;
    for(t=0 ; addr_info[t].name[0]
    && t < MAX ; ++t );
    if(t==MAX )return- 1 ;
    return t ;
    }
    void delete(void)
    {
    int slot ;
    gotoxy(28/19 );
    printf("enter record #(0-99");
    scanf("%d"/&slot );
    if(slot>=0 && slot addr info[slot].name[0]='\0';
    }
    void list(void)
    {
    register int t ;
    int r=0 ;
    char ch ;
    clrscr )(;
    gotoxy(25/2 );
    printf(" << all information in");
    printf(" list are:>>" );
    gotoxy(13/3 );
    printf("**********************");
    printf("*******************" );
    printf("********************" );
    gotoxy(10/4 );
    printf(" name street");
    printf(" city " );
    printf(" state zip");
    printf(" " );
    gotoxy(10/5);
    ;
    ("ؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤ ")printf ;
    (" ؤؤؤؤؤؤ ")printf ;
    ("ؤؤؤؤ ؤؤؤؤؤؤؤ ")printf printf(" " );
    for(t=0;t {
    if(addr_info[t].name[0])
    {
    gotoxy(14/6+r );
    printf("%s "/addr_info[t].name);
    gotoxy(26/6+r );
    printf("%s "/addr_info[t].street);
    gotoxy(40/6+r );
    printf("%s "/addr_info[t].city);
    gotoxy(54/6+r );
    printf("%s "/addr_info[t].state);
    gotoxy(70/6+r );
    printf("%1u "/addr_info[t].zip);
    r++ ;
    }
    }
    gotoxy(13/6+r );
    printf("********************");
    printf("*********************" );
    printf("********************" );
    gotoxy(27/7+r );
    printf("press any key to continue");
    ch=getch )(;
    }

    نكته اي كه در مورد برنامه مثال بالا بايد در نظر داشت اين است كه در اين
    برنامه از توابع كتابخانه اي ()gotoxy ، ()atoi و ()strtoul استفاده شده است .
    نمونه اي از خروجي برنامه مثال بالا : 1 )<< enter a name >>
    2 )<< delete a name >>
    3 )<< list the file >>
    4 )<< Quit >>

    Please enter your choice(1-41

    enter name:mohammad
    enter street:daneshgah
    enter city:mashhad
    enter state:23
    enter zip:123


    1 )<< enter a name >>
    2 )<< delete a name >>
    3 )<< list the file >>
    4 )<< Quit >>

    Please enter your choice(1-42

    enter name:naser
    enter street:asrar
    enter city:mashhad
    enter state:34
    enter zip:432


    1 )<< enter a name >>
    2 )<< delete a name >>
    3 )<< list the file >>
    4 )<< Quit >>

    Please enter your choice(1-43

    ***************************************
    name street city state zip
    --- ------ ------ ------- --------
    mohammad daneshgah mashhad 23 123
    naser asrar mashhad 34 432
    ***************************************
    press

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •