#15719: 想說用ASCII的差來算,可是為什麼用不出來QAQ


vm0u831@gmail.com (:D D)

學校 : 不指定學校
編號 : 86699
來源 : [223.138.122.178]
最後登入時間 :
2018-11-14 08:29:46
a065. 提款卡密碼 -- 板橋高中教學題 | From: [223.139.26.94] | 發表日期 : 2018-10-22 20:01

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main()
{
char a[7];
int b[7];
while(cin>>a){
for(int i=0;i<7;i++){
int(a[i]);
}
for(int i=0;i<7;i++){
b[i]=abs(a[i+1]-a[i]);
cout<<b[i];
}


}
return 0;
}

 
#15723: Re:想說用ASCII的差來算,可是為什麼用不出來QAQ


OwO310659 (OwO)

學校 : 新北市立板橋高級中學
編號 : 58647
來源 : [118.150.111.60]
最後登入時間 :
2024-04-25 01:16:40
a065. 提款卡密碼 -- 板橋高中教學題 | From: [106.105.27.148] | 發表日期 : 2018-10-22 22:51

目前看到主要有3個問題:

1. int(a[i]); 這樣寫只會回傳int的數值, 實際上並不會將 a[i] 的型態更改為 int ,
  另外 C++ 的 char 本身就是儲存 ASCII 的數值(只是相較 int 只有 1Byte 且輸入/輸出時是使用字元),
  所以其實可以直接對 char 進行運算是沒問題的~

2. 主要會有問題的地方在於計算差的那個迴圈,
  你個for迴圈會使 i 從 0 跑到 6 ,
  但當 i = 6 時去執行 abs(a[i+1]-a[i]) 會發現在 a[i+1] 存取到的位址是 a[7] ,
  不只超過字串的範圍也超過矩陣的範圍,
  所以最後會計算出奇怪的數值出來~

3. 記得每一筆測資都要換行~


以上希望有幫助到你~ OwO

 
ZeroJudge Forum