わかる方回答お願いします・・・

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

わかる方回答お願いします・・・

#1

投稿記事 by える » 17年前

課題が出たのですがよくわからないので回答していただける方お願いします。

# 次のようにキーボードから4桁の10進数の入力を2回受付ける.
Input the 1st value > 6479
Input the 2nd value > 1497

但し,4桁の各位の数は必ず互いに異なるものが入力されるとする.
# 入力された数値に対して,以下に定義する「ヒット数」と「ホームラン数」を求める.

* ホームラン数: 二つの数字を同じ位ごとに比較した時,何ヶ所の位について一致しているかを表す.
* ヒット数: 二つの数字を異なる位同士で比較した時,一致している組み合わせの数を表す.


1234と1234の場合,0ヒット4ホームラン
1234と4321の場合,4ヒット0ホームラン
6479と1497の場合,2ヒット1ホームラン


# ヒット数とホームラン数を次のように表示する.
2 hit(s) 1 home run(s)

バグ

Re:わかる方回答お願いします・・・

#2

投稿記事 by バグ » 17年前

この課題の何が分からないのでしょうか?
質問はもう少し具体的にしていただかなければ、答えようがないです(^_^;)

box

Re:わかる方回答お願いします・・・

#3

投稿記事 by box » 17年前

コンピュータ・プログラムによらずに
手でホームラン数とヒット数を求めるとしたら、
どういう手順を踏みますか?

える

Re:わかる方回答お願いします・・・

#4

投稿記事 by える » 17年前

とりあえずこのように作ったのですが
#include <stdio.h>
#define N 4

int main(void){
int first;
int second;
int fir[N];
int sec[N];
int hits;
int homeruns;
int i,j;
printf("Input the 1st value >");
scanf("%d", &first);
printf("Input the 2nd value >");
scanf("%d", &second);

for(i=0;i<N;i++){
fir=first%10;
sec=second%10;
first = first/10;
second = second/10;
}
このあとどうしていいかわかりません。
教えてください

たいちう

Re:わかる方回答お願いします・・・

#5

投稿記事 by たいちう » 17年前

> このあとどうしていいかわかりません。
> 教えてください

まずfir[0]について考えて見ましょう。
もしsec[0]と等しければホームラン、
sec[1]かsec[2]かsec[3]と等しければヒットです。

次にfir[1]、fir[2]、fir[3]と順に判定すれば、
全体のホームランとヒットの数がわかります。

普通は2重のforループを使ったプログラムになると思いますが、
もしイメージしにくいならば、冗長になりますが1重のループで作るとか、
fir[0]についてだけ正しく判定できるプログラムを作るとか、
できることからやってみてください。

Mist

Re:わかる方回答お願いします・・・

#6

投稿記事 by Mist » 17年前

http://www.play21.jp/board/formz.cgi?ac ... &rln=17819

問題の内容がこのトピとまったく同じですね。
同じ学校の人でしょうか?
参考までにどうぞ。

管理人

Re:わかる方回答お願いします・・・

#7

投稿記事 by 管理人 » 17年前

ソースコードを投稿される場合は、プレタグをご使用下さい。
詳しくは規約をご覧下さい。

tk-xleader

Re:わかる方回答お願いします・・・

#8

投稿記事 by tk-xleader » 17年前

作ってみました。ただ…、勢いだけで作ったので(動作確認はしてあるのですが…)下手くそなコードである事には間違いありません。
#include<stdio.h>

int main(void)
{
	int firstnum[4];
	int secondnum[4];
	int input1,input2;
	int hrcount,hitcount=0;
	
	/*入力を受け付ける。*/
	fputs("Input the 1st value >",stdout);
	scanf("%d",&input1);
	fputs("Input the 2nd value >",stdout);
	scanf("%d",&input2);
	
	/*それぞれの桁に分解する。*/
	{
		int i;
		for(i=0;i<4;i++){
			firstnum=input1%10;
			secondnum=input2%10;
			input1/=10;
			input2/=10;
		}
	}
	
	/*とりあえずホームランの数を勘定する。*/
	hrcount=(firstnum[0]==secondnum[0])+(firstnum[1]==secondnum[1])+
	        (firstnum[2]==secondnum[2])+(firstnum[3]==secondnum[3]);
	
	/*ホームランも含めたヒット数を勘定する。*/
	{
		int i;
		for(i=0;i<4;i++){
			int j;
			for(j=0;j<4;j++){
				hitcount+=(firstnum==secondnum[j]);
			}
		}
	}
	hitcount-=hrcount;
	
	/*結果を表示*/
	printf("%d hit%s %d home run%s\n",hitcount,((hitcount!=1)?"s":""),hrcount,((hrcount!=1)?"s":""));
	
	return 0;
}

意味は自分で考えてください(無責任~

ある意味<pre>タグ要らなかったかな?…

える

Re:わかる方回答お願いします・・・

#9

投稿記事 by える » 17年前

みなさんありがとうございました。一応、参考にしながら少し頑張ってみます!つまづいたらまた助けてください(すぐ来るかもです)よろしくお願いします(^O^)

閉鎖

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