看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev-C++ 問題(Question): 目前的程式是執行矩陣平方的結果 我希望算出這個矩陣的n次方(假設n是1000) 請問我該怎麼設定呢? 另外目前矩陣只能輸入整數 有辦法改成輸入小數嗎? 程式碼(Code):(請善用置底文網頁, 記得排版) #include<stdio.h> #include<conio.h> int main() { int a[10][10],mult[10][10],r1,c1,i,j,k; printf("請輸入矩陣的rows跟columns:"); scanf("%d%d",&r1,&c1); //儲存矩陣的元素 printf("\n輸入第一個矩陣的elements:\n"); for(i=0;i<r1;++i) for(j=0;j<c1;++j) { printf("Enter elements a%d%d:",i+1,j+1); scanf("%d",&a[i][j]); } //初始化最終的matrix for(i=0;i<r1;++i) for(j=0;j<c1;++j) { mult[i][j]=0; } //矩陣相乘 for(i=0;i<r1;++i) for(j=0;j<c1;++j) for(k=0;k<c1;++k) { mult[i][j]+=(a[i][k]*a[k][j]); } //OUTPUT矩陣 printf("\n矩陣輸出:\n"); for(i=0;i<r1;++i) for(j=0;j<c1;++j) { printf("%d",mult[i][j]); if(j==c1-1) printf("\n\n"); } getch(); } 以上 謝謝各位好心的大大 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.54.99 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1414327204.A.BE1.html
jacky1989: 我只知道沒排版的程式沒有看的必要 10/26 20:51
ljuyentintho: sorry 不懂版規 10/26 21:05
※ 編輯: ljuyentintho (114.35.172.129), 10/26/2014 21:20:53
jacky1989: 這不只是板規,給任何人看程式碼排版是基本要求 10/26 22:03
jacky1989: 所以快改吧!! 10/26 22:03
※ 編輯: ljuyentintho (220.132.55.51), 10/26/2014 23:00:03
jammy50605: 有一種type叫做float 10/26 23:06
jammy50605: 要N次方就 mult[i][j]+=(mult[i][k]*a[k][j]) ; 10/26 23:08
jammy50605: 在自己加一個跑n次的迴圈就行了 10/26 23:09
ljuyentintho: 你是說程式裡的int改成float然後main前面改成void嗎 10/27 00:50
jammy50605: 宣告陣列改成float a[][] main前面那個叫做回傳值型態 10/27 01:02
jammy50605: 跟你要的無關 10/27 01:03
jammy50605: 還有輸出的地方要改成%f或%.2f代表輸出到小數點後兩位 10/27 01:05
wope: 用scanf輸入矩陣 不小心輸入錯不就重新執行 10/27 05:06
wope: 1000次100000次都一樣 自己查eigenvector及eigenvalue 10/27 05:10
wope: 另外,不知維度矩陣宣告要用動態 10/27 05:12
wope: 小數點就用double 或float 宣告你的變數a 10/27 05:16
wope: 如果速度不夠快 後面矩陣要轉置 10/27 05:20
wope: 這樣走下來一個月就不見了 10/27 05:21
longlongint: 建議原po改用matlab 10/28 19:36
dirkc: scanf是stdin,用導向可以把輸入放在檔案裡;另外是否用heap 10/29 12:14
dirkc: 好像也沒有定論,通常是看需求囉 10/29 12:15
dirkc: 我只知道有個版規是語氣請和緩 :) 10/29 12:17