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

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




صفحه 14 از 326 اولاول ... 41011121314151617182464114 ... آخرآخر
نمايش نتايج 131 به 140 از 3257

نام تاپيک: سوالات مبتدی و عمومی (++C, C) خود را اینجا بپرسید

  1. #131
    در آغاز فعالیت
    تاريخ عضويت
    Nov 2007
    پست ها
    1

    پيش فرض

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

  2. #132
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Oct 2007
    پست ها
    205

    پيش فرض

    سلام.میشه این برنامه را یک نگاه بهش بیندازید و تابع Sign و det را برای من توضیح بدید که چه کار میکنه.
    این برنامه دترمینان ماتریس رو به روش Laplace Expansion و بوسیله ی تابع بازگشتی! حساب میکنه.
    فرمولش هست (سطر i ام رو به دلخواه انتخاب میکنیم) :


    که B ماتریس شماست. bij هم عنصر هاش و Cij هم Cofactor ماتریس هست که خود Cofactor هست :

    که Mij ماتریس Minor ماتریس مورد نظر هست که تعریفش هست ماتریسی که از حذف کردن سطر i ام و ستون j ام ماتریس حاصل میشه.
    توی کدی که دادی تابع sign این 1- بتوان i+j رو محاسبه میکنه که ببینه جواب میشه 1- یا 1+(روش خوبی رو انتخاب نکرده به نظرم)
    اصل روش اینه که شما میان دترمینان ها رو از دترمینان های ماتریس های کوچک شده (Minor) حساب میکنی و انقدر ادامه میدی تا به دترمینان ماتریس 2x2 برسی که فرمولش ساده هستش:




    کاری که توی تابع det انجام میشه اینه که میبینه اگه ماتریس 2 در 2 هست از این فرمول آخری حساب میکنه.اگه بزرگتر بود میاد ماتریس های Minor رو بدست میاره و از طریق فرمول اول (و فراخونی خودش برای محاسبه ی دترمینان ماتریس Minor) توی یک حلقه جواب رو پیدا میکنه.
    en.wikipedia.org/wiki/Laplace_expansion

  3. #133
    اگه نباشه جاش خالی می مونه shadmehrdj's Avatar
    تاريخ عضويت
    Oct 2006
    محل سكونت
    Tehran
    پست ها
    203

    پيش فرض

    دستت درد نکنه مهرزاد جان.(اسم من و شما یکی هست یعنی اسم من هم مهرزاد هست)

  4. #134
    اگه نباشه جاش خالی می مونه shadmehrdj's Avatar
    تاريخ عضويت
    Oct 2006
    محل سكونت
    Tehran
    پست ها
    203

    پيش فرض

    سلام.بچه ها میشه این کد را طوری تغییر دهید که دترمینان ماتریس را حساب کنه.این کد یک اشکالی که داره و نمی دونم چی هست وقتی ماتریس را مقدارش را خودت وارد می کنی دترمینان را حساب میکنه ولی وقتی به صورت random میگذاریم Divide Error میده.
    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    void main(){
    clrscr();
    int a[5][5];
    int i,j,n,d,k;
    for (i=1;i<5;i++)
    for (j=1;j<5;j++)
    a[i][j]=random(9);
    for (i=1;i<5;i++){
    for (j=1;j<5;j++)
    printf("%5d",a[i][j]);
    printf("\n");}
    for (k=1;k<5-1;k++)
    for (i=k+1;i<5;i++)
    for (j=1;j<5;j++)
    a[i][j]=a[i][j]*(a[k][k]/a[i][k])-a[k][j];
    d=1;
    for (i=1;i<5;i++)
    d=d*a[i][i];
    printf("Determinant is:%d",d);
    getch();
    }

  5. #135
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Oct 2007
    پست ها
    205

    پيش فرض

    دستت درد نکنه مهرزاد جان.(اسم من و شما یکی هست یعنی اسم من هم مهرزاد هست)
    ئه جالبه

  6. #136
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Oct 2007
    پست ها
    205

    پيش فرض

    ممنون m3hrz4d جان. یه نگاهی به کد زیر بینداز (جاهایی که خط تیره گذاشتم) برام یه سوالی هست شما گفتید که s1 رو یه آرایه ی 5 تایی از Struct Student تعریف کنیم به این صورت دیگه ولی ورودی اول و دوم میگیره ولی به ورودی سومmark که میرسه از برنامه خارج میشه اشکال کارم کجاست.

    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    clrscr();
    float sum=0;
    struct student
    {
    char name[10];
    int stno;
    float marks[5];
    ----------------------------- }s1[5];
    for(int j=0;j<5;j++)
    {
    printf("student name:");
    -------------------------- scanf("%s",s1[j].name);
    printf("student number:");
    ---------------------------- scanf("%d",&s1[j].stno);
    for(int i=0;i<5;i++)
    {
    printf("student marks:");
    -------------------------- scanf("%f",&s1[j].marks[i]);
    -------------------------- sum+=s1[j].marks[i];
    }
    }
    /*printf("name:%s\n",s1[j].name);
    printf("name:%d\n",s1[j].stno);
    printf("name:%f\n",sum/5);*/
    getch();
    }
    به نظر نمیاد برنامت مشکل جدی که وسط کار قطع بشه داشته باشه. من اجراش کردم . اطلاعات هر 5 دانشجو رو گرفت..
    به جز اون قسمتی که توی comment گذاشتی که احتمالا خودت میدونستی..
    Last edited by m3hrz4d; 29-11-2007 at 23:35.

  7. #137
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Oct 2007
    پست ها
    205

    پيش فرض

    سلام.بچه ها میشه این کد را طوری تغییر دهید که دترمینان ماتریس را حساب کنه.این کد یک اشکالی که داره و نمی دونم چی هست وقتی ماتریس را مقدارش را خودت وارد می کنی دترمینان را حساب میکنه ولی وقتی به صورت random میگذاریم Divide Error میده.
    کلا اگه توی ماتریس عنصر 0 باشه مشکل داره.اصلا توی محاسبه ی دترمینان تقسیم نیست نمیفهمم این تقسیم برای چیه.حالا اگه صفر هم نداشته باشیم فکر نکنم درست حساب کنه.یه چیز دیگه اینکه مگه این برای 5 در 5 نباید باشه؟ ظاهرا 4 در چهار میگیره.
    اون کد قبلی که دادی درست بود.

  8. #138
    اگه نباشه جاش خالی می مونه egoldfars's Avatar
    تاريخ عضويت
    Mar 2005
    پست ها
    205

    13

    سلام آقا مهرزاد
    مشکل رو پیداکردم (جاهایی که خط تیره گذاشتم) mark رو از نوع float به int تغییر دادم ولی یه سوالی دارم واینه که نمراتی که ما به ورودی میدیم همیشه که صحیح نیستند و مقدار اعشار هم دارن (مثلا15/25 ) به چه صورت عمل کنم تا جواب بده موقعه ای که به نوع float تغییر میدم از برنامه خارج میشه ممکنه در این قسمت از pointer استفاده کنیم یا خیر.....................
    اینم کدی رو که تغییر دادم.........................

    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    //clrscr();
    -----------------------------------int sum=0;
    struct student
    {
    char name[10];
    int stno;
    ----------------------------------int marks[5];
    }s1[5];
    for(int k=1;k<5;k++)
    {
    for(int j=0;j<5;j++)
    {}
    printf("student name%d:",k);
    scanf("%s",s1[j].name);
    printf("student number%d:",k);
    scanf("%d",&s1[j].stno);
    for(int i=0;i<5;i++)
    {
    printf("student marks%d:",k);
    -----------------------------------scanf("%d",&s1[j].marks[i]);
    sum+=s1[j].marks[i];
    }
    }
    /*printf("name:%s\n",s1[j].name);
    printf("name:%d\n",s1[j].stno);
    printf("name:%f\n",sum/5);*/
    getch();
    }
    }

  9. #139
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Oct 2007
    پست ها
    205

    پيش فرض

    سلام آقا مهرزاد
    مشکل رو پیداکردم (جاهایی که خط تیره گذاشتم) mark رو از نوع float به int تغییر دادم ولی یه سوالی دارم واینه که نمراتی که ما به ورودی میدیم همیشه که صحیح نیستند و مقدار اعشار هم دارن (مثلا15/25 ) به چه صورت عمل کنم تا جواب بده موقعه ای که به نوع float تغییر میدم از برنامه خارج میشه ممکنه در این قسمت از pointer استفاده کنیم یا خیر.....................
    اینم کدی رو که تغییر دادم.........................
    توی یک کامپایلر جدید من همون کد اول رو راحت و بدون مشکل اجرا کردم اما وقتی توی ++Turbo C خواستم اجرا کنم توی خوندن float به این صورت مشکل داشت و از برنامه خارج میشد:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    بجاش این رو زدم :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اینطوری Turbo C مشکل نداشت!! حالا نمیدونم مشکل تو هم همینه یا چیز دیگه ایه!!
    Last edited by m3hrz4d; 30-11-2007 at 16:11.

  10. #140
    اگه نباشه جاش خالی می مونه egoldfars's Avatar
    تاريخ عضويت
    Mar 2005
    پست ها
    205

    6

    توی یک کامپایلر جدید من همون کد اول رو راحت و بدون مشکل اجرا کردم اما وقتی توی ++Turbo C خواستم اجرا کنم توی خوندن float به این صورت مشکل داشت و از برنامه خارج میشد:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    بجاش این رو زدم :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اینطوری Turbo C مشکل نداشت!! حالا نمیدونم مشکل تو هم همینه یا چیز دیگه ایه!!
    ممنون
    آره مشکلم همین قسمت بود آخه من با ++Turbo C ورژن 3 داس کارمیکنم.
    شما برای بار اول که برنامه رو تست کردید از چه کامپایلری استفاده کردی که دچار این مشکل نشد.
    بازم ممنون از توجه شما آقا بهزاد..................

Thread Information

Users Browsing this Thread

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

User Tag List

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

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