標準入力に正の整数 n を入力すると,半角数字を使用して,
2n−1 段のひし形を標準出力に出力するプログラムを作成したのですが、
なぜか全体的に1桁余分な空白が出てしまいます。
どこが問題か教えていただけますでしょうか。
作成したプログラム
#include <stdio.h> //関数のプロトタイプ宣言 void writeUpper(); void writeLower(); int n, center; int num=1; int main(void){ scanf("%d", &n); n = 2*n-1; // 中央が何段目になるか計算する center = (n / 2); // 上半分の表示 writeUpper(); // 下半分の表示 writeLower(); return 0; } // 上半分の表示 void writeUpper(){ // 中央に達するまで表示 for(int i = 0 ; i <= center ; i++){ for(int j = i ; j <= center ; j++){ // 空白の表示 printf(" "); } // 中央の1個分表示 printf("%d",num); for(int j = 0 ; j < i*2 ; j++){ // 現在の段数*2(左右分)表示 printf("%d",num); } printf("\n"); num =(num+1)%10; } } // 上半分の表示 void writeLower() { // 中央から1つ短くするため-1しています for(int i = center - 1 ; i >=0 ; i--){ for(int j = center-i ; j >= 0 ; j--){ // 空白の表示 printf(" "); } // 中央の1個分表示 printf("%d",num); // 現在の段数*2(左右分)表示 for(int j = 0 ; j < i*2 ; j++){ printf("%d",num); } printf("\n"); num =(num+1)%10; } }
出力結果
1↵ 222↵ 33333↵ 4444444↵ 555555555↵ 6666666↵ 77777↵ 888↵ 9↵ ``` 本来はこのように出力したい。
1↵ 222↵ 33333↵ 4444444↵ 555555555↵ 6666666↵ 77777↵ 888↵ 9↵ ``` 分かりますでしょうか?出力結果の方は若干右寄りになってまして、 5の列は1文字スペースがあります。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。