#の配置がおかしい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ダイキ

#の配置がおかしい

#1

投稿記事 by ダイキ » 7年前

たてHよこWの周りが#中が.の長方形を描くプログラムで#の配置がおかしいです
どこがちがうのか教えて下さい

コード:

#include <iostream>
#include <algorithm>
#include <iomanip>
#include <string>
#include <cmath>
using namespace std;
int main(){
	int H;
	int W;
	int j;
	int i;
	for(H=1,W=1;;){
		cin>>H>>W;
		if(H==0&&W==0)break;
		for(i=0; i<H; i++){
			for(j=0; j<W; j++){
			if(i==0||j==0||i==W||j==H||i==H||j==W)cout<<"#";
			else cout<<".";
			}
			cout<<endl;
		}
		cout<<endl;
	}
	return 0;
}

box
記事: 2002
登録日時: 13年前

Re: #の配置がおかしい

#2

投稿記事 by box » 7年前

こんな感じ?if文の条件によけいなものが入っているのと、1つ値がずれているところを直しました。

コード:

#include <iostream>

using namespace std;

int main(void)
{
    int H, W, i, j;

    while (1) {
        cin >> H >> W;
        if (H == 0 && W == 0) break;
        for (i = 0; i < H; i++) {
            for (j = 0; j < W; j++) {
                if (i == 0 || j == 0 || i == H - 1 || j == W - 1) cout << "#";
                else cout << ".";
            }
            cout << endl;
        }
        cout << endl;
    }
    return 0;
}
最後に編集したユーザー box on 2016年7月14日(木) 19:50 [ 編集 1 回目 ]
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

ダイキ

Re:Re: #の配置がおかしい

#3

投稿記事 by ダイキ » 7年前

できました。ありがとうございます
よろしければif文のな中の意味をおしえていただけますか?

box
記事: 2002
登録日時: 13年前

Re: Re:Re: #の配置がおかしい

#4

投稿記事 by box » 7年前

ダイキ さんが書きました:よろしければif文のな中の意味をおしえていただけますか?
その質問が出るということは、元のコードでは意味がわからずにif文を書いていたということですか?
それはまずいですね。さておき、

コード:

        if (H == 0 && W == 0) break;
高さHと幅Wが両方とも0だったら、無限ループを抜けます。

コード:

                if (i == 0 || j == 0 || i == H - 1 || j == W - 1) cout << "#";
変数iは「何行目か」つまり高さをコントロールする変数で、
変数jは「何列目か」つまり幅をコントロールする変数です。
i == 0
は、いちばん上の行のことです。
j == 0
は、いちばん左の列のことです。
i == H - 1
は、いちばん下の行のことです。
j == W - 1
は、いちばん右の列のことです。

つまり、この4つの条件のいずれかが成り立つことで、長方形の周囲を表わします。

元のコードにおける問題点は、1つズレていたことを除くと、
高さをコントロールするはずの i と幅Wとを比較していること
幅をコントロールするはずの j と高さHとを比較していること
です。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

ダイキ

Re:Re:Re:Re: #の配置がおかしい

#5

投稿記事 by ダイキ » 7年前

ありがとうございます

閉鎖

“C言語何でも質問掲示板” へ戻る