صفحه 3 از 5 اولاول 12345 آخرآخر
نمایش نتایج 81 تا 120 از 163

نام تاپیک: تمرین های زبان برنامه نویسی ++C

  1. #81
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    همچنین در خصوص case یک مثال ساده میشه بذارید؟
    یک نگاه به این لینک بنداز
    http://www.intap.net/~drw/cpp/cpp04_02.htm
    موفق باشی

  2. #82
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    نقل قول نوشته شده توسط sorroshsaket مشاهده تاپیک
    bebin man mikham aval az hame masalan 2 ta majmoaro vared konam bad benvisam
    a ejtemae b eshterakesh ba c ejtemash ba b
    va
    b ejtemash ba c eshterakesh ba naghize a
    mikham behem bege yekian ya na
    دوست من مجموعه رو باید با آرایه تعریف کنی و اشتراکش رو من گفتم ولی اجتماع هم در این سر فایل ها موجوده پس این کار امکان پذیره ولی در صورتی که نخواهید از این سر فایل ها استفاده کنید قضیه یکم فرق می کنه در ضمن قوانین سایت رو رعایت کنید و فارسی بنویسید.

  3. #83

    نقل قول: تمرین های زبان برنامه نویسی ++C

    مشکل من اینه که من نمی دونم این گزاره ها رو چه نوعی تعریف کنم
    ضمنا من تازه کارم
    وقتی مثلا
    aاجتماعb رووارد می کنم خوب باید تو یه نوع متغییر ذخیره شه؟

  4. #84

    نقل قول: تمرین های زبان برنامه نویسی ++C

    نقل قول نوشته شده توسط sorroshsaket مشاهده تاپیک
    مشکل من اینه که من نمی دونم این گزاره ها رو چه نوعی تعریف کنم
    ضمنا من تازه کارم
    وقتی مثلا
    aاجتماعb رووارد می کنم خوب باید تو یه نوع متغییر ذخیره شه؟
    گفتید a یک مجموعه هست، یعنی در C/C++‎ یک آرایه هست.
    محتویان آن ها چه هست؟ عدد صحیح، اعشاری، رشته ، ؟؟

    متناسب با آن نوع متغیر را تعریف کنید، یعنی آرایه ای از همان نوع متغیر.

    برای اجتماع، یک لیست پیوندی باید بسازید، به ترتیب دو آرایه را مقایسه کنید، هر کدام در یکی بود و در دیگری نبود، آن را اضافه می کنید به لیست پیوندی، به علاوه مشترک ها.

    لیست پیوندی را یا باید بسازید یا از vector / list در C++‎ استفاده کنید که دوستان برایتان مثال زدند.


    اگر هم می خواهید به شکل حرفه ای تر برنامه بنویسید، در C++‎ از کلاس Set استفاده کنید که در آن، مجموعه تعریف می کنید و می توانید مقایسه انجام دهید و تغییرات لازم را بدون لیست پیوندی یا آرایه انجام دهید.
    برای مثال این لینک

  5. #85

    نقل قول: تمرین های زبان برنامه نویسی ++C

    برای مثال عبارت زیر باید در چه نوع متغیری ذخیره شه
    مقادیر مجموعه ها عدد صحیح است

  6. #86
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    نقل قول نوشته شده توسط sorroshsaket مشاهده تاپیک
    برای مثال عبارت زیر باید در چه نوع متغیری ذخیره شه
    مقادیر مجموعه ها عدد صحیح است
    ببین شما وقتی که اجتماع و اشتراک رو داشته باشین هر طرف تساوی رو می تونید در یک آرایه نگه داری کنید و سپس با یک مقایسه از نوع Bool تعیین کنید که تساوی دو مجموعه برابر است یا نه.
    اینم برای اجتماع دو مجموعه با استفاده از سر فایل الگوریتم

    // set_union example
    #include <iostream>
    #include <algorithm>
    #include <vector>
    using namespace std;

    int main () {
    int first[] = {5,10,15,20,25};
    int second[] = {50,40,30,20,10};
    vector<int> v(10); // 0 0 0 0 0 0 0 0 0 0
    vector<int>::iterator it;

    sort (first,first+5); // 5 10 15 20 25
    sort (second,second+5); // 10 20 30 40 50

    it=set_union (first, first+5, second, second+5, v.begin());
    // 5 10 15 20 25 30 40 50 0 0

    cout << "union has " << int(it - v.begin()) << " elements.\n";

    return 0;
    }
    شما بهتر سر فایل الگوریتم را مرور کنید ولی اگه دوست دارید بدون استفاده از این سر فایل برنامتون رو بنویسید راه نیما جون بهتره.....

  7. #87
    کاربر دائمی
    تاریخ عضویت
    تیر 1387
    محل زندگی
    سرزمین کوروش کبیر
    پست
    411

    نقل قول: تمرین های زبان برنامه نویسی ++C

    سلام امین جان،
    بابت لینک ارسالی فوق العاده مفیدت ممنونم.
    ببین من برنامه 2 رو با این روش نوشتم؛ البته فعلا تا 4 رقم جواب میده که خب افزایش به ارقام بعدی با توجه به الگوریتمی که نوشتم کاری نداره (فقط به ازای هر رقم چند خطی به کد اضافه میشه) ولی میخواستم ببینم آیا این روش خوبه؟ منظور شما استفاده از همین روش بوده یا روش بهتری هم داریم؟ اگه داریم روشی که من نوشتم چه جوریه؟
    توجه: با توجه به اینکه برنامه هنوز کامل نیست و من حروف رو از اعداد جدا نکردم و داخل خود عبارت هستند ، لطفا عبارت حروفی رو از راست به چپ بخونید تا در صورت درست بودن الگوریتم اون رو هم اصلاح کنم.
    با تشکر


    #include <conio.h>
    #include <iostream>
    using namespace std;
    int main()
    {
    int a,d=8547;
    int b=1;
    while(d)
    {
    int r=d%10;
    cout<<r<<'*'<<b<<'+';
    //---------------- for first number(baraye raghame aval)
    switch(r*b)
    {
    case 1:
    cout<<"yek";
    break;
    case 2:
    cout<<"do";
    break;
    case 3:
    cout<<"se";
    break;
    case 4:
    cout<<"chahar";
    break;
    case 5:
    cout<<"panj";
    break;
    case 6:
    cout<<"shesh";
    break;
    case 7:
    cout<<"haft";
    break;
    case 8:
    cout<<"hasht";
    break;
    case 9:
    cout<<"noh";
    break;
    }
    //--------------------for second number(baraye raghame dovom)-----------------------
    switch(r*b)
    {
    case 10:
    cout<<"dah";
    break;
    case 11:
    cout<<"yazdah";
    break;
    case 12:
    cout<<"davazdah";
    break;
    case 13:
    cout<<"sizdah";
    break;
    case 14:
    cout<<"chahardah";
    break;
    case 15:
    cout<<"panzdah";
    break;
    case 16:
    cout<<"shanzdah";
    break;
    case 17:
    cout<<"hefdah";
    break;
    case 18:
    cout<<"hejdah";
    break;
    case 19:
    cout<<"nozdah";
    break;
    case 20:
    cout<<"bisto";
    break;
    case 30:
    cout<<"sio";
    break;
    case 40:
    cout<<"chehelo";
    break;
    case 50:
    cout<<"panjaho";
    break;
    case 60:
    cout<<"shasto";
    break;
    case 70:
    cout<<"haftado";
    break;
    case 80:
    cout<<"hashtado";
    break;
    case 90:
    cout<<"navado";
    break;

    }
    //--------------------for 3nd number(baraye raghame 3)-----------------------
    switch(r*b)
    {
    case 100:
    cout<<"sado";
    break;
    case 200:
    cout<<"devisto";
    break;
    case 300:
    cout<<"sisado";
    break;
    case 400:
    cout<<"chaharsado";
    break;
    case 500:
    cout<<"pansado";
    break;
    case 600:
    cout<<"sheshsado";
    break;
    case 700:
    cout<<"haftsado";
    break;
    case 800:
    cout<<"hashtsado";
    break;
    case 900:
    cout<<"nohsado";
    break;
    }
    //-------------------for number forth 4nd(baraye raghame chaharom)-----------------------
    switch(r*b)
    {
    case 1000:
    cout<<"hezaro";
    break;
    case 2000:
    cout<<"dohezaro";
    break;
    case 3000:
    cout<<"sehezaro";
    break;
    case 4000:
    cout<<"chaharhezaro";
    break;
    case 5000:
    cout<<"panjhezaro";
    break;
    case 6000:
    cout<<"sheshhezaro";
    break;
    case 7000:
    cout<<"hafthezaro";
    break;
    case 8000:
    cout<<"hashhezaro";
    break;
    case 9000:
    cout<<"nohhezaro";
    break;
    }
    b*=10;
    d/=10;
    }
    _getch();
    }

  8. #88
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    درسته همینه راهش فقط ببین دو رقم آخر رو درست بر نمی گردونه مثلا این عدد رو باید بنویسه 1111
    hezar o sado o yazdah
    ولی برنامه می نویسه
    hezar o sado o dah o yek
    ولی خیلی خوبه

  9. #89

    نقل قول: تمرین های زبان برنامه نویسی ++C

    سلام زحمت نکشید اینم برنامه :
    #include<iostream.h>
    #include<conio.h>
    void write(int y)
    {
    int a,b;
    a=y/100;
    switch (a)
    {
    case 1:cout<<"sad";break;
    case 2:cout<<"divist";break;
    case 3:cout<<"sisad";break;
    case 4:cout<<"chaharsad";break;
    case 5:cout<<"ponsad";break;
    case 6:cout<<"sheshsad";break;
    case 7:cout<<"haftsad";break;
    case 8:cout<<"hashtsad";break;
    case 9:cout<<"nohsad";break;
    default:;
    }
    y=y%100;
    if((y>=10)&&(a>0))
    cout<<" o ";
    b=y/10;
    if ((b>=2)||(b==0))
    {
    switch (b)
    {
    case 2:cout<<"bist ";break;
    case 3:cout<<"si ";break;
    case 4:cout<<"chehel ";break;
    case 5:cout<<"panjah ";break;
    case 6:cout<<"shast ";break;
    case 7:cout<<"haftad ";break;
    case 8:cout<<"hashtad ";break;
    case 9:cout<<"navad ";break;
    default:;
    }
    y=y%10;
    if (y>0)
    cout<<" o ";
    switch (y)
    {
    case 1:cout<<"yek ";break;
    case 2:cout<<"do ";break;
    case 3:cout<<"se ";break;
    case 4:cout<<"chahar ";break;
    case 5:cout<<"panj ";break;
    case 6:cout<<"shesh ";break;
    case 7:cout<<"haft ";break;
    case 8:cout<<"hasht ";break;
    case 9:cout<<"noh ";break;
    default:;
    }
    }
    else if((y<20)&&(y>=10))
    switch (y)
    {
    case 10:cout<<"dah";break;
    case 11:cout<<"yazdah";break;
    case 12:cout<<"davazdah";break;
    case 13:cout<<"sinzdah";break;
    case 14:cout<<"chahardah";break;
    case 15:cout<<"poonzdah";break;
    case 16:cout<<"shonzdah";break;
    case 17:cout<<"hivdah";break;
    case 18:cout<<"hijdah";break;
    case 19:cout<<"noozdah";break;
    default:;
    }
    }
    int main()
    {
    unsigned long m1=1000,m2=1000000,m3=1000000000,M1=999999,M2=9999 99999,M3=4000000000,x;
    int y;
    clrscr();
    cout << "pleas enter a number : ";
    cin>>x;
    if(x==0)
    cout<<"sefr";
    if ((x>=m3)&&(x<M3))
    {
    y=x/m3;
    write(y);
    x=x%m3;
    if (x>0)
    cout<<"milyard o ";
    else
    cout<<"milyard";
    }
    if ((x>=m2)&&(x<M2))
    {
    y=x/m2;
    write(y);
    x=x%m2;
    if (x>0)
    cout<<"melyon o ";
    else
    cout<<"melyon";
    }
    if ((x>=m1)&&(x<M1))
    {
    y=x/m1;
    write(y);
    x=x%m1;
    if (x>0)
    cout<<"hezar o ";
    else
    cout<<"hezar";
    }
    if ((x>=1)&&(x<1000))
    write(x);
    getch();
    return 0;
    }

    این برنامه تا میلیارد هم جواب میده .
    البته چون متغیر ها رو unsigned long تعریف کردم . شما میتون یه متغیر بهم معرفی کنید که بتونه اعااد خسلس بزرگ مثلا 30 رقمی رو بگه یا اعداد خیلی . البته نمب خوام از متغیر های double,float استفاده کنم میخوام متغیرم از نوع صحیح باشه .
    ممنون
    آخرین ویرایش به وسیله Arcsinos : چهارشنبه 11 فروردین 1389 در 15:56 عصر

  10. #90
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    درسته جواب.....

  11. #91
    کاربر تازه وارد آواتار sadegh-hut
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    شهركرد
    پست
    46

    نقل قول: تمرین های زبان برنامه نویسی ++C

    .........Aaaaaaaaaaaaa
    Arcsinos خودت نوشتيييييي؟؟؟
    هم سوالش جالب بود هم جوابش
    بازم مرسي

  12. #92

    نقل قول: تمرین های زبان برنامه نویسی ++C

    آره
    مثل اینکه شک داری ؟
    ببین من دنیال یه سوالم که تا به حال کسی حلش نکرده اگه دارید بذارید تا استفاده کنیم البته سوالی باشه که جواب داشته باشه . ممنون میشم .

  13. #93
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    ببین من دنیال یه سوالم که تا به حال کسی حلش نکرده اگه دارید بذارید تا استفاده کنیم البته سوالی باشه که جواب داشته باشه . ممنون میشم .
    برنامه ایی بنویسید که جذر یک اعداد بزرگ(10 رقمی و یا بیشتر) را شبیه سازی کند؟

  14. #94

    نقل قول: تمرین های زبان برنامه نویسی ++C

    نقل قول نوشته شده توسط amin1softco مشاهده تاپیک
    برنامه ایی بنویسید که جذر یک اعداد بزرگ(10 رقمی و یا بیشتر) را شبیه سازی کند؟
    منظورت رو درست متوجه نشدم . الان که جدر تمامی اعداد رو با sqrt میشه گرفت من با متغیر float تونستم جدر یه عدد 12 رقمی رو بدست بیارم . باز میگم فکر کنم منظورت رو درست متوجه نشدم اگه سوالتو بهتر بپرسی ممنون میشم .

  15. #95
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    وقتی حرف از شبیه سازی هست یعنی اینکه بدون سرفایل math باید اینکار انجام بشه

  16. #96

    نقل قول: تمرین های زبان برنامه نویسی ++C

    خب اینو از اول میگفتی دیگه :
    این برنامه جذر اعداد رو میگیره . من برای 12 رقمی هم امتحان کردم درست بود . البته اعدادی که مربع هستند رو دقیق محاسبه میکنه و لی از اونجایی که اعدادی مثل رادیکال 2 گنگ هستند هر چقدر تکرار حلقه بالاتر باشه عدد دقیق تری به ما میده . ولی باز با 100 تکرار هم خوب جواب میده .
    #include<iostream.h>
    #include<conio.h>
    float sqrt(float y)
    {
    int i;
    float a;
    a=y;
    for (i=1;i<=100;i++)
    y=(y+(a/y))/2;
    return y;
    }
    int main()
    {
    float x;
    clrscr();
    cout << "pleas enter a number : ";
    cin>>x;
    cout<<sqrt(x);
    getch();
    return 0;
    }

  17. #97
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    درسته....
    برنامه ایی بنویسید که یک جدول ضرب 10*10 را با خطوط حاشیه جدول رسم کند در مد تکست.
    (از کارکتر های ویژه استفاده کنید)

    یک برنامه ایی هم بود این دوستمون گفتند پاکش کردند من اینجا می گم شاید جالب باشه

    برنامه ایی بنویسید که یک قرعه کشی جوایز را شبیه سازی کند که در آن از توپ هایی که از 1 تا 10 شماره گذاری شده اند استفاده شود.فرض بر این است که سه توپ به صورت تصادفی انتخاب می شود. از کاربر تعداد دفعاتی که باید قرعه کشی انجام شود را دریافت کنید. و جواب سوالات زیر را بدهید :
    چه زمان هایی بر حسب درصد نتیجه شامل سه عدد زوج می شود؟
    چه زمان هایی بر حسب درصد عدد 7 در بین اعداد شبیه سازی شده موجود است؟
    چه زمان هایی بر حسب درصد اعداد 1 و 2 و 3 در شبیه سازی ظاهر می شوند؟

    راهنمایی:
    از تابع randint() استفاده کنید و یک برنامه نویسی پیمانه ایی (ساخت یافته) را در این مثال نمایش دهید.

    نکته:
    شما نمی توانید دو قرعه شبیه به هم انتخاب کنید و همه توپ ها برای شبیه سازی بعدی وجود دارند. شما باید فقط یک بار و در ابتدای برنامه از seed (هسته تابع راندوم) استفاده کنید.

    سوال اصلی اینه شاید خوب ترجمه نکرده باشم:

    write a program to simulate a lottery drawing that uses balls numbered from 1 to 10.Assume that three balls are drawn at

    random.Allow the user to enter the number of lottery drawings to simulate.What percentage of the time does the result contain

    three even numbers in the simulation?what percentage of the time does the number 7 occur in the three numbers in the simulation?what percentage of the time do the numbers 1,2, and 3 occur in the simulation?

    Hint:Use the function randint() and demonstrate good modular programming with this problem.Note:you can not draw the same ball twice and all balls are returned for the next simulation.you should set the random number generator seed at least once at the beginning of the program.

    آخرین ویرایش به وسیله amin1softco : جمعه 13 فروردین 1389 در 21:14 عصر

  18. #98

    نقل قول: تمرین های زبان برنامه نویسی ++C

    جواب جدول ضرب : فکر کنم اشتباهه و لی من بهتر ازین نمی تونم .
    #include<iostream.h>
    #include<conio.h>
    int main()
    {
    int i,j,k;
    clrscr();
    for (i=1;i<=10;i++)
    {
    for(k=1;k<=41;k++)
    cout<<"-";
    cout<<endl;
    for(k=1;k<=41;k++)
    if (((k-1)%4)==0)
    cout<<"|";
    else
    cout<<" ";
    cout<<endl;
    for (j=1;j<=10;j++)
    {
    if((i*j)<10)
    cout<<"| ";
    else if(((i*j)>=10)&&((i*j)<100))
    cout<<"| ";
    else
    cout<<"|";
    cout<<i*j;
    }
    cout<<"|"<<endl;
    for(k=1;k<=41;k++)
    if (((k-1)%4)==0)
    cout<<"|";
    else
    cout<<" ";
    cout<<endl;
    }
    for(k=1;k<=41;k++)
    cout<<"-";
    getch();
    return 0;
    }

  19. #99

    نقل قول: تمرین های زبان برنامه نویسی ++C

    ما چند تا انتخاب داریم ؟ یکی یا سه تا ؟ منظورم اینکه کاربر فقط یه بار و یه ورودی وارد میکنه بعد برنامه سه تا گوی از اون 7 تا گوی باقی مانده انتخاب مبکنه و به کاربر نشون میده درسته یا من بد متوجه شدم .

  20. #100
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    ما چند تا انتخاب داریم ؟ یکی یا سه تا ؟ منظورم اینکه کاربر فقط یه بار و یه ورودی وارد میکنه بعد برنامه سه تا گوی از اون 7 تا گوی باقی مانده انتخاب مبکنه و به کاربر نشون میده درسته یا من بد متوجه شدم .
    من خودم هنوز متوجه سوال نشدم من فقط ترجمه کردم اما فکر کنم منظور سوال اینه که از بین 10 تا توپ 3 تا رو به صورت تصادفی انتخاب کنیم و seed یا هسته تابع راندوم را از کاربر دریافت کنیم و ببینیم با هر seed نتیجه ها چطوری میشه ؟ که سوال ها رو جواب بدیم پس باید کاربر یک دفعه عدد رو وارد کنه با این حساب...
    اما اگه سه توپ را کامپیوتر باید انتخاب کنه و 7 توپ رو کاربر مسئله یک چیزه دیگه است ؟
    خواهشا کسایی که انگلیسی خوبی دارند ما رو یاری کنند...

  21. #101

    نقل قول: تمرین های زبان برنامه نویسی ++C

    ببینید اگه بر فرض جواب رو هم بتونیم بدست بیاریم برای یه حالته رندومه . یعنی اون کل اتفاقات رو بررسی نمیکنه . من یه چرت و پرتایی که البته خیلی خنده داره رو نوشتم برای سوال 2 جواب داد و برای بقیه ی حالتها هم باید همین رو تغییر بدیم سوال 1 هم تقریبا درست بود ولی باز مشکل داره . اگه این برنامه رو قبول نداشته باشیم باید از راه محاسبات ریاضی بریم که مربوط به درس جبر و احتماله ولی تا اونجا که من درس جبر رو مرور کردم نمیشه این معادله رو محاسبه کرد . شایدم بشه ولی خیلی سخته . ما که عقلمون بیشتر از این راه نداشت . البته چون من مبتدیم این برنامه رو نوشتم .
    #include<iostream.h>
    #include<conio.h>
    int main()
    {
    int h[10]={1,2,3,4,5,6,7,8,9,10};
    int b[9],c[8],d[7],e[6],f[5],a[3];
    int i,j,k,l,m,n,i1,j1,k1,l1,m1,n1;
    float count,seven,tow;
    float darsad;
    tow=seven=count=0;
    clrscr();
    for(i=1;i<=10;i++)
    {
    for(i1=1;i1<i;i1++)
    b[i1]=h[i1];
    for(i1=i;i1<=9;i1++)
    b[i1]=h[i1+1];
    for(j=1;j<=9;j++)
    for(i1=1;i1<j;i1++)
    c[i1]=b[i1];
    for(i1=i;i1<=8;i1++)
    c[i1]=b[i1+1];
    for(k=1;k<=8;k++)
    for(i1=1;i1<k;i1++)
    d[i1]=c[i1];
    for(i1=i;i1<=7;i1++)
    d[i1]=c[i1+1];
    for(l=1;l<=7;l++)
    {
    a[1]=d[l];
    for(i1=1;i1<l;i1++)
    e[i1]=d[i1];
    for(i1=i;i1<=6;i1++)
    e[i1]=d[i1+1];
    }
    for(m=1;m<=6;m++)
    {
    a[2]=e[m];
    for(i1=1;i1<m;i1++)
    f[i1]=e[i1];
    for(i1=i;i1<=5;i1++)
    f[i1]=e[i1+1];
    }
    for(n=1;n<=5;n++)
    a[3]=f[n];
    if (((a[1]%2)==0)&&((a[2]%2)==0)&&((a[3]%2)==0))
    count=count+1;
    if ((a[1]==7)||(a[2]==7)||(a[3]==7))
    seven=seven+1;
    if (((a[1]==1)||(a[2]==2)||(a[3]==3))&&((a[2]==1)||(a[2]==2)||(a[2]==3))&&((a[3]==1)||(a[3]==2)||(a[3]==3)))
    tow=tow+1;
    }
    darsad=(count/151200)*100;
    cout<<"1-darsade in ke har se zooj bashad : "<<darsad<<"%"<<endl;
    darsad=(seven/151200)*100;
    cout<<"2-darsade in ke 7 biayad : "<<darsad<<"%"<<endl;
    darsad=(tow/151200)*100;
    cout<<"3-darsade in ke se adade 1,2,3 biayad : "<<darsad<<"%";
    getch();
    return 0;
    }


  22. #102
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    خودمونیم ها چقدرم سوال ساده ایی بوده گفته ما می خواهیم سه توپ از بین 10 توپ که از 1 تا 10 شماره گزاری شده را به تعداد دفعاتی که کاربر تعیین می کنه انتخاب کنیم و ببینیم که بر حسب درصد چه زمانی عدد 7 رخ میده تو این قرعه های سه تایی کی سه عدد زوج و کی 1 و 2 و 3 در اعدا قرعه کشی هستند.... واقعا یک ترجمه بد چقدر آدم رو از سوال اصلی دور می کنه


    /* This program simulates a lottery drawing that uses balls */
    /* numbered from 1 to 10. */

    #include <stdlib.h>
    #include <stdio.h>

    #define MIN 1
    #define MAX 10
    #define NUMBER 7
    #define NUM_BALLS 3
    /*******************************************/
    /* this function generates a random integer*/
    /* between specified limits a and b (a<b)*/
    int rand_int(int a,int b){
    return rand()%(b-a+1)+a;
    }
    int main(void)
    {
    /* Define variables and function prototypes. */
    unsigned int alleven = 0, num_in_sim = 0, onetwothree = 0, first,
    second, third;
    int lotteries = 0, required = 0;
    int rand_int(int a ,int b);

    /* Prompt user for the number of lotteries. */
    printf("\n\nEnter number of lotteries: ");
    scanf("%i",&required);
    while (required <= 0)
    {
    printf("The number of lotteries must be an integer number, "
    "greater than zero.\n\n");
    printf("Enter number of lotteries: ");
    scanf("%i",&required);
    }

    /* Get three lottery balls, check for even or odd, and NUMBER. */
    /* Also check for the 1-2-3 sequence and its permutations. */
    while (lotteries < required)
    {
    lotteries++;

    /* Draw three unique balls. */
    first = rand_int(MIN,MAX);
    do
    second = rand_int(MIN,MAX);
    while (second == first);
    do
    third = rand_int(MIN,MAX);
    while ((second==third) || (first==third));

    printf("Lottery number is: %u-%u-%u\n",first,second,third);

    /* Are they all even? */
    if ((first % 2 == 0) && (second % 2 == 0) && (third %2 == 0))
    alleven++;

    /* Are any of them equal to NUMBER? */
    if ((first == NUMBER) || (second==NUMBER) || (third == NUMBER))
    num_in_sim++;

    /* Are they 1-2-3 in any order? */
    if ((first <= 3) && (second <= 3) && (third <= 3))
    if ((first != second) && (first != third) && (second != third))
    onetwothree++;
    }

    /* Print results. */
    printf("\nPercentage of time the result contains three even numbers:"
    " %f\n",100.0*alleven/lotteries);
    printf("Percentage of time the number %u occurs in the three"
    " numbers: %f\n",NUMBER,100.0*num_in_sim/lotteries);
    printf("Percentage of time the numbers 1,2,3 occur (not necessarily"
    " in order): %f\n",100.0*onetwothree/lotteries);

    /* Exit program. */
    return 0;
    }

    ببین این جواب سواله می تونی تحلیلش کنی

    آخرین ویرایش به وسیله amin1softco : جمعه 13 فروردین 1389 در 21:21 عصر

  23. #103
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    برنامه ایی بنویسید که حرکت یک موج را در مد تکست بوسیله کارکتر ستاره پیاده سازی کند یعنی

    * *
    * *
    * *
    * * *********

    البته باید این موج حرکت کند به سمت راست صفحه نمایش اگر امکان اضافه کردن قسمت طول موج و غیره وجود داشته باشد بهتر است

  24. #104

    نقل قول: تمرین های زبان برنامه نویسی ++C

    سوالات خوبی بودن سوال 3 رو نفهمیدم بقیه سوال ها رو حل کردم ولی چون بقیه نوشتن و دیر کردم نمی ذارم لطفا یه سری سوال دیگه مطرح کنید

  25. #105
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    هنوز سوال 7 رو کسی حل نکرده
    7- برنامه ایی بنویسید که به صورت مار پیچ دور تا دور صفحه نمایش را با ستاره * پر کند به صورت انیمیشن .
    سوال 3 مقلوب یک عدد یعنی اینکه عدد رو به صورت برعکس بنویسیم 987 مقلوبش می شه 789

    برنامه ایی بنویسید که کار یک دستگاه خود پرداز را شبیه سازی کند مثلا به برنامه عدد 100 هزار داده می شود و برنامه بایدبوسیله 1000 و 500 و 200 و 100 این عدد را خرد کند

    برنامه ایی بنویسید که محاسبه کند به چند طریق می توان سوال قبل را حل کرد

    برنامه ایی بنویسید که لگاریتم یک عدد را شبیه سازی کند. (بدون سر فایل math)

    اینم یک پازل به قبل و بعد قطعه کد زیر دستوراتی اضافه کنید تا بدون خطا کامپایل شود

    // inja mitavan code ezafe kard
    void ta(){
    yek = 1;
    }
    // inja mitavan code ezafe kard

  26. #106
    کاربر تازه وارد آواتار sadegh-hut
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    شهركرد
    پست
    46

    Talking نقل قول: تمرین های زبان برنامه نویسی ++C

    اینم یک پازل به قبل و بعد قطعه کد زیر دستوراتی اضافه کنید تا بدون خطا کامپایل شود

    // inja mitavan code ezafe kard
    void ta(){
    yek = 1;
    }
    // inja mitavan code ezafe kard
    [/quote]

    خوب اولش */ و آخرش /* اینو می زنیم ، به کل منتفی میشه
    خوب خیلی کارا میشه کرد !!!! اصلا نوع yek گفته نشده

  27. #107
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    نگفتم که کلا حذفش کن
    باید بشه از تابع استفاده کرد

  28. #108
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1388
    پست
    45

    نقل قول: تمرین های زبان برنامه نویسی ++C

    سلام.
    int yek;
    void ta(){
    yek = 1;
    }
    void main(){ta();}

  29. #109
    کاربر دائمی آواتار aminghaderi
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    مشهد
    پست
    1,557

    نقل قول: تمرین های زبان برنامه نویسی ++C

    چند تا برنامه کوچک که با مد گرافیک پیاده سازی شده.
    دوستان برنامه هایی که گفته بودم پیدا نکردم ولی چند تا تمرین پیدا کردم با سورس گفتم بزارم شاید مفید باشه.
    سطح برنامه ها : مبتدی
    مد: گرافیک

    موفق باشید.
    فایل های ضمیمه فایل های ضمیمه

  30. #110
    کاربر دائمی آواتار aminghaderi
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    مشهد
    پست
    1,557

    نقل قول: تمرین های زبان برنامه نویسی ++C

    توابع گرافیک c/C++‎ :
    مد: گرافیک
    نمونه: فایل زیپ بالا چند تا تابع رو استفاده کرده.

    امیدوارم مفید واقع بشه.

    رسم کمان :

    arc(x,y,s,e,r)


    رسم خط:

    line(x1,y1,x2,y2)


    مربع یا مستطیل تو پر:

    bar(x1,y1,x2,y2)


    مکعب مربع :

    bar3d(x1,y1,x2,y2,DEPTH,STATUS)

    STATUS (وضعیت) شامل 2 مقدار 0 و 1
    DEPTH (عمق)

    بیضی یا دایره تو پر:

    fillellipse(x,y,r1,r2)


    دایره تو خالی:

    circle(x,y,r)


    رنگ امیزی اشکال تو پر:

    setfillstyle(MOULD,COLOR)

    MOULD تا جایی که یادم می یاد مقادیر بین 0 تا 12 می گیره و حالات مختلفی نظیر هاشور ، خط راست ، خط چپ و ... رنگ امیزی انجام می دهد.

    تنظیم خصوصیات متن:

    settextstyle(Font,SAKE,size)

    SAKE (جهت)

    رنگ امیزی نواحی بسته :

    floodfill(x,y,color)


    رنگ امیزی کادر ها:

    setcolor(color)

    لازم به ذکر هست که ما چیزی به نام ، نام رنگ نداریم!! و باید شماره ی رنگ داده شود که مجموع اعداد 1 تا 15 هست اگر اشتباه نکنم.
    این موضوع در تمام ارگمان ها توابع باید رعایت شود .
    ننویسید :
    setfillstyle(5,red)

    باید نوشته شود مثلا :
    setfillstyle(7,4)


    نوشتن متن در مکان نمای فعال:

    outtex("Text")


    نوشتن متن در یک مختصات مشخص :

    outtextxy(x,y,"Text")


    جابجا کردن محل مکان نما:

    moveto(x,y)


    رسم نقطه:

    putpixel(x,y,color)


    نقطه :

    lineto(x,y)


    گرفتن یک کلید برای اتمام کار:
    این تابع رو ما داخل حلقه ، برای خاتمه حلقه استفاده می کردیم ، دقیق یادم نمی یاد ، ولی فکر کنم خروجی true یا false دارد که این خروجی با توجه به فشردن کلیدی از صفحه کلید ، رخ می دهد.

    kbhit()

    تابع بالا ورودی نداره!!!


    این هم در حلقه می یاد و مثل یه تایمر عمل می کنه :
    مقداری که به این تابع فرستاده می شه ، فاصله زمان اجرای دستور بعد ( گردش بعدی حلقه) هست.

    delaye(x)



    موفق باشید.

  31. #111
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    نقل قول نوشته شده توسط Negative_Se7en مشاهده تاپیک
    سلام.
    int yek;
    void ta(){
    yek = 1;
    }
    void main(){ta();}
    درسته.... این یک راهشه در ضمن مد گرافیک داس که BGI باشه دورانش سر رسیده ولی برای استفاده از این ها در محیط ویژوال 2008 میشه از کتابخانه هایی که نوشتند و کامل نیست استفاده کرد یک نمونشو ضمیمه کردم باید محتویاتشو به پوشه include کامپایلر اضافه کنید و graphic2.h را اول برنامه تون include کنید.
    فایل های ضمیمه فایل های ضمیمه

  32. #112

    نقل قول: تمرین های زبان برنامه نویسی ++C

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

    بعد مي خوام با استفاده از درخت ها يا هر روش ديگه اي (البته به درخت ها علاقه مندم) اين گزاره رو جدا كنم و بعد اجتماع و اشتراك و .... رو حساب كنم
    راهي رو لطفا پيش پام بزارين كه راحت تره دفعه قبل يه سوال پرسيم بيشتر گيج شدم تا راهنمايي
    خيلي ممنون

  33. #113

    نقل قول: تمرین های زبان برنامه نویسی ++C

    سلام دوستان.
    برنامه ای بنویسید که با تابع بازگشتی + * )( را محاسبه کند؟

  34. #114
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    بندرعباس
    پست
    41

    نقل قول: تمرین های زبان برنامه نویسی ++C

    نقل قول نوشته شده توسط smahdi1991 مشاهده تاپیک
    سلام
    با استفاده از چه چیزی اینو حل کنیم با استفاده از گرافیک؟ یا محیط متنی ؟
    سلام به دوسته عزیز راستش برای این که چنین برنامه ای را بنویسی بهتره ار گرافیک استفاده کنی

  35. #115
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1388
    محل زندگی
    خونه صفر حافظه(NULL)
    پست
    88

    نقل قول: تمرین های زبان برنامه نویسی ++C

    سلام
    اكه ما هم بخوايم شركت كنيم بايد جكار كنيم؟
    برنامه اي كه قراره بنويسيم جيه؟(البته من حرفه اي نيستما)ولي دوس دارم سعي خودمو كنم

  36. #116
    کاربر تازه وارد
    تاریخ عضویت
    آبان 1387
    محل زندگی
    اصفهان
    پست
    43

    Question نقل قول: تمرین های زبان برنامه نویسی ++C

    سلام

    چندتا تمرین هم من میذارم

    1- برنامه ای بنویسید که با استفاده ازتوابع آرایه ای به طول n را به صورت پویا ایجاد و سپس مقادیر آنرا بخواند و درنهایت انرا در خروجی چاپ نماید.

    2- تابعی بنویسید که دو عدد صحیح گرفته ، عدد اول را به مبنای عدد دوم ببرد.(عدد دوم می تواند عددی در مبناهای 2 ، 8 ، 16 باشد)

    3- تابعی بنویسید که رشته ای ه طول حداکثر 80 کاراکتر را گرفته ، تماممی کلمه های انرا معکوس نماید.
    (مثال : s i h t s i a k o o b <------------- This is a book)

  37. #117
    کاربر تازه وارد
    تاریخ عضویت
    آبان 1387
    محل زندگی
    اصفهان
    پست
    43

    Question نقل قول: تمرین های زبان برنامه نویسی ++C

    اینم یکی دیگه

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

    برنامه ای بنویسید که نام فایلی را گرفته و آنرا Zip کند؟

  38. #118
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    نقل قول نوشته شده توسط baghozi مشاهده تاپیک
    اینم یکی دیگه

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

    برنامه ای بنویسید که نام فایلی را گرفته و آنرا Zip کند؟
    بیا این برنامشه اولش توضیح دادiه که کی نوشتتش اما این zip نمی کنه unzip می کنه



    /*
    * Copyright 1987, 1989 Samuel H. Smith; All rights reserved
    *
    * This is a component of the ProDoor System.
    * Do not distribute modified versions without my permission.
    * Do not remove or alter this notice or any other copyright notice.
    * If you use this in your own program you must distribute source code.
    * Do not use any of this in a commercial product.
    *
    */

    /*
    * UnZip - A simple zipfile extract utility
    *
    */

    #define version "UnZip: Zipfile Extract v1.0ل of 03-05-89; (C) 1989 S.H.Smith"

    typedef unsigned char byte;
    typedef long longint;
    typedef unsigned word;
    typedef char boolean;
    #define STRSIZ 256

    #include <stdio.h>
    #include <io.h>
    #include <stdlib.h>
    #include <fcntl.h>
    #include <sys/stat.h>



    /* ----------------------------------------------------------- */
    /*
    * Zipfile layout declarations
    *
    */

    typedef longint signature_type;


    #define local_file_header_signature 0x04034b50L


    typedef struct local_file_header {
    word version_needed_to_extract;
    word general_purpose_bit_flag;
    word compression_method;
    word last_mod_file_time;
    word last_mod_file_date;
    longint crc32;
    longint compressed_size;
    longint uncompressed_size;
    word filename_length;
    word extra_field_length;
    } local_file_header;


    #define central_file_header_signature 0x02014b50L


    typedef struct central_directory_file_header {
    word version_made_by;
    word version_needed_to_extract;
    word general_purpose_bit_flag;
    word compression_method;
    word last_mod_file_time;
    word last_mod_file_date;
    longint crc32;
    longint compressed_size;
    longint uncompressed_size;
    word filename_length;
    word extra_field_length;
    word file_comment_length;
    word disk_number_start;
    word internal_file_attributes;
    longint external_file_attributes;
    longint relative_offset_local_header;
    } central_directory_file_header;


    #define end_central_dir_signature 0x06054b50L


    typedef struct end_central_dir_record {
    word number_this_disk;
    word number_disk_with_start_central_directory;
    word total_entries_central_dir_on_this_disk;
    word total_entries_central_dir;
    longint size_central_directory;
    longint offset_start_central_directory;
    word zipfile_comment_length;
    } end_central_dir_record;



    /* ----------------------------------------------------------- */
    /*
    * input file variables
    *
    */


    #define uinbufsize 512L /* input buffer size */
    byte inbuf[uinbufsize];

    boolean zipeof;
    longint csize;
    int cmethod;
    int inpos;
    int incnt;
    int pc;
    int pcbits;
    int pcbitv;

    int zipfd;
    char zipfn[STRSIZ];
    local_file_header lrec;




    /* ----------------------------------------------------------- */
    /*
    * output stream variables
    *
    */


    byte outbuf[4096]; /* for rle look-back */
    longint outpos; /* absolute position in outfile */
    int outcnt;

    int outfd;
    char filename[STRSIZ];
    char extra[STRSIZ];



    /* ----------------------------------------------------------- */
    /*
    * shrink/reduce working storage
    *
    */


    int factor;
    byte followers[256][64];
    byte Slen[256];
    int ExState;
    int C;
    int V;
    int Len;

    #define max_bits 13
    #define init_bits 9
    #define hsize 8192
    #define first_ent 257
    #define clear 256

    typedef int hsize_array_integer[hsize+1];
    typedef byte hsize_array_byte[hsize+1];

    hsize_array_integer prefix_of;
    hsize_array_byte suffix_of;
    hsize_array_byte stack;

    int cbits;
    int maxcode;
    int free_ent;
    int maxcodemax;
    int offset;
    int sizex;


    /* ------------------------------------------------------------- */

    void skip_csize(void)
    {
    lseek(zipfd,csize,SEEK_CUR);
    zipeof = 1;
    csize = 0L;
    incnt = 0;
    }


    /* ------------------------------------------------------------- */

    void ReadByte(int * x)
    {
    if (incnt == 0)
    {
    if (csize == 0L)
    {
    zipeof = 1;
    return;
    }

    inpos = sizeof(inbuf);
    if (inpos > csize)
    inpos = (int)csize;
    incnt = read(zipfd,inbuf,inpos);

    inpos = 1;
    csize -= incnt;
    }

    *x = inbuf[inpos-1];
    inpos++;
    incnt--;
    }


    /* ------------------------------------------------------------- */

    void ReadBits(int bits,
    int * x)
    /* read the specified number of bits */
    {
    int bit;
    int bitv;

    *x = 0;
    bitv = 1;

    for (bit = 0; bit <= bits-1; bit++)
    {

    if (pcbits > 0)
    {
    pcbits--;
    pcbitv = pcbitv << 1;
    }
    else

    {
    ReadByte(&pc);
    pcbits = 7;
    pcbitv = 1;
    }

    if ((pc & pcbitv) != 0)
    *x = *x | bitv;

    bitv = (int) (bitv << 1);
    }

    }


    /* ---------------------------------------------------------- */

    void get_string(int len,
    char * s)
    {
    read(zipfd,s,len);
    s[len] = 0;
    }


    /* ------------------------------------------------------------- */

    void OutByte(int c)
    /* output each character from archive to screen */
    {
    outbuf[outcnt /* outpos % sizeof(outbuf) */] = c;
    outpos++;
    outcnt++;

    if (outcnt == sizeof(outbuf))
    {
    write(outfd,outbuf,outcnt);
    outcnt = 0;
    printf(".");
    }
    }


    /* ----------------------------------------------------------- */

    int reduce_L(int x)
    {
    switch (factor) {
    case 1: return x & 0x7f;
    case 2: return x & 0x3f;
    case 3: return x & 0x1f;
    case 4: return x & 0x0f;
    }
    return 0; /* error */
    }


    int reduce_F(int x)
    {
    switch (factor) {
    case 1: if (x == 127) return 2; else return 3;
    case 2: if (x == 63) return 2; else return 3;
    case 3: if (x == 31) return 2; else return 3;
    case 4: if (x == 15) return 2; else return 3;
    }
    return 0; /* error */
    }


    int reduce_D(int x,
    int y)
    {
    switch (factor) {
    case 1: return ((x >> 7) & 0x01) * 256 + y + 1;
    case 2: return ((x >> 6) & 0x03) * 256 + y + 1;
    case 3: return ((x >> 5) & 0x07) * 256 + y + 1;
    case 4: return ((x >> 4) & 0x0f) * 256 + y + 1;
    }
    return 0; /* error */
    }


    int reduce_B(int x)
    /* number of bits needed to encode the specified number */
    {
    switch (x - 1) {

    case 0:
    case 1: return 1;

    case 2:
    case 3: return 2;

    case 4:
    case 5:
    case 6:
    case 7: return 3;

    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15: return 4;

    case 16:
    case 17:
    case 18:
    case 19:
    case 20:
    case 21:
    case 22:
    case 23:
    case 24:
    case 25:
    case 26:
    case 27:
    case 28:
    case 29:
    case 30:
    case 31: return 5;

    case 32:
    case 33:
    case 34:
    case 35:
    case 36:
    case 37:
    case 38:
    case 39:
    case 40:
    case 41:
    case 42:
    case 43:
    case 44:
    case 45:
    case 46:
    case 47:
    case 48:
    case 49:
    case 50:
    case 51:
    case 52:
    case 53:
    case 54:
    case 55:
    case 56:
    case 57:
    case 58:
    case 59:
    case 60:
    case 61:
    case 62:
    case 63: return 6;

    case 64:
    case 65:
    case 66:
    case 67:
    case 68:
    case 69:
    case 70:
    case 71:
    case 72:
    case 73:
    case 74:
    case 75:
    case 76:
    case 77:
    case 78:
    case 79:
    case 80:
    case 81:
    case 82:
    case 83:
    case 84:
    case 85:
    case 86:
    case 87:
    case 88:
    case 89:
    case 90:
    case 91:
    case 92:
    case 93:
    case 94:
    case 95:
    case 96:
    case 97:
    case 98:
    case 99:
    case 100:
    case 101:
    case 102:
    case 103:
    case 104:
    case 105:
    case 106:
    case 107:
    case 108:
    case 109:
    case 110:
    case 111:
    case 112:
    case 113:
    case 114:
    case 115:
    case 116:
    case 117:
    case 118:
    case 119:
    case 120:
    case 121:
    case 122:
    case 123:
    case 124:
    case 125:
    case 126:
    case 127: return 7;

    default: return 8;
    }
    }



    /* ----------------------------------------------------------- */

    void Expand(int c)
    {
    #define DLE 144

    switch (ExState) {

    case 0:
    if (c != DLE)
    OutByte(c);
    else
    ExState = 1;
    break;

    case 1:
    if (c != 0)
    {
    V = c;
    Len = reduce_L(V);
    ExState = reduce_F(Len);
    }
    else
    {
    OutByte(DLE);
    ExState = 0;
    }
    break;

    case 2: {
    Len = Len + c;
    ExState = 3;
    }
    break;

    case 3: {
    int i;
    longint offset = reduce_D(V,c);
    longint op = outpos - offset;

    for (i = 0; i <= Len + 2; i++)
    {
    if (op < 0L)
    OutByte(0);
    else
    OutByte(outbuf[(int)(op % sizeof(outbuf))]);
    op++;
    }

    ExState = 0;
    }
    break;
    }
    }


    /* ----------------------------------------------------------- */

    void LoadFollowers(void)
    {
    int x;
    int i;
    int b;

    for (x = 255; x >= 0; x--)
    {
    ReadBits(6,&b);
    Slen[x] = b;

    for (i = 0; i < Slen[x]; i++)
    {
    ReadBits(8,&b);
    followers[x][i] = b;
    }
    }
    }



    /* ----------------------------------------------------------- */

    /*
    * The Reducing algorithm is actually a combination of two
    * distinct algorithms. The first algorithm compresses repeated
    * byte sequences, and the second algorithm takes the compressed
    * stream from the first algorithm and applies a probabilistic
    * compression method.
    *
    */

    void unReduce(void)
    /* expand probablisticly reduced data */

    {

    int lchar;
    int lout;
    int I;

    factor = cmethod - 1;
    if ((factor < 1) || (factor > 4))
    {
    skip_csize();
    return;
    }

    ExState = 0;
    LoadFollowers();
    lchar = 0;

    while ((!zipeof))
    {

    if (Slen[lchar] == 0)
    ReadBits(8,&lout);
    else

    {
    ReadBits(1,&lout);
    if (lout != 0)
    ReadBits(8,&lout);
    else
    {
    ReadBits(reduce_B(Slen[lchar]),&I);
    lout = followers[lchar][i];
    }
    }

    Expand(lout);
    lchar = lout;
    }
    }


    /* ------------------------------------------------------------- */
    /*
    * Shrinking is a Dynamic Ziv-Lempel-Welch compression algorithm
    * with partial clearing.
    *
    */

    void partial_clear(void)
    {
    int pr;
    int cd;


    /* mark all nodes as potentially unused */
    for (cd = first_ent; cd < free_ent; cd++)
    prefix_of[cd] |= 0x8000;


    /* unmark those that are used by other nodes */
    for (cd = first_ent; cd < free_ent; cd++)
    {
    pr = prefix_of[cd] & 0x7fff; /* reference to another node? */
    if (pr >= first_ent) /* flag node as referenced */
    prefix_of[pr] &= 0x7fff;
    }


    /* clear the ones that are still marked */
    for (cd = first_ent; cd < free_ent; cd++)
    if ((prefix_of[cd] & 0x8000) != 0)
    prefix_of[cd] = -1;


    /* find first cleared node as next free_ent */
    free_ent = first_ent;
    while ((free_ent < maxcodemax) && (prefix_of[free_ent] != -1))
    free_ent++;
    }


    /* ------------------------------------------------------------- */

    void unShrink(void)

    {
    int stackp;
    int finchar;
    int code;
    int oldcode;
    int incode;


    /* decompress the file */
    maxcodemax = 1 << max_bits;
    cbits = init_bits;
    maxcode = (1 << cbits) - 1;
    free_ent = first_ent;
    offset = 0;
    sizex = 0;

    for (code = maxcodemax; code > 255; code--)
    prefix_of[code] = -1;

    for (code = 255; code >= 0; code--)
    {
    prefix_of[code] = 0;
    suffix_of[code] = code;
    }

    ReadBits(cbits,&oldcode);
    finchar = oldcode;
    if (zipeof)
    return;

    OutByte(finchar);

    stackp = 0;

    while ((!zipeof))
    {
    ReadBits(cbits,&code);

    while (code == clear)
    {
    ReadBits(cbits,&code);

    switch (code) {

    case 1: {
    cbits++;
    if (cbits == max_bits)
    maxcode = maxcodemax;
    else
    maxcode = (1 << cbits) - 1;
    }
    break;

    case 2:
    partial_clear();
    break;
    }

    ReadBits(cbits,&code);
    }


    /* special case for KwKwK string */
    incode = code;
    if (prefix_of[code] == -1)
    {
    stack[stackp] = finchar;
    stackp++;
    code = oldcode;
    }


    /* generate output characters in reverse order */
    while (code >= first_ent)
    {
    stack[stackp] = suffix_of[code];
    stackp++;
    code = prefix_of[code];
    }

    finchar = suffix_of[code];
    stack[stackp] = finchar;
    stackp++;


    /* and put them out in forward order */
    while (stackp > 0)
    {
    stackp--;
    OutByte(stack[stackp]);
    }


    /* generate new entry */
    code = free_ent;
    if (code < maxcodemax)
    {
    prefix_of[code] = oldcode;
    suffix_of[code] = finchar;
    while ((free_ent < maxcodemax) && (prefix_of[free_ent] != -1))
    free_ent++;
    }


    /* remember previous code */
    oldcode = incode;
    }

    }


    /* ---------------------------------------------------------- */

    void extract_member(void)
    {
    int b;

    union {
    struct ftime ft;
    struct {
    word ztime;
    word zdate;
    } zt;
    } td;

    for (b=0; b<sizeof(outbuf); b++) outbuf[b]=0;
    pcbits = 0;
    incnt = 0;
    outpos = 0L;
    outcnt = 0;
    zipeof = 0;

    outfd = creat(filename,S_IWRITE|S_IREAD);
    if (outfd < 1)
    {
    printf("Can't create output: %s\n",filename);
    exit(0);
    }

    close(outfd);
    outfd = open(filename,O_RDWR|O_BINARY);


    switch (cmethod) {

    case 0: /* stored */
    {
    printf(" Extract: %s ...",filename);
    while ((!zipeof))
    {
    ReadByte(&b);
    OutByte(b);
    }
    }
    break;

    case 1: {
    printf("UnShrink: %s ...",filename);
    unShrink();
    }
    break;

    case 2:
    case 3:
    case 4:
    case 5: {
    printf(" Expand: %s ...",filename);
    unReduce();
    }
    break;

    default: printf("Unknown compression method.");
    }

    if (outcnt > 0)
    write(outfd,outbuf,outcnt);


    /* set output file date and time */
    td.zt.ztime = lrec.last_mod_file_time;
    td.zt.zdate = lrec.last_mod_file_date;
    setftime(outfd,&td.ft);

    close(outfd);
    printf(" done.\n");
    }


    /* ---------------------------------------------------------- */

    void process_local_file_header(void)
    {
    read(zipfd,&lrec,sizeof(lrec));
    get_string(lrec.filename_length,filename);
    get_string(lrec.extra_field_length,extra);
    csize = lrec.compressed_size;
    cmethod = lrec.compression_method;
    extract_member();
    }


    /* ---------------------------------------------------------- */

    void process_central_file_header(void)
    {
    central_directory_file_header rec;
    char filename[STRSIZ];
    char extra[STRSIZ];
    char comment[STRSIZ];

    read(zipfd,&rec,sizeof(rec));
    get_string(rec.filename_length,filename);
    get_string(rec.extra_field_length,extra);
    get_string(rec.file_comment_length,comment);
    }


    /* ---------------------------------------------------------- */

    void process_end_central_dir(void)
    {
    end_central_dir_record rec;
    char comment[STRSIZ];

    read(zipfd,&rec,sizeof(rec));
    get_string(rec.zipfile_comment_length,comment);
    }


    /* ---------------------------------------------------------- */

    void process_headers(void)
    {
    longint sig;

    while (1)
    {
    if (read(zipfd,&sig,sizeof(sig)) != sizeof(sig))
    return;
    else

    if (sig == local_file_header_signature)
    process_local_file_header();
    else

    if (sig == central_file_header_signature)
    process_central_file_header();
    else

    if (sig == end_central_dir_signature)
    {
    process_end_central_dir();
    return;
    }

    else
    {
    printf("Invalid Zipfile Header\n");
    return;
    }
    }

    }


    /* ---------------------------------------------------------- */

    void extract_zipfile(void)
    {
    zipfd = open(zipfn,O_RDONLY|O_BINARY);
    if (zipfd < 1) {
    printf("Can't open input file: %s\n",zipfn);
    return;
    }

    process_headers();

    close(zipfd);
    }


    /* ---------------------------------------------------------- */
    /*
    * main program
    *
    */

    void main(int argc, char **argv)
    {
    printf("\n");
    printf("%s\n",version);
    printf("Courtesy of: S.H.Smith and The Tool Shop BBS, (602) 279-2673.\n");
    printf("\n");

    if (argc != 2)
    {
    printf("Usage: UnZip FILE.zip\n");
    exit(0);
    }

    strcpy(zipfn,argv[1]);
    extract_zipfile();
    exit(0);
    }





    در ضمن میشه از کتابخونه های آماده استفاده کرد یا یک نرم افزار خارجی رو فرا خوانی کرد تا این کار رو انجام بده...برنامه های قبلیتم کاری نداره نوشتنش

  39. #119
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: تمرین های زبان برنامه نویسی ++C

    اینم یک مثال خوب از کپری و آن کمپرس در توربو سی
    فایل های ضمیمه فایل های ضمیمه

  40. #120
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1388
    محل زندگی
    خونه صفر حافظه(NULL)
    پست
    88

    نقل قول: تمرین های زبان برنامه نویسی ++C

    [quote=baghozi;947121]سلام

    چندتا تمرین هم من میذارم

    1- برنامه ای بنویسید که با استفاده ازتوابع آرایه ای به طول n را به صورت پویا ایجاد و سپس مقادیر آنرا بخواند و درنهایت انرا در خروجی چاپ نماید.

    2- تابعی بنویسید که دو عدد صحیح گرفته ، عدد اول را به مبنای عدد دوم ببرد.(عدد دوم می تواند عددی در مبناهای 2 ، 8 ، 16 باشد)




    #include<conio.h>
    #include<iostream.h>
    void func(int n)
    {
    int *arr=new int[n];
    int i;
    for(i=0;i<n;i++)
    cin>>arr[i];
    for(i=0;i<n;i++)
    cout<<endl<<arr[i];
    }
    main()
    {
    int n;
    cout<<"lotfan toole araye ra vared konid:";
    cin>>n;
    func(n);
    getch();
    }




    #include<conio.h>
    #include<iostream.h>
    int mabna(int n,int m)
    {
    if(m==10)
    {
    cout<<n;
    return 0;
    }
    int temp=0,remain;
    while(n!=0)
    {
    remain=n%m;
    temp=temp*10+remain;
    n=n/m;
    }
    cout<<temp;
    return 0;
    }
    main()
    {
    clrscr();
    int n;
    int m;
    cout<<"lotfan adad ra vared konid: ";
    cin>>n;
    cout<<"\nlotfan mabna ra vared konid: ";
    cin>>m;
    mabna(n,m);
    getch();
    }

صفحه 3 از 5 اولاول 12345 آخرآخر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •