複数ある同じ条件のwhileをまとめる方法を教えてください

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

複数ある同じ条件のwhileをまとめる方法を教えてください

#1

投稿記事 by からし » 3年前

コード:

 
//***入力された文字列を文字列、1文字ずつ、10進数、16進数それぞれに変換して表示***// 
#include <stdio.h>
#define 10	//格納上限
int main(void)
{
	char moji[MAX] ;
	
	//文字入力
	printf("文字列を入力してください"=>);
	scanf( "%s", moji );
	
	//文字列
	printf("\n---文字列---\n");
	printf( "%s",moji );
	
	//1文字ずつ
	printf("\n---文字---\n");
	int i = 0;
	while( moji[i] != '\0' ){
		putchar( moji[i] );
		printf( ", " );
		i++;
	}
	
	//10進数
	printf("\n---10進数---\n");
	int i = 0;
	while( moji[i] != '\0' ){
		printf( "%d, ",moji[i] );
		i++;
	}

	//16進数
	printf("\n---10進数---\n");
	int i = 0;
	while( moji[i] != '\0' ){
		printf( "%x, ",moji[i] );
		i++;
	}
	
	printf("\n");
	return 0;
}
  


上記のようなコードを組んだのですが、同じ条件のwhile文を3回も使うのでまとめたいのですが、カウント変数iをどのタイミングで宣言し、初期化すればいいのか分からず、素直に1回1回宣言しています。
知識ある方のご意見をお願いします。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 複数ある同じ条件のwhileをまとめる方法を教えてください

#2

投稿記事 by みけCAT » 3年前

からし さんが書きました:
3年前
同じ条件のwhile文を3回も使うのでまとめたいのですが、
以下のように、ループを使ってまとめることができそうですね。

コード:


//***入力された文字列を文字列、1文字ずつ、10進数、16進数それぞれに変換して表示***// 
#include <stdio.h>
#define MAX 10	//格納上限
int main(void)
{
	const char* headers[] = {"文字", "10進数", "10進数"};
	const char* formats[] = {"%c", "%d", "%x"};

	char moji[MAX] ;
	
	//文字入力
	printf("文字列を入力してください=>");
	scanf( "%s", moji );
	
	//文字列
	printf("\n---文字列---\n");
	printf( "%s",moji );
	
	for (int j = 0; j < 3; j++) {
		printf("\n---%s---\n", headers[j]);
		int i = 0;
		while( moji[i] != '\0' ){
			printf(formats[j], moji[i] );
			printf( ", " );
			i++;
		}
	}
	
	printf("\n");
	return 0;
}
からし さんが書きました:
3年前
カウント変数iをどのタイミングで宣言し、初期化すればいいのか分からず、
使う最初の所または関数の先頭で宣言し、ループに入る前のタイミングで値を設定すればいいでしょう。
からし さんが書きました:
3年前
素直に1回1回宣言しています。
このように、同じ変数を同じスコープで複数回宣言するとエラーになるはずです。
また、このプログラムには他にもコンパイルエラーになる間違いがあります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

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