作者omega162 (歐袂尬)
看板C_and_CPP
標題[問題] 矩陣計算
時間Sun Jul 5 20:37:01 2009
a.txt裡面是
2 1 5
1 -3 1
5 -1 2
程式:
#include<iostream>
#include<fstream>
using namespace std;
void main()
{
char s1[255],s2[255],s3[255];
int sum=0;
ifstream A("a.txt");
A.getline(s1,255,'\n');
A.getline(s2,255,'\n');
A.getline(s3,255,'\n');
for(int i=0;i<strlen(s1);i=i++)
{
cout<<s1[i];
}
cout<<endl;
cout<<s1[0]<<endl;
sum=s1[0]*s1[0];
cout<<"Ans="<<sum<<endl;
}
輸出:
2 1 5
2
Ans=2500
在cout<<s1[i]; 這邊,可以讀到2 1 5
cout<<s1[0]<<endl; 這一行,也有輸出s1[0]的答案是2
但是sum=s1[0]*s1[0]; 輸出的結果卻是2500
這邊的輸出 應該要 2*2=4 才對
是我的邏輯錯誤? 還是程式碼有打錯?
一值無法計算出正確答案
請各位幫忙告訴我錯在哪裡
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.46.207.77
※ 編輯: omega162 來自: 114.46.207.77 (07/05 20:37)
1F:→ pico2k:你讀進來的東西是字元'2',不是數值2... 07/05 21:17
2F:→ pico2k:'2'的ASCII值是50... 07/05 21:18
3F:推 world9918:讀進來的數字字串先用sscanf轉成int 07/05 21:32
4F:推 VictorTom:i=i++ 是不是有犯到置底十誡之九啊....@_@" 07/05 22:56
5F:→ VictorTom:還是一定會 i=i; i++; 這樣的順序執行?? 07/05 23:01
6F:推 zlw:i=i++;就是一個運算式又要賦值又要做i++,我覺得有犯到耶 07/05 23:17
7F:推 VictorTom:小弟我也這樣覺得, 因為感覺和第九誡例子差不多^^|| 07/05 23:23
8F:→ omega162:i=i++,本來是寫成i=i+2;只輸出數字不要輸出空白 07/06 00:01
9F:→ omega162:後來要修改,沒改好,抱歉 07/06 00:01
10F:→ omega162:原來讀進來只是字元,沒有轉換成數值,所以每次都運算不 07/06 00:03
11F:→ omega162:對, 非常謝謝各位,告訴我錯在哪裡 07/06 00:04