C言語なら俺に聞け(入門編)Part 101at TECH
C言語なら俺に聞け(入門編)Part 101 - 暇つぶし2ch684:678
12/05/21 02:41:48.37 BE:814792526-2BP(0)
Debug Error!

Program: C:\Users\名前
\Desktop\ROT13\Debug\ROT13\.exe
Module: C:\Users\名前
\Desktop\ROT13\Debug\ROT13.exe
File:

Run-Time Check Failure #3-The cariable'rot'is being used
without being initialized.

(Press Retry tu debug the application)

っていう表示のウィンドウが出ます。。。。

685:デフォルトの名無しさん
12/05/21 02:48:58.17
int rot=0;

686:デフォルトの名無しさん
12/05/21 02:49:16.73
>>684
hello world の表示は出来た?

687:678
12/05/21 02:53:16.56 BE:407396423-2BP(0)
>>685
int rot = 0; だと、終わってしまいます。

>>686
出来ました。
なんでもかんでも出来ないわけではないそうです。

688:デフォルトの名無しさん
12/05/21 02:56:07.55
>>687
そりゃそうだろ
>>682はrotの入出力やってないもん
でもエラー出なくなったろ?
>>684のエラーはそういう意味
どこかで入出力文があれば初期化も不要なはずなんだが

689: ◆QZaw55cn4c
12/05/21 03:01:32.04
>>684
それは rot に値がはいっていないよ、ってことですね。
たしかに、>>682 では rot の値がきまっていない。(rot をどう処理するかはかいてあっても。)

で rot に値をいれればいいのですが、どんな感じにしますか?getchar() で標準入力から掘り込み、printf() で表示するとかが適当だとおもいますけど。
なにか希望があれば教えてください。

あとプログラムを作成している環境(コンパイラの種類とか)もわかるのなら教えてください。もしかして web でやっているのでしょうか?

690:678
12/05/21 03:03:44.46 BE:4888750289-2BP(0)
>>688
#include<stdio.h>


int main(void)
{
int rot;

while(rot >= 'a'&&rot <= 'z')
{
printf("%c\n",rot);

if('a'<=rot && rot<='m')
rot = rot+13;
else
if('n'<= rot && rot<='z')
rot = rot-13;
}

return 0;
}

これでprintfを足したんですが、同じエラー文?が出ました。

691:678
12/05/21 03:09:58.26 BE:3327066277-2BP(0)
>>689
希望はないんですが、あまり複雑なモノはまだ習ってないので遠慮したいです。

692:デフォルトの名無しさん
12/05/21 03:13:10.20
なんちゅーか
プログラム云々の前にチラシの裏にでも理解出来たと思う部分を書き出してみて

自分の頭ん中をデバッグするところから始めるべき

693:デフォルトの名無しさん
12/05/21 03:15:07.11
>>689
あと任せた
寝る

694:デフォルトの名無しさん
12/05/21 03:17:06.88
>>690
最後に一つだけ
「入出力文」と書いたのは悪かった

「入力文」の方が正しいな
エラーの理由はrotを初期化しないでいきなり

while(rot >= 'a'&&rot <= 'z')

なんてやってるから undefined、つまり「鼻から悪魔が出てきても知りませんよ」という事

695: ◆QZaw55cn4c
12/05/21 03:20:25.52
>>691
URLリンク(ideone.com)
一文字しかできませんが、手始めにこんなのはどうですか?
/* 1 */ と /* 3 */ で入力、/* 2 */ で出力しています。

あと rot13 の処理が「実は」正しくないですね。

696: ◆QZaw55cn4c
12/05/21 03:21:00.90
>>693
日食までがんばりませんか?

697:678
12/05/21 03:32:42.36 BE:3259166786-2BP(0)
#include<stdio.h>


int main(void)
{
int rot,loop;

loop = 1;
scanf("%c\n",&rot);

while(loop <=100)
{
if('a'<=rot && rot<='m')
rot = rot+13;
else
if('n'<= rot && rot<='z')
rot = rot-13;

scanf("%c\n",&rot);
}

return 0;
}
ここまでいったんですが、+13とか-13がされません。。。

698:678
12/05/21 03:52:08.79 BE:4277656297-2BP(0)
一応友達のアドバイスもあって、
プログラムが出来ました。
ありがとうございました。
#include<stdio.h>


int main(void)
{
int rot,loop;

loop = 1;


while(loop <=100)
{
scanf("%c",&rot);
if('a'<=rot && rot<='m')
rot = rot+13;
printf("%c",rot+13);



if('n'<= rot && rot<='z')
rot = rot-13;
printf("%c",rot-13);
}

return 0;
}

699: ◆QZaw55cn4c
12/05/21 03:57:26.90
>>697
手が加わったのはいい感じです。
rot13 の処理に問題はありますが、とりあえず >>697 に沿って動くように訂正すると
URLリンク(codepad.org)

scanf("%c\n", &rot)
の rot は
char rot;
でないとうまくうごきません。
int rot;
だと'c' を入力したつもりでも、実は場合によっては rot が 'c' にならないことがあるのです。

700: ◆QZaw55cn4c
12/05/21 03:59:53.20
>>698
ありま?
でも、それ、うごいているようにみえるのは偶然ですよ、たぶん。
int rot;
じゃなくて
char rot;
じゃないと‥‥‥

701:678
12/05/21 04:06:51.43 BE:1357986454-2BP(0)
>>700
そうなんす。
変な文字まで現れて・・・
charでやってみます。

702:デフォルトの名無しさん
12/05/21 04:15:12.14
>>701
>変な文字まで現れて・・・
X printf("%c",rot+13);
O printf("%c",rot);

X scanf("%c",&rot);
O scanf(" %c",&rot);


703:678
12/05/21 04:32:59.41 BE:1222188629-2BP(0)
>>702
変な文字は出なくなりました。
あとは+と‐がされなくて
'a'を入力すると'aT'と表示されたり・・・

704:デフォルトの名無しさん
12/05/21 04:54:51.59
>>703
今のソースをそのままideoneに貼れ。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch