2013-05-13 36 views
1

問題: 編寫一個名爲Print7的過程以打印可以被7整除的0:100範圍內的所有整數。要在一條輸出行上打印十個數字。因此編寫一個調用該過程的程序。使用fprintf在Matlab中的多行上打印

這是我做過什麼

file = fopen('print7.dat','r'); 

x = 1:100 

for x=[1:100] 
    if mod(x,7) == 0; 
    print7 = [x] 
end 
end 
fprintf('print7 %d\n', print7) 

現在,它的輸出變成98號 - 我的理解是100整除7.在數最多,但我希望有一個10xn矩陣般的結果。

我該怎麼辦?

回答

1

你正在做什麼將結果存儲在一個變量中,並覆蓋每次迭代中的變量。你可以打印出來,而不是直接像這樣:

c=0; 
for x=[1:100] 
    if mod(x,7) == 0 
     fprintf('%3d',x) 
     c=c+1; 
     if mod(c,10) ==0 
     fprintf('\n') 
     end 
    end 
end 
+0

哇。這工作!但我不明白爲什麼 – Siyanda 2013-05-13 03:21:15

+0

我想你可能很難理解爲什麼mod(c,10)因爲它的其餘部分相當微不足道。因此,使用fprintf('%3d',x)我們將計算結果打印在同一行上,但是由於每10次結果後我們需要寫入一個新行,我們需要編寫一個換行符,即「\ n」。所以我保持一個計數器c,計算到目前爲止計算了多少結果,並在第10次結果後添加一個新行。國防部(c,10)檢查我們什麼時候擊中10次出局次數。 – 2013-05-14 06:43:47

0
fileID = fopen('print7.dat','r'); 

for x = 1:100 
if(mod(x,7) == 0) 
    fprintf(fileID,'%d',x); 
end %end of if 
end %end of for 

fclose(fileID);