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

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

ただいまの
回答率

90.35%

  • C

    3956questions

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

斜めになっている"*"をhoue[20][30]のところだけ"y"に変えたいです。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 334
退会済みユーザー

退会済みユーザー

斜めになっている"*"をhoue[20][30]のところだけ"y"に変えたいです。
下のコードの結果は失敗で"y"が一列に複数で重複してしまっています。
お願いします。

include <stdio.h>

include <stdlib.h>

include <string.h>

include <math.h>

void routari(int,int);

char  houe[30][80];

int main() {

int i;
int zw;
int vw;

zw=5;
vw=i;

memset(&houe[0][0],' ',30*80);
houe[20][50]='*';
fflush(stdout);

for(i=0;i<30;i++)
{
routari(zw,vw);
houe[20][50]='*';
fflush(stdout);
printf("%80s\n",&houe[20][0]);
printf("%80s\n",&houe[20][10]);
printf("%80s\n",&houe[20][20]);
printf("%80s\n",&houe[20][30]);
printf("%80s\n",&houe[20][40]);
printf("%80s\n",&houe[20][50]);
}

return 0;
}

void routari(int zw,int vw)
{

int g;

houe[20][30]='y';

if(zw=vw)    
{
int g;
for(g=0;g<5;g++)
{
memset(&houe[0][0],' ',30*80);
printf("%80s\n",&houe[20][30]);
fflush(stdout);

}
}

}

追記
返信ありがとうございます
確かにわからないですね。

イメージ説明
の"*"の二つ目を"y"に変えたいんです。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • yohhoy

    2017/01/12 15:30

    どうぞ https://teratail.com/help/question-tips

    キャンセル

  • 退会済みユーザー

    2017/01/12 15:33

    こちらの質問が他のユーザから「問題・課題が含まれていない質問」という指摘を受けました
    teratailでは、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。
    「編集」ボタンから編集を行い、質問の意図や解決したい課題を明確に記述していただくと回答が得られやすくなります。

  • toutou

    2017/01/12 19:52

    消した質問があると思います。それは残しておき追記で今回のをいれてください。編集で戻せます。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2017/01/12 20:42

    了解しました!  すみません、追記のほうは方法が雑になってしまったかもしれません。

    キャンセル

回答 2

checkベストアンサー

0

こんにちは。

ごめん、ちょっと厳しいことを書きます。正直、何を言っているのか伝わってこないです。
「斜めになっている"*"」と言う記述は考えられる可能性が多すぎて何を意味するのか特定できません。
また、プログラムも意図が読み取れないくらい破綻してます。

プログラマの重要な資質の1つはコミュニケーション力です。仕様を理解するためには、相手の言っていることを理解し、かつ、曖昧な部分を明確にするため質問できるスキルが必要です。まずはここから始めませんか?
目標が分からないとアドバイスもできませんので、ここを避けることはできません。

恐らく画面に`*'と'y'をなんらかの位置に表示したいのだろうと思います。その表示したい結果の画面を描いて見てはどうでしょうか? 「斜めになっている"*"」とは例えば下記のようなイメージでしょうか? 1行下がると1文字右に'*'を描くで合ってますか? それとも1行下がると2文字右でしょうか? そうではなくて逆向きで1行下がると1文字左とか?

*
 *
  *
   *
    *
     *
      *
       *
        *
         *
          *
           *
            *
             *
(後略)

ちなみに、teratailでは<code>ボタンを押して表示される'''と'''の間に書けば行頭のスペースも表示されるようになります。


【追記】 追加頂いた内容を少し補った上で、条件を満たす極簡単なプログラムを示します。

#include<stdio.h> 

int main() 
{
    printf("%26s\n", "*");
    printf("%21s\n", "y");
    printf("%16s\n", "*");
    printf("%11s\n", "*");
    printf("%6s\n", "*");
    printf("%1s\n", "*");

    return 0;
}

恐らくroueさんが求めるものではないと予想されます。次は制約条件を書いてみましょう。
制約条件が特にない場合はできるだけ簡単なプログラムというのは選択肢の一つなのです。これくらい小さい場合は、べた書きが一番簡単です。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/01/12 15:20

    返信ありがとうございます。
    確かに目標わからないですね。

    上に画像をあげたのでみてもらえたらありがたいです。

    キャンセル

  • 2017/01/12 15:35

    了解。
    まだ1行下がったとき、何文字左へ移動するのか不明ですね。
    次に何か他にも条件があると思います。それらも記載しないと解にならない気がします。

    取り敢えず、1行下がった時5文字左へ移動し、上から2行目を'y'にするプログラムを回答欄に追記します。これはroueさんが求めるものではないと思いますが、制約条件の記載がないので解にはなります。

    キャンセル

  • 2017/01/12 18:55

    コード、ありがとうございます。
    まったく考えていなかった記述方法でした。
    少し解せないところもありますが、わからないことだらけなので
    とても参考になりました。
    また教示してもらえるときはおねがいします。

    キャンセル

  • 2017/01/12 19:06

    あれ。特に条件はなかったのですね! なるほど。
    解せないところは"%26s"の部分と思います。これは26文字の幅で右詰めで文字列を表示するという書式です。そこに1文字の"*"を表示しているため、25文字の空白と"*"が表示されます。
    ↓等、たくさんのサイトに解説がありますので参考にされて下さい。
    http://www.k-cube.co.jp/wakaba/server/format.html

    > また教示してもらえるときはおねがいします。

    了解です。頑張って下さい。

    キャンセル

0

斜めになっている"*"って何ですか?全然理解できない…。
それは置いといて、ざっとコードを見たので問題点を書いておきます。

変数vwiを入れているが、iを初期化していないので不定値が入る。
またループ内でvwを使っているが、更新していないので不定値のまま。
printfで80バイトだけ出力したいのであれば、"%.80s\n" とする。
但し、要素数が[30][80]に対して、&houe[20][10]などとしているので、明らかに領域外にアクセスされる。
routari関数内のif文が==ではなく=になっている。
またif文ないのでループの意味も良くわからない。
またfflushをやたらと行っているが意図がわからない。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/01/12 14:52

    返信ありがとうございます。
    初心者なもので…

    返答文にならって自分ができそうな範囲で変更してみたのですが、うまくいきませんでした。



    追加するものは
    i=0;

    変更するものは
    "%.80s\n"
    ”zw==vw”
    でOKですか?

    houe[20][10]はどうやったらアクセスできるのですか?


    fflushは理解しいていない状態で使っています。

    キャンセル

  • 2017/01/12 14:57 編集

    回答に書いたものは、明らかにプログラムとしておかしい点を挙げただけですので、その点を修正しても質問者様がやりたいことが実現できるわけではありません。
    他の回答者も言っていますが、まず目的を明確にしてください。
    斜めになっている"*"って何ですか?
    何をどうしたいのですか?
    それがわからないと修正方法を指摘することができません。

    >houe[20][10]
    これは単に、
    参照
    if(houe[20][10]=='*')
    代入
    houe[20][10] = 'y';
    で良いです。

    キャンセル

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

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

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

  • C

    3956questions

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