C/C++の宿題なら俺にやらせろ!

このエントリーをはてなブックマークに追加
69両津勘吉
#include <stdio.h>
#include <string.h>
#define TINTERVAL 4500000
int main()
{
int i,j, k;
char *a = "This is a test";
  char *b;
  printf("%s\n", a);
for (k=0; k < 5; k++) {
/* forward */
b =a; /* point to first character */
for (i=0; i <=strlen(a); i++){
if (i > 0) {
/* 必要なだけスペース出力 */
for (j = 0; j < i; j++)
printf(" ");
}
70両津勘吉@つづきです:02/11/08 16:16
}
if (i < strlen(a)) {
printf("%c\r", *b);
}
else {
printf("\r");
}
fflush(stdout);
b++;
/* sleep(1); 少しポーズする */
for (j=0; j < TINTERNAL; j++) {
}
}
      printf("\n");
return 0;
}

大ピンチになっています。上のプログラムを改良して両津勘吉という名前を
一文字づつ表示するプログラムはなんとかできました。
でもそこは提出しなくていいらしくて、今度はそれを改良して、両津勘吉という文字を、
一文字づつ左に表示して、左端についたら次に右に一文字づつ
表示するプログラムを作りたいのです。

どなたか暇な方がいたらよろしくお願いします。
71両津勘吉:02/11/08 16:18
出力例

1     吉
2    勘
3   津
4  両
5   津 
6    勘
7     吉

どなたか助けてくださいお願いします

72両津勘吉:02/11/08 16:19
1        吉
2      勘
3    津
4  両
5    津 
6      勘
7        吉
左端って右端から何文字目って決まっているの?
というか、そもそも、「上のプログラム」が正しく動かないんだが。
Win32Consoleだからなのか?
#include <stdio.h>
#include <string.h>
#include <wchar.h>
#include <locale.h>
#include <windows.h>
int wmain()
{
int k;
wchar_t *a = L"両津勘吉";
int len = wcslen( a );
setlocale(LC_ALL, "jpn");
wprintf(L"%s\n", a);
for (k=-len+1; k < len+1; k++) {
 wchar_t *b = &a[ abs(k)];
 if( k )
   wprintf(L"%*c", abs(k)*2 , L' ');
 wprintf(L"%c%*c\r", *b, (len-abs(k))*2, L' ');
 Sleep(1000);
}
wprintf(L"\n");
return 0;
}

つーか、これでいいのか?