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

Đề tài: ma trận vuông đối xứng

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

    Red face ma trận vuông đối xứng

    mọi người chữa giùm em code bài này với em pó tay rùi

    C++ Code:
    1. #include<iostream.h>
    2. #include<conio.h>
    3. #include<iomanip.h>
    4. #define N 3
    5. int arr[N][N];
    6. int V[N];
    7. int T=0;
    8. //nhap du lieu tu ban phim
    9. void keyboardInput()
    10. {
    11.  int i,j;
    12.  for (i=0; i<N; i++)
    13.  {
    14.   for (j=0; j<N; j++)
    15.     {
    16.      if (i==j)
    17.      arr[i][j]=0;
    18.      else
    19.      if(j>i)
    20.      {
    21.      cout<<"arr["<<i<<","<<"]=";
    22.      cin>>arr[i][j];
    23.      }
    24.      else
    25.      arr[i][j]=arr[j][i];
    26.     }
    27.  }
    28. }
    29. void output()
    30. {
    31.  cout<<"\nHien ma tran trong so cua do thi\n";
    32.  int i,j;
    33.  for (i=0; i<N; i++)
    34.  {
    35.   for(j=0; j<N; j++)
    36.  
    37.   cout<<setw(4)<<arr[i][j]<<" ";
    38.   if(j%N==0)cout<<"\n";
    39.  }
    40. }
    41. void prim()
    42. {
    43.  //khoi tao
    44.  int dinh[N];
    45.  int d[100];
    46.  //int near[100];
    47.  int k,s=0;
    48.  for (k=0; k<N; k++)
    49.  dinh[N]= k;
    50.  V[s]= dinh[s];
    51.  near[s]= s;
    52.  for (int v=1; v<N; v++)
    53.  {
    54.     d[v]= arr[s][v];
    55.     neat[v]=s;
    56.  }
    57.  //buoc lap
    58.  int stop = 0;
    59.  while (!stop)
    60.  {
    61.     //tim khoang cach nho nhat
    62.     int min = d[0];
    63.     for (k=0; k<N; k++)
    64.     {
    65.          if (d[k]< min)
    66.          min = d[k];
    67.     }
    68.     //tim dinh co khoang cach nho nhat
    69.     k = 0;
    70.     int u = 0;
    71.     while(k<N)
    72.     {
    73.         if(d[k]==min && d[k]!=0)
    74.         {
    75.             u= k;
    76.             break;
    77.         }
    78.         k++;
    79.     }
    80.     s++;
    81.     V[s]= u;
    82.     T += arr[u][near[u]];
    83.     if (s==N) stop =1;
    84.     else
    85.     {
    86.         for (int v= 0; v<N; v++)
    87.         {
    88.             if(d[v]> arr[u][v])
    89.             {
    90.                 d[v]= arr[u][v];
    91.                 near[v]=u;
    92.             }
    93.         }
    94.     }
    95.  }
    96. }
    97. int main()
    98. {
    99.         keyboardInput();
    100.         output();
    101.         prim();
    102.         cout<<"Ket qua: "<<T;
    103.         cout<<"tap dinh:"<<V[N]
    104.         getch();
    105.         return 0;
    106. }

    ví dụ khi cho chạy thử chương trình
    0 8 7
    8 0 9
    7 9 0
    thì kết quả ra là 15

    Vui lòng cho code vào tag code. Đọc Nội quy để biết thêm chi tiết
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 10-04-2008 lúc 09:27 PM. Lý do: Nhắc nhở hoài

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

    Xin lỗi, bạn có thể định nghĩa ma trận vuông đối xứng là ma trận như thế nào không?
    Mình học ĐSTT lâu rồi nên quên mất

  3. #3
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Trích dẫn Nguyên bản được gửi bởi ndt112 Xem bài viết
    Xin lỗi, bạn có thể định nghĩa ma trận vuông đối xứng là ma trận như thế nào không?
    Mình học ĐSTT lâu rồi nên quên mất
    Nếu xem cái bạn angela cho ví dụ thì mình hỉu là:
    Đối xứng wa chéo chính. Và tính tổng các phần tử đối xứng đó.
    Chà koi kốt xem nào
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  4. #4
    Ngày gia nhập
    12 2007
    Bài viết
    224

    0 8 7
    8 0 9
    7 9 0
    thì kết quả ra là 15
    Why? I dont understand.

  5. #5
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    C++ Code:
    1. //nhap du lieu tu ban phim
    2. void keyboardInput()
    3. {
    4.  int i,j;
    5.  for (i=0; i<N; i++)
    6.  {
    7.   for (j=0; j<N; j++)
    8.     {
    9.      if (i==j)
    10.      arr[i][j]=0;
    11.      else
    12.      if(j>i)
    13.      {
    14.      cout<<"arr["<<i<<","<<"]=";
    15.      cin>>arr[i][j];
    16.      }
    17.      else
    18.      arr[i][j]=arr[j][i];
    19.     }
    20.  }
    21. }
    Hàm này sao bạn không cho j chạy luôn từ i , sau khi nhập một phần tử thì chỉ cần gán cái kia theo nó là xong.Khỏi phải chạy lại, khỏi phải so sánh -> nhẹ nhàng hơn.
    ---------------------------------

    C++ Code:
    1. near[s]= s;
    2.  for (int v=1; v<N; v++)
    3.  {
    4.     d[v]= arr[s][v];
    5.     neat[v]=s;// cái neat này ở đâu ra vậy
    6.  }
    Ui, ui bạn đặt tên biến mình đọc hoa hết cả hai kái mắt lên rùi.
    Bạn giải thích về iu cầu bài tập của bạn và sửa lại code . Sau đó mọi người jup đỡ. Chứ ciểu này thì pótay luôn.
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  6. #6
    Ngày gia nhập
    06 2007
    Bài viết
    2

    Mặc định ma trận vuông đối xứng

    @: angela
    Bạn phải nêu rõ yêu cầu của bài toán là gì ra thì mọi người mới hiểu và giúp bạn được.
    Viết một đoạn code tràng giang đại hải thì ai mà biết là mục đích của bài này là gì

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

  1. Trao đổi liên kết, trao doi logo, Text Link với các webforumblog (free)
    Gửi bởi nguyenlam14990 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 31
    Bài viết cuối: 13-03-2012, 11:53 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