三角形アート part2
Posted: 2011年10月27日(木) 20:19
早くも行き詰まりましたwwww
三角形アートの関数化の所で困りました。
他サイトでピラミッドアートのプログラムがあったので、それをベースにプログラムを組んだのですが
四角形は問題ないのですが、
入力4
****
****
****
****
三角形が一行少ない、
入力4
*
**
***
逆三角はなぜか、三角形と一緒
入力4
*
**
***
三角旗は何が何やら。
入力4
*
(↑は実行画面です)
とにかく、なぜこういうことになるのか、解りません。
どこがおかしいのか、どうすればいいのか、
ご教授おねがいします。
ソースコードです
三角形アートの関数化の所で困りました。
他サイトでピラミッドアートのプログラムがあったので、それをベースにプログラムを組んだのですが
四角形は問題ないのですが、
入力4
****
****
****
****
三角形が一行少ない、
入力4
*
**
***
逆三角はなぜか、三角形と一緒
入力4
*
**
***
三角旗は何が何やら。
入力4
*
(↑は実行画面です)
とにかく、なぜこういうことになるのか、解りません。
どこがおかしいのか、どうすればいいのか、
ご教授おねがいします。
ソースコードです
#define SIZE 12
#include <stdio.h>
int m[SIZE][SIZE];
void clearMatrix(void) // 配列要素の0クリアー
{
int i, j;
for(i=0; i<SIZE; i++)
for(j=0; j<SIZE; j++)
m[i][j]=0;
}
void disp(int n) // * か を表示する
{
int i, j;
for(i=0; i<n; i++){
for(j=0; j<n; j++)
m[i][j] ? printf("* "):printf(" ");
printf("\n");
}
}
void square(int n) // 四角形
{
int i, j;
for(i=0; i<n; i++){
for(j=0; j<n; j++){
m[i][j]=1;
}
}
}
void sankaku(int n) //三角形
{
int i, j;
for(i=0; i<n+1; i++){
for(j=0; j<i; j++){
m[i][j]=1;
}
}
}
void gyakusankaku(int n) //逆三角形
{
int i, j;
for(i=n; i>0; i--){
for(j=0; j<i; j++){
m[i][j]=1;
}
}
}
void hata(int n) //三角旗
{
int i, j;
for(i=0; i<n; i++)
{
for(j=0; j<i; j++)
{
//printf("* ");
}
//printf("\n");
}
m[i][j]=1;
for(i=n; i>0; i--)
{
for(j=0; j<i; j++)
{
// printf("* ");
}
//printf("\n");
}
//printf("\n");
m[i][j]=1;
}
int main(void)
{
int n, type;
while(1){
do{
printf("やめたいときは数字以外の文字を入力してください\n");
printf("数字 (2~9)を入力してください:");
if(scanf("%d", &n) != 1)
return 0;
}while( ! (2 <= n && n <= 9));
clearMatrix();
switch(n){
case 2: printf("1: 四角形 、2:三角形、3:逆三角形、4:三角旗:");scanf("%d", &type);break;
case 3: printf("1: 四角形 、2:三角形、3:逆三角形、4:三角旗:");scanf("%d", &type);break;
case 4: printf("1: 四角形 、2:三角形、3:逆三角形、4:三角旗:");scanf("%d", &type);break;
case 5: printf("1: 四角形 、2:三角形、3:逆三角形、4:三角旗:");scanf("%d", &type);break;
case 6: printf("1: 四角形 、2:三角形、3:逆三角形、4:三角旗:");scanf("%d", &type);break;
case 7: printf("1: 四角形 、2:三角形、3:逆三角形、4:三角旗:");scanf("%d", &type);break;
case 8: printf("1: 四角形 、2:三角形、3:逆三角形、4:三角旗:");scanf("%d", &type);break;
case 9: printf("1: 四角形 、2:三角形、3:逆三角形、4:三角旗:");scanf("%d", &type);break;
}
switch(type){
case 1: square(n);
case 2: sankaku(n); break;
case 3: gyakusankaku(n); break;
case 4: hata(n); break;
}
disp(n);
}
}