質問をすることでしか得られない、回答やアドバイスがある。

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

ただいまの
回答率

90.33%

  • C

    3997questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 166

Teemro_431265

score 19

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

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

#include<stdio.h>
#define r 5
#define c 5
int main(){
int mat[r][c],mat2[r][c],mat3[r][c];
int i,j,assig;
//要素
int 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}};

//行
for(i=0;i<r;i++){
    for(j=0;j<c;j++){
        mat[i][j]=mat1[i][j];
    }
    //printf("%d",mat[i][j]);
}
printf("反転する方向を指定してください(縦:0、横:1)");
scanf("%d",&assig);
if(assig==0){
    //縦に反転
for(i=4;i>=0;i--){
    for(j=4;j>=0;j--){
        mat2[i][j]=mat[i][j];
    }
        printf("%d\n",mat2[i][j]);

}
}
else if(assig==1){
    //横に反転
for(j=4;j>=0;j--){
    for(i=4;i>=0;i--){
        mat3[i][j]=mat[i][j];
    }
        printf("%d\n",mat3[i][j]);    
}
}
else{
    printf("不適切な数値が入力されました\n");
}

return 0;
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • sh_akira

    2018/07/13 16:57

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

    キャンセル

  • Teemro_431265

    2018/07/13 17:42

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

    キャンセル

回答 2

checkベストアンサー

+1

変更前:

//横に反転
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 22:49

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

    キャンセル

+1

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

質問編集を受けて

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/13 17:43

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

    キャンセル

  • 2018/07/13 17:49

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

    キャンセル

  • 2018/07/13 17:59

    ありがとうございます。

    キャンセル

  • 2018/07/13 22:51

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

    キャンセル

同じタグがついた質問を見る

  • C

    3997questions

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