質問するログイン新規登録
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

795閲覧

代入がうまくいきません(訂正)

Teemro_431265

総合スコア29

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

1クリップ

投稿2018/07/13 07:50

編集2018/07/13 08:58

0

1

最終的には5×5の行列を1を入力すると縦に反転、0を入力すると横に反転するプログラムを作りたいです。自分としてはfor文使ってやればいいのかなと思っています。コンパイルは通ったのですが出力が意図したものと全く違います。最後の「不適切な数値が入力されました」は正しく動きます。

エラー内容
反転する方向を指定してください(縦:0、横:1)1
0
0
0
1
0

c

1#include<stdio.h> 2#define r 5 3#define c 5 4int main(){ 5int mat[r][c],mat2[r][c],mat3[r][c]; 6int i,j,assig; 7//要素 8int mat1[r][c]={{1,1,1,1,1},{0,1,1,1,1},{0,0,1,1,1},{0,0,0,1,1},{0,0,0,0,1}}; 9 10//行 11for(i=0;i<r;i++){ 12 for(j=0;j<c;j++){ 13 mat[i][j]=mat1[i][j]; 14 } 15 //printf("%d",mat[i][j]); 16} 17printf("反転する方向を指定してください(縦:0、横:1)"); 18scanf("%d",&assig); 19if(assig==0){ 20 //縦に反転 21for(i=4;i>=0;i--){ 22 for(j=4;j>=0;j--){ 23 mat2[i][j]=mat[i][j]; 24 } 25 printf("%d\n",mat2[i][j]); 26 27} 28} 29else if(assig==1){ 30 //横に反転 31for(j=4;j>=0;j--){ 32 for(i=4;i>=0;i--){ 33 mat3[i][j]=mat[i][j]; 34 } 35 printf("%d\n",mat3[i][j]); 36} 37} 38else{ 39 printf("不適切な数値が入力されました\n"); 40} 41 42return 0; 43}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sh_akira

2018/07/13 07:57

エラーメッセージを読みましたか?読めなければGoogle翻訳でも使ってください。宣言していないmat2とmat3を使ってると言われています。 int mat[][]とint mat1[][] はあるけど、mat2、mat3は無いですよね
Teemro_431265

2018/07/13 08:42

すみません!!!超初歩的なミスでした!!!!
guest

回答2

0

ベストアンサー

変更前:

//横に反転 for(j=4;j>=0;j--){ for(i=4;i>=0;i--){ mat3[i][j]=mat[i][j]; //同じ座標に同じものを入れているので何も変わらない } printf("%d\n",mat3[i][j]); //1行終わった後1列だけ出力している }

変更後:

//横に反転 for(j=4;j>=0;j--){ for(i=4;i>=0;i--){ mat3[i][j]=mat[4 - i][j]; //反転 printf("%d",mat3[i][j]); //1列ずつ出力 } printf("\n"); //1行終わったら改行する }

左右反転なら0,0地点に5,0地点を入れる必要があるので、4-iです。
縦に反転も同じ考えです。

投稿2018/07/13 09:16

sh_akira

総合スコア380

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Teemro_431265

2018/07/13 13:49

なるほど!よくわかりました!ありがとうございます!!
guest

0

肝心のmat2の宣言がどこにも無いように見えるのですが。

質問編集を受けて

問題設定を一度全て忘れて、まずmatを次のように出力するコードを書いてみましょう。

plain

11 1 1 1 1 20 1 1 1 1 30 0 1 1 1 40 0 0 1 1 50 0 0 0 1

反転について考えるのはこの後で充分です。

投稿2018/07/13 07:56

編集2018/07/13 09:07
LouiS0616

総合スコア35678

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Teemro_431265

2018/07/13 08:43

すみません!!!自分の中ではすでに書いたものだと思っていました!
LouiS0616

2018/07/13 08:49

うっかりミスは誰もがやりますのでお気になさらず。 しかし、グーグル翻訳でも構いませんのでエラーをしっかり読み解く癖を付けないとですね。
Teemro_431265

2018/07/13 08:59

ありがとうございます。
Teemro_431265

2018/07/13 13:51

すみません、それは1度できたのでsh_akiraさんのものからやらせていただきました。 1からわかるようにしてくださって本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問