نمایش نتایج 1 تا 5 از 5

نام تاپیک: راهنمایی در مورد آرایه 2 بعدی پویا در C

  1. #1
    کاربر دائمی آواتار hamide_kh
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    روبروی مانیتور
    پست
    202

    راهنمایی در مورد آرایه 2 بعدی پویا در C

    سلام خدمت دوستان
    برنامه ای دارم که باید سطر و ستون را از کاربر بگیره و سپس یک آرایه 2 بعدی ایجاد کنه،سپس کوچکترین عنصر را پیدا کنه
    البته من به روش زیر یک آرایه 2 بعدی ایجاد می کنم اما با این مشکل که سطر و ستون اون یک اندازه میشه روبرو هستم،برای اینکه تعداد سطر و ستون اون چیزی بشه که کاربر وارد می کنه چه باید کرد؟
    2-در ضمن می خوام به جای اینکه آرایه int باشه char بشه(البته آرایه را char کردم اما جستجو میریزه بهم)
    این هم از برنامه
    #include<stdio.h>
    #include<conio.h>
    #include<alloc.h>
    int main(){
    clrscr();
    int n,m,min=0,ii=0,jj=0;
    printf("Enter a Number :");
    scanf("%d",&n);

    int **arr = (int **)malloc(n);
    for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
    {
    printf("Enter %d%d:",i,j);
    scanf("%d",&arr[i][j]);
    printf("\n");
    }
    min=arr[0][0];
    for(i=0;i<n;i++)
    for(int j=0;j<n;j++)
    {
    if (arr[i][j]<min)
    {
    min=arr[i][j];
    ii=i;
    jj=j;
    }
    }
    printf("Min is :%d",min);
    printf("\nLocation is:%d%d",ii,jj);
    getch();
    }

    اگه ممکنه راهنماییم کنید چون تا فردا بیشتر وقت ندارم
    ممنون،منتظر هستم؟
    در

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

    نقل قول: راهنمایی در مورد آرایه 2 بعدی پویا در C

    فکر کنم با یک حلقه بشه این کار را انجام داد

    int **a;
    int size_x;
    int size_y;
    size_x = 5;
    size_y = 3;
    a = malloc(size_x * sizeof(int *));

    for (i = 0; i < size_x; i++) {
    a[i] = malloc(size_y * sizeof(int));
    }

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

    نقل قول: راهنمایی در مورد آرایه 2 بعدی پویا در C

    اینم فکر کنم همون چیزیه که دنبالشی:

    #include <stdio.h>
    #include <stdlib.h> /* for malloc() prototype */

    double **createArray(int nx, int ny)
    {
    int i, j;
    double **retval;
    retval = malloc(nx * sizeof(double *)); /* no cast */
    printf("Inside createArray: retval = %p\n", (void *)retval);
    for (i = 0; i < nx; i++) {
    retval[i] = malloc(ny * sizeof(double)); /* no cast */
    }
    printf("inside the creating function:\n");
    for (i = 0; i < nx; i++) {
    for (j = 0; j < ny; j++) {
    retval[i][j] = ny * i + j;
    printf("retval[%d][%d] is %f\n", i, j, retval[i][j]); /* %f */
    }
    }
    printf("\n");
    return retval;
    }

    int main()
    {
    double **table;
    int nx = 3, ny = 2; /* will actually be obtained at run time */

    int i, j;
    printf("In main(): before createArray, table = %p\n\n", (void *) table);
    table = createArray(nx, ny);
    printf("In main(): after createArray, table = %p\n\n", (void *) table);
    for (i = 0; i < nx; i++) {
    for (j = 0; j < ny; j++) {
    printf("table[%d][%d] is %f\n", i, j, table[i][j]); /* %f */
    }
    }
    return 0;
    }


  4. #4
    کاربر دائمی آواتار hamide_kh
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    روبروی مانیتور
    پست
    202

    نقل قول: راهنمایی در مورد آرایه 2 بعدی پویا در C

    سلام خدمت شما دوست عزیز
    ممنون از پاسختون
    چک می کنم اگه مشکلی داشتم باز مزاحم میشم

  5. #5
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: راهنمایی در مورد آرایه 2 بعدی پویا در C

    و همیشه بعد از گرفتن حافظه از سیستم و استفاده از آن باید آنرا آزاد کرد.
     
    int main()
    {
    double **table;
    int nx = 3, ny = 2; /* will actually be obtained at run time */

    int i, j;
    printf("In main(): before createArray, table = %p\n\n", (void *) table);
    table = createArray(nx, ny);
    printf("In main(): after createArray, table = %p\n\n", (void *) table);
    for (i = 0; i < nx; i++) {
    for (j = 0; j < ny; j++) {
    printf("table[%d][%d] is %f\n", i, j, table[i][j]); /* %f */
    }
    }
    free(table); // اضافه شود
    return 0;
    }

    در ضمن تابع دریافت حافظه از سیستم را بصورت زیر ساده تر کنید.

    double **createArray(int nx, int ny)
    {
    int i, j;
    double **retval;
    retval = (double **)malloc(nx * ny * sizeof(double)); // تغییر
    printf("Inside createArray: retval = %p\n", (void *)retval);
    printf("inside the creating function:\n");
    for (i = 0; i < nx; i++) {
    for (j = 0; j < ny; j++) {
    retval[i][j] = ny * i + j;
    printf("retval[%d][%d] is %f\n", i, j, retval[i][j]); /* %f */
    }
    }
    printf("\n");
    return retval;
    }
    آخرین ویرایش به وسیله tdkhakpur : چهارشنبه 28 بهمن 1388 در 21:22 عصر دلیل: اضافه شدن دریافت حافظه از سیستم

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

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