Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: câu hỏi ngắn về Malloc

  1. #1
    Ngày gia nhập
    11 2012
    Bài viết
    0

    Mặc định câu hỏi ngắn về Malloc

    cấp phát bộ nhớ cho 1 chuỗi có dạng : day1[] sẽ là :
    int *day1;
    day1 = (int*) malloc (n * sizeof(int));


    còn cấp phát bộ nhớ cho 1 chuỗi có dạng: day2[][] thì phải làm thế nào?


    ai biết giúp mình nhá tx,

  2. #2
    Ngày gia nhập
    11 2012
    Bài viết
    136

    Nếu dùng c++ thì bạn dùng toán tử new cấp phát sẽ đơn giản đi rất nhiều

    int **a=new int*[n];
    for(int i=0;i<n;++i)
    a[i]=new int[m];

    Còn với hàm malloc trong C thì cũng tuơng tự
    int **a=(int**)malloc(n*sizeof(int*));
    for(int i=0;i<n;++i)
    a[i]=(int*)malloc(m*sizeof(int))
    Đã được chỉnh sửa lần cuối bởi kimcy1992 : 20-11-2012 lúc 08:25 AM.
    Giao lưu và học hỏi
    https://www.facebook.com/kimcy1992

  3. #3
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    Trích dẫn Nguyên bản được gửi bởi kimcy1992 Xem bài viết
    Nếu dùng c++ thì bạn dùng toán tử new cấp phát sẽ đơn giản đi rất nhiều

    int **a=new int*[n];
    for(int i=0;i<n;++i)
    a[i]=new int[m];

    Còn với hàm malloc trong C thì cũng tuơng tự
    int **a=(int**)malloc(n*sizeof(a)); <~~~~~ Sai! Phải là sizeof(int*)
    for(int i=0;i<n;++i)
    a[i]=(int*)malloc(m*sizeof(int))
    _________________________________________________
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

  4. #4
    Ngày gia nhập
    11 2012
    Bài viết
    136

    Trích dẫn Nguyên bản được gửi bởi doicanhden Xem bài viết
    _________________________________________________
    cảm ơn bạn lâu ngày không sờ quên ngay được đúng là vào lại ra, ra lại vào
    Giao lưu và học hỏi
    https://www.facebook.com/kimcy1992

  5. #5
    Ngày gia nhập
    11 2012
    Bài viết
    0

    hì,, cho mình hỏi thêm,, nếu cần cấp phát bộ nhớ rất lớn vd: 100 000 *sizeof(int) thì máy bị đơ luôn ,,có cách nào khắc phục ko,, mình đang làm bài toán nhân 2 đa thức mũ lên tới 80 000 (người ta có chương trình nhập đầu vào = máy tính ) :(.

  6. #6
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    Mặc định câu hỏi ngắn về Malloc

    Trích dẫn Nguyên bản được gửi bởi hostpro16 Xem bài viết
    hì,, cho mình hỏi thêm,, nếu cần cấp phát bộ nhớ rất lớn vd: 100 000 *sizeof(int) thì máy bị đơ luôn ,,có cách nào khắc phục ko,, mình đang làm bài toán nhân 2 đa thức mũ lên tới 80 000 (người ta có chương trình nhập đầu vào = máy tính ) :(.
    Mới có 390Kb (kiểu int 4 bytes) thôi, dư sức cấp phát động mà bạn?. Tôi đã từng thử cấp phát 700Mb bộ nhớ. Có thể việc cấp phát hơi lâu một chút, khiến máy xử lý chậm. Không biết đề yêu cầu thế nào? Nếu có thể thì cho xem qua cái đề được không? Có lẽ là có phương pháp tối ưu khi sử dụng bộ nhớ. :]
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

  7. #7
    Ngày gia nhập
    11 2012
    Bài viết
    0

    Zadejte stupen polynomu A:(nhập bậc của đa thức A)
    4
    Zadejte koeficienty polynomu A:(nhập các hệ số)
    1 0 0 2 0
    Zadejte stupen polynomu B:
    3
    Zadejte koeficienty polynomu B:
    1 1 1 1

    kết quả sẽ là dạng thế này:
    x<sup>7</sup>+x<sup>6</sup>+x<sup>5</sup>+3x<sup>4</sup>+2x<sup>3</sup>+2x<sup>2</sup>+2x

    x<sup> 7</sup> chính là x^7
    +x<sup>6</sup> là +x^6 ...

    mình làm theo kiểu truyền thống nhân 2 đa thức: đa thức 1 sẽ là : dayA[MAX]
    ////////////////////////////////////////////////////////đa thức 2 sẽ là : dayB[MAX]
    nhân nó vào chứa trong: daychua[MAX][MAX]
    làm lệch các hệ số rồi cộng lại ra 1 dãy: ketqua[MAX]

    #define MAX 1000 khi dùng Malloc
    máy còn chạy đc chứ 100000 là nó đơ mất rồi

  8. #8
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    ^
    Dùng Define làm gì thế trời. @@~. Đã nhập hệ số của đa thức để cấp phát động, mà còn cấp phát trước nữa là sao?
    Xem thử code bên dưới, lụm được bên pastebin, có edit lại coding-style:

    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3.  
    4. int main(int argc, char *argv[])
    5. {
    6.     int stupen_a;
    7.     int stupen_b;
    8.     int sup;
    9.     int i,j,k,l;
    10.     int *koeficienty_a;
    11.     int *koeficienty_b;
    12.     int *vysledek;
    13.  
    14.     printf("Zadejte stupen polynomu A:\n");
    15.  
    16.     if ( scanf("%d",&stupen_a) != 1 ) {
    17.         printf("Nespravny vstup.\n");
    18.         return 0;
    19.     }
    20.    
    21.     if (stupen_a<0) {
    22.         printf("Nespravny vstup.\n");
    23.         return 0;
    24.     }
    25.  
    26.     koeficienty_a = (int *)malloc((stupen_a + 1) * sizeof(int));
    27.     printf("Zadejte koeficienty polynomu A:\n");
    28.  
    29.     for (i = 0; i <= stupen_a; ++i) {
    30.         if ( scanf("%d", &koeficienty_a[i]) != 1) {
    31.             printf("Nespravny vstup.\n");
    32.             return 0;
    33.         }
    34.     }
    35.  
    36.     printf("Zadejte stupen polynomu B:\n");
    37.     if ( scanf("%d", &stupen_b) != 1) {
    38.         printf("Nespravny vstup.\n");
    39.         return 0;
    40.     }
    41.  
    42.     if (stupen_b < 0) {
    43.         printf("Nespravny vstup.\n");
    44.         return 0;
    45.     }
    46.     koeficienty_b = (int *)malloc((stupen_b + 1) * sizeof(int));
    47.     printf("Zadejte koeficienty polynomu B:\n");
    48.     for (j = 0; j <= stupen_b; ++j) {
    49.         if ( scanf("%d", &koeficienty_b[j]) !=1 ) {
    50.             printf("Nespravny vstup.\n");
    51.             return 0;
    52.         }
    53.     }
    54.  
    55.    
    56.     vysledek = (int*)calloc( stupen_a + stupen_b + 1, sizeof(int));
    57.  
    58.     for (k = 0; k <= stupen_a; ++k)
    59.         for (i = 0; i <= stupen_b; ++i)              
    60.             vysledek[k + i] += koeficienty_a[k] * koeficienty_b[i];
    61.  
    62.     free(koeficienty_a);
    63.     koeficienty_a = NULL;
    64.    
    65.     free(koeficienty_b);
    66.     koeficienty_b = NULL;
    67.    
    68.     sup = stupen_a + stupen_b;
    69.  
    70.     for (l = 0; l <= stupen_a + stupen_b - 2; ++l) { /*Zacatek vypisu*/
    71.         if (vysledek[l]!=0) {  
    72.             if(l==0) {  
    73.                 switch(vysledek[l]) {
    74.                 case -1:
    75.                     printf("-x<sup>%d</sup>", sup);
    76.                     break;
    77.                 case 1:
    78.                     printf("x<sup>%d</sup>", sup);
    79.                     break;
    80.                 default:
    81.                     printf("%dx<sup>%d</sup>", vysledek[l], sup);
    82.                     break;
    83.                 }
    84.             } else {
    85.                 switch(vysledek[l]) {
    86.                 case -1:
    87.                     printf("-x<sup>%d</sup>", sup);
    88.                     break;
    89.                 case 1:
    90.                     printf("+x<sup>%d</sup>",sup);
    91.                     break;
    92.                 default:
    93.                     printf("%+dx<sup>%d</sup>",vysledek[l],sup);                                  
    94.                     break;
    95.                 }
    96.             }
    97.         }
    98.         --sup;
    99.     }
    100.  
    101.     if (vysledek[l]!=0) {
    102.         switch(vysledek[l]) {
    103.         case -1:
    104.             printf("-x");
    105.             break;
    106.         case 1:
    107.             printf("+x");
    108.             break;
    109.         default:
    110.             printf("%+dx",vysledek[l]);
    111.             break;
    112.         }
    113.     }
    114.     l++;
    115.    
    116.     if (vysledek[l]!=0)
    117.         printf("%+d", vysledek[l]);
    118.    
    119.     free(vysledek);
    120.     printf("\n");
    121.  
    122.     system("PAUSE");
    123.     return 0;
    124. }
    P/s: Tiếng Slovak là tiếng nước nào thế nhỉ?
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

  9. #9
    Ngày gia nhập
    11 2012
    Bài viết
    0

    òi .] ,,ko biết nói thế nào nữa,,cái này với mình thực sự cần thiết và bổ ích,,đúng là thành viên nhiệt tình !! :| ,,(đề này là bài về nhà của 1 trường đại học kĩ thuật năm 1 bên Séc mình đang theo học :]) mà sao bạn cũng biết tiếng Séc nhỉ edit kiểu gì hay zậy :]

  10. #10
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    Trích dẫn Nguyên bản được gửi bởi hostpro16 Xem bài viết
    òi .] ,,ko biết nói thế nào nữa,,cái này với mình thực sự cần thiết và bổ ích,,đúng là thành viên nhiệt tình !! :| ,,(đề này là bài về nhà của 1 trường đại học kĩ thuật năm 1 bên Séc mình đang theo học :]) mà sao bạn cũng biết tiếng Séc nhỉ edit kiểu gì hay zậy :]
    Code lụm mà bạn, viết sẳn hết rồi. Chỉ chỉnh sửa lại cho dễ nhìn + tối ưu một chút. Chỉ cần đọc code là hiểu, chẳng quan tâm nó viết và comment bằng ngôn ngữ nào. Nếu bí quá thì google translate mấy cái tên biến thôi.
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

Các đề tài tương tự

  1. Lập trình C++ Con trỏ cấp 2 và hàm malloc
    Gửi bởi ruacon_chungtinh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 20-09-2013, 09:31 PM
  2. Hàm malloc trong C
    Gửi bởi thaohoangf trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 04-12-2012, 07:34 AM
  3. hàm malloc
    Gửi bởi edconan93 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 13-07-2012, 01:46 AM
  4. Phân biệt hàm malloc và thư viện malloc.h
    Gửi bởi nguyenthanhhai90vp trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 16-09-2010, 11:34 AM
  5. Gặp lỗi khi sử dụng hàm malloc
    Gửi bởi Buomvang trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 19-04-2010, 02:04 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn