前提・実現したいこと
C言語で8X8のドット文字「A」を回転して返す関数を作成したいです。
回転方向と回転角度を入力してそれに沿った処理をするといった形です。
発生している問題・エラーメッセージ
コンパイルエラーは起きないのですが実行をかけるとデバッグエラーが起きたり
そもそも何も表示されません。何が問題なのか全く分からないので、
どうすれば正しく表示する方法を教えてほしいです。
該当のソースコード
C
1#include <stdio.h> 2 3/* 4 名称 rotation 5 引数 const char in_buf[8][9]:8X8ドット文字 6 char out_buf[8][9]:回転後の文字 7 int direc:回転方向(0:左へ,1:右へ) 8 int angle:回転角度(0:90度,1:180度,2:270度) 9 戻り値 無し 10*/ 11/*----- ここより下に解答を記述してください -----*/ 12void rotation(const char in_buf[8][9], char out_buf[8][9], int direc, int angle) 13{ 14 int i, j; 15 16 if(direc == 1){ 17 switch(angle){ 18 case 0 : for(i = 0; i < 8; i++){ 19 for(j = 0; j < 9; j++){ 20 out_buf[j][8 - i] = in_buf[i][j]; 21 } 22 } 23 break; 24 25 case 1 : for(i = 0; i < 8; i++){ 26 for(j = 0; j < 9; j++){ 27 out_buf[j][8 - i] = in_buf[i][j]; 28 out_buf[j][8 - i] = out_buf[i][j]; 29 } 30 } 31 break; 32 33 case 2 : for(i = 0; i < 8; i++){ 34 for(j = 0; j < 9; j++){ 35 out_buf[j][8 - i] = in_buf[i][j]; 36 out_buf[j][8 - i] = out_buf[i][j]; 37 out_buf[j][8 - i] = out_buf[i][j]; 38 } 39 } 40 break; 41 } 42 43 } else { 44 switch (angle) { 45 case 0 : for(i = 0; i < 8; i++){ 46 for(j = 0; j < 9; j++){ 47 out_buf[j][8 - i] = in_buf[i][j]; 48 out_buf[j][8 - i] = out_buf[i][j]; 49 out_buf[j][8 - i] = out_buf[i][j]; 50 } 51 } 52 break; 53 54 case 1 : for(i = 0; i < 8; i++){ 55 for(j = 0; j < 9; j++){ 56 out_buf[i][j] = out_buf[j][8 - i]; 57 out_buf[i][j] = out_buf[j][8 - i]; 58 } 59 } 60 break; 61 62 case 2 : for(i = 0; i < 8; i++){ 63 for(j = 0; j < 9; j++){ 64 out_buf[i][j] = out_buf[j][8 - i]; 65 } 66 } 67 break; 68 } 69 } 70 71 return; 72} 73/*----- ここより上に解答を記述してください -----*/ 74 75int main(void) 76{ 77 char in_buf[8][9] = { {" A "}, 78 {" A "}, 79 {" A A "}, 80 {" A A "}, 81 {" A A "}, 82 {" AAAAA "}, 83 {"A A "}, 84 {"A A "} }; 85 char out_buf[8][9] = { { 0 } }; 86 int i, direc, angle; 87 88 printf("回転方向(0:左へ,1:右へ)="); 89 scanf("%d", &direc); 90 91 printf("回転角度(0:90度,1:180度,2:270度)="); 92 scanf("%d", &angle); 93 94 /*----- ここより下に解答を記述してください -----*/ 95 rotation(in_buf, out_buf, direc, angle); 96 /*----- ここより上に解答を記述してください -----*/ 97 98 for(i = 0; i < 8; i++) 99 printf("%s\n", out_buf[i]); 100 101 return 0; 102}
試したこと
関数内での処理は一応書けました。90度(90度1回転),180度(90度2回転),270度(90度3回転)。
右回りでも左回りでも90度何回回転するかによって処理を分けています。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/07/05 04:01