(不知道標題怎弄不出C++的"++"...冏)
學校上機考有考這題
當時寫不出來
現在弄了很久
結果還是弄不出來
我今年大一才剛接觸C++
(接觸才不到半年)
回答的時候盡量用簡單的C++程式來表示
還有如果要寫註解的話也用簡單點的
不然我很容易看不懂= =
請大家幫幫忙吧!
2007-01-25 15:11:35 · 1 個解答 · 發問者 阿遠 2 in 電腦與網際網路 ➔ 程式設計
很謝謝你的回答,可是我們教授直接從C 教...
所以我看不懂C語法
2007-01-26 15:45:08 · update #1
#include
#include
int l, p;
FILE *fo;
void output(void)
{// if (l==1) fprintf(fo, "%c", p);
// else
fprintf(fo, "%c%c", l, p);
}
int main()
{ int i, j, n;
FILE *fi;
fi = fopen("RLE_IN.TXT", "r");
fo = fopen("RLE_OUT.TXT", "w+");
p = fgetc(fi); // 讀入最開始的值
l = 1; // 因上列讀入,所是長度已是1
do
{ n = fgetc(fi); // 讀入新值
if (n == p) l++; // 和舊值相同,數+1
else // 和舊值不同
{ output(); // 輸出數、值
p = n, l = 1; // 換成新值,已讀入,所以數是1
}
} while (n != EOF); // 檔案還沒結束,再讀
output(); //輸出最後一組
fclose(fi);
fseek(fo, 0, SEEK_SET); // 從頭開始讀
do
{ j = fgetc(fo); // 讀數
n = fgetc(fo); // 讀值
for (i=0; i
} while (n != EOF);
fclose(fo);
return 0;
}
這程式的問題:
0. 要先有一個叫 RLE_IN.TXT 的檔案。
1. 標準RLE 當數是 1 時,是不輸出數的,直接輸出值!
但那讀入會較麻煩。
你說你是新手,那我就從略。
你先看懂這簡單版。
2. 這程式表面上可以處理非文字檔。
但,非文字檔若有 (26, 0x1A) 的內容時,會有誤。
要處理那問題,超過新手範圍,略。
3. 沒檢查/處理開、讀、關檔案的錯誤問題。
4. 它是 C,版大,您自己改成 C++吧! ^_^
2007-01-25 21:33:44 · answer #1 · answered by ? 7 · 0⤊ 0⤋