C言語関係掲示板

過去ログ

No.1134 *で三角形を書く

[戻る] [ホームページ]
No.2220

右、左、中央寄せについて 
投稿者---toshi(2004/07/03 15:35:59)


--*
-**
***

(-はスペースです。)

--*
-***
*****

のように、自分で行の数を指定して、一行目は*一つ、二行目は*二つと階段を作りたいのですが、うまくいきません。これはスペースも一行ごとに変化させなければならないのでしょうか?それとも、printf()オプション指定でできるよでしょうか?自分でやった限り、n文字だけ左右に詰める部分のprintf("%n-",-)のnを変数にするとうまくいきません。以下のものが右に詰めようと自分でやってみたものなのですが、(上図の上のパターン)

#include <stdio.h>
int main(void)
{
   int   i, j, m, n;
   char   k = "*";
   printf("m= ,n= ");
   scanf("%d,%d",&m,&n);
   for(i=1 ; i <= m ; i=i+1)
   {
       for(j=1 ; j <= i ; j=j+1);
       { 
            printf("%nc", k);
       }  
       printf("\n");
   }
}

変数の型もあまりよく分からず使ってしまっていて、もう頭はパンク寸前。誰か右寄せと中央寄せのやり方を教えてくれませんか?


No.2222

Re:右、左、中央寄せについて 
投稿者---かずま(2004/07/03 17:05:38)


#include <stdio.h>
#include <string.h>

int main(void)
{
    char star[100];  int n, i;

    memset(star, '*', sizeof star);
    while (scanf("%d", &n) == 1 && n > 0 && n < 50) {
        for (i = 1; i <= n; i++)
            printf("%*.*s\n", n, i, star);
        for (i = 0; i < n; i++)
            printf("%*.*s\n", n+i, i*2+1, star);
    }
    return 0;
}