奇数のみを出力するプログラム
奇数のみを出力するプログラム
#include <stdio.h>
#define NMAX 10
int main(void) {
int data1[NMAX];
int data2[NMAX], i, cnt = 0;
int *p1, *p2;
p1 = data1;
p2 = data2;
for (i=0; i<NMAX; i++)
scanf("%d", data1+i);
for (i=0; i<NMAX; i++) {
● if (data1%2=1) {
● data1=data2[cnt];
● ???????????;
cnt++;
}
p1++;
}
p2 = data2;
for (i=0; i<cnt; i++) {
printf("%d\n", *p2);
p2++;
}
return 0;
}
10個の数字を入力し、奇数のみを出力するプログラムを作る問題です。
●の部分は元々???しか書かれてなく、そこだけを変更するように指示されていたので
自分なりに埋めてみました。が、うまくいきませんでした…
#define NMAX 10
int main(void) {
int data1[NMAX];
int data2[NMAX], i, cnt = 0;
int *p1, *p2;
p1 = data1;
p2 = data2;
for (i=0; i<NMAX; i++)
scanf("%d", data1+i);
for (i=0; i<NMAX; i++) {
● if (data1%2=1) {
● data1=data2[cnt];
● ???????????;
cnt++;
}
p1++;
}
p2 = data2;
for (i=0; i<cnt; i++) {
printf("%d\n", *p2);
p2++;
}
return 0;
}
10個の数字を入力し、奇数のみを出力するプログラムを作る問題です。
●の部分は元々???しか書かれてなく、そこだけを変更するように指示されていたので
自分なりに埋めてみました。が、うまくいきませんでした…
Re:奇数のみを出力するプログラム
描写されるのはp2(data2)ですよね
つまり奇数のデータをP2に入れていくプログラムですね
data1=data2[cnt];
逆なのでは?
これでは2のデータを1に入れているように思いました
間違ってたらごめんなさい
つまり奇数のデータをP2に入れていくプログラムですね
data1=data2[cnt];
逆なのでは?
これでは2のデータを1に入れているように思いました
間違ってたらごめんなさい
Re:奇数のみを出力するプログラム
=だと代入になるので、この場合は==ですね。
●の部分ですが、何のために
>p1 = data1;
>p2 = data2;
としているのか考えてみると良いのでは。
●の部分ですが、何のために
>p1 = data1;
>p2 = data2;
としているのか考えてみると良いのでは。
Re:奇数のみを出力するプログラム
忘れてました
for (i=0; i<NMAX; i++) {
● if (data1%2=1) {
● data1=data2[cnt];
● ???????????;
cnt++;
}
p1++;
}
はdata1ではなくp1を使ってあらわしたほうがいいです
多分そういう問題だと思う
iとポインタをうまく使って頑張ってください
for (i=0; i<NMAX; i++) {
● if (data1%2=1) {
● data1=data2[cnt];
● ???????????;
cnt++;
}
p1++;
}
はdata1ではなくp1を使ってあらわしたほうがいいです
多分そういう問題だと思う
iとポインタをうまく使って頑張ってください
Re:奇数のみを出力するプログラム
ヒントで
for (i=0; i<NMAX; i++)
scanf("%d", data1+i);
___
dataをp1にするかんじ
この部分が参考になると思います
余計な事だったらごめんなさい
==================
間違えてしまいました
すいません。忘れてください
for (i=0; i<NMAX; i++)
scanf("%d", data1+i);
___
dataをp1にするかんじ
この部分が参考になると思います
余計な事だったらごめんなさい
==================
間違えてしまいました
すいません。忘れてください

Re:奇数のみを出力するプログラム
ワイはあれでいいと思ってたけど…プリンタを使うなら
もう一つの???を使うんですね。
================
iはどっちにしても違いましたね
もう一つの???を使うんですね。
================
iはどっちにしても違いましたね

Re:奇数のみを出力するプログラム
for (i=0; i<NMAX; i++) {
● if (data1%2=1) {
● data1=data2[cnt];
● ???????????;
cnt++;
}
p1++;
}
p2 = data2;
この部分で、for文の中にp1++があり、外でp2 = data2としている理由を考えてみましょう。
iはただのカウンタで、cntは最後のループの上限として使うだけです。
● if (data1%2=1) {
● data1=data2[cnt];
● ???????????;
cnt++;
}
p1++;
}
p2 = data2;
この部分で、for文の中にp1++があり、外でp2 = data2としている理由を考えてみましょう。
iはただのカウンタで、cntは最後のループの上限として使うだけです。
Re:奇数のみを出力するプログラム
for (i=0; i<NMAX; i++) {
● if (???????%2==1) {
● ??????=??????;
● ???????????;
cnt++;
}
p1++;
}
p2 = data2;
data1でもできる気はしますけど…p1,p2が含まれますね全部
● if (???????%2==1) {
● ??????=??????;
● ???????????;
cnt++;
}
p1++;
}
p2 = data2;
data1でもできる気はしますけど…p1,p2が含まれますね全部
Re:奇数のみを出力するプログラム
今の状態↓
● if (*p1%2==1) {
● *p2=*p1;
● ???????????;
p1++はdata1内に入る数値を、順番に入れていく役割ですかね?
p2=data2は初期化しているのでしょうか?
● if (*p1%2==1) {
● *p2=*p1;
● ???????????;
p1++はdata1内に入る数値を、順番に入れていく役割ですかね?
p2=data2は初期化しているのでしょうか?
Re:奇数のみを出力するプログラム
data2のアドレスをp2に再入力?しているんですよ。多分
p2は値変わってますから
残りの??????で!
================
>p1++はdata1内に入る数値を、順番に入れていく役割ですかね?
そうですね次のアドレスに移動?しているんですね。
p2は値変わってますから
残りの??????で!
================
>p1++はdata1内に入る数値を、順番に入れていく役割ですかね?
そうですね次のアドレスに移動?しているんですね。

Re:奇数のみを出力するプログラム
if (*p1%2==1) {
*p2=*p1;
p2++;
チェックシステムに送信した所、うまくいけました。
教えてくださって、ありがとうございます!
*p2=*p1;
p2++;
チェックシステムに送信した所、うまくいけました。
教えてくださって、ありがとうございます!