アプリ版:「スタンプのみでお礼する」機能のリリースについて

このプログラムは、16個の文字列を含む配列kstrの中から一つ文字列を選択して、ある順番に基づいて出力しそれをタイピングすると消える
プログラムです。(要はタイピング練習プログラムです。)
表示される順番としては、もしも
「qwert」の文字列が選択されたとしたら…
qw,wq,qe,eq,qr,rq,qt,tq,we,ew,wr,rw,wt,tw,er,re,et,te,rt,tr
という規則正しい順番で、出力されていきその通りにタイピングをして
消していくプログラムを実現したいと思っています。

ところが、下記の通りに書いたところコンパイルしても無反応に
なってしまいました。なぜ、動作しないのでしょうか。
ご教授いただきたいです。

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
#include"getputch.h"

char *kstr[] ={
"12345","67890-^\\","!\"#$%","&'()=~|","qwert","yuiop@[","QWERT","YUIOP`{","asdfg","hjkl;:]",
"ASDFG","HJKL+*}","zxcvb","nm,./\\","ZXCVB","NM<>?_"};

int main(void)
{

int nagasa=sizeof(kstr)/sizeof(kstr[0]);
int len,i,x,k,j,m,l;
char shutu[4];
char gyakushutu[4];

srand(time(NULL));

x=rand()%nagasa;

len=strlen(kstr[x]);

for(i=0;i<len;i++)
{
for(j=i+1;j<len;j++)
{
for(k=0;k<4;k++)
{
if(k%2==0)
{
shutu[k]=kstr[x][i];
}
else
{
shutu[k]=kstr[x][j];
}
}
shutu[4]='\0';

for(l=0;l<4;l++)
{
if(l%2!=0)
{
gyakushutu[l]=kstr[x][i];
}
else
{
gyakushutu[l]=kstr[x][j];
}
}

gyakushutu[4]='\0';

for(m=0;m<4;m++)
{
printf("%s \r",&shutu[m]);
fflush(stdout);
while(getch()!=shutu[m]);
printf("%s \r",&gyakushutu[m]);
fflush(stdout);
while(getch()!=gyakushutu[m]);
}
}
}

return 0;
}

A 回答 (1件)

>「qwert」の文字列が選択されたとしたら…


>qw,wq,qe,eq,qr,rq,qt,tq,we,ew,wr,rw,wt,tw,er,re,et,te,rt,tr
>という規則正しい順番で、
この部分を私はよく理解していないのですが

とりあえず、
#include"getputch.h"
のところを
#include <conio.h>
にして
WindowsXP、VisualC++2008
で実行したら、それらしく?動作しました。
ということで、
getputch.hファイルの内容が知りたいです。
また、動作環境(OSやCのコンパイラ)は何を使用しているのでしょうか?

この回答への補足

>「qwert」の文字列が選択されたとしたら…
>qw,wq,qe,eq,qr,rq,qt,tq,we,ew,wr,rw,wt,tw,er,re,et,te,rt,tr
>という規則正しい順番で、
>この部分を私はよく理解していないのですが

返信遅くなり且つわかりにくい表現申し訳ありませんでした。
捕捉になりますが、qwならば「qwqw」、wqならば「wqwq」と
表示させるようになっています。

まず、qwqwと表示されます。そこで、プレイヤーはタイピングを
します。

qを入力すれば、wqwだけ残り次にwを入力すればqwだけ残り、同様に
qでwが残ります。そして、最後のwを入力することにより次の文字列
である「wqwq」が表示されて同様に消していくことになります。

>qw,wq,qe,eq,qr,rq,qt,tq,we,ew,wr,rw,wt,tw,er,re,et,te,rt,tr

それがこのサイクルで表示されていくというプログラムです。

「#include"getputch.h"」←これは、conioと同じ意味で大丈夫です。
現に私の環境で、「#include"getputch.h"」を「#include <conio.h>」に
変更して動作させてみても全く同じ結果(無反応)になりました。

動作環境はおそらく、「回答者様と同じWindows系」のVistaです。

>それらしく?動作しました。

本当ですね。WindowsXP、VisualC++2008を使って動作させてみると
期待していた動作とは少し違いましたが修正することで期待通りの
動作をしました。

私は今まで、「Borland C++ Compiler 5.5」を使っていましたが
何が原因で動作しなかったのでしょうかね。
この「Borland C++ Compiler 5.5」も「WindowsXP、VisualC++2008」
と同種のコンパイラーだと思ったもので…

補足日時:2009/12/17 09:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!