課題が出たのですがよくわからないので回答していただける方お願いします。
# 次のようにキーボードから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:わかる方回答お願いします・・・
とりあえずこのように作ったのですが
#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;
}
このあとどうしていいかわかりません。
教えてください
#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:わかる方回答お願いします・・・
> このあとどうしていいかわかりません。
> 教えてください
まずfir[0]について考えて見ましょう。
もしsec[0]と等しければホームラン、
sec[1]かsec[2]かsec[3]と等しければヒットです。
次にfir[1]、fir[2]、fir[3]と順に判定すれば、
全体のホームランとヒットの数がわかります。
普通は2重のforループを使ったプログラムになると思いますが、
もしイメージしにくいならば、冗長になりますが1重のループで作るとか、
fir[0]についてだけ正しく判定できるプログラムを作るとか、
できることからやってみてください。
> 教えてください
まずfir[0]について考えて見ましょう。
もしsec[0]と等しければホームラン、
sec[1]かsec[2]かsec[3]と等しければヒットです。
次にfir[1]、fir[2]、fir[3]と順に判定すれば、
全体のホームランとヒットの数がわかります。
普通は2重のforループを使ったプログラムになると思いますが、
もしイメージしにくいならば、冗長になりますが1重のループで作るとか、
fir[0]についてだけ正しく判定できるプログラムを作るとか、
できることからやってみてください。
Re:わかる方回答お願いします・・・
作ってみました。ただ…、勢いだけで作ったので(動作確認はしてあるのですが…)下手くそなコードである事には間違いありません。
意味は自分で考えてください(無責任~
ある意味<pre>タグ要らなかったかな?…
#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:わかる方回答お願いします・・・
みなさんありがとうございました。一応、参考にしながら少し頑張ってみます!つまづいたらまた助けてください(すぐ来るかもです)よろしくお願いします(^O^)