奇数のみを出力するプログラム

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

奇数のみを出力するプログラム

#1

投稿記事 by タマ » 15年前

#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個の数字を入力し、奇数のみを出力するプログラムを作る問題です。
●の部分は元々???しか書かれてなく、そこだけを変更するように指示されていたので
自分なりに埋めてみました。が、うまくいきませんでした…

パコネコ

Re:奇数のみを出力するプログラム

#2

投稿記事 by パコネコ » 15年前

if()って=じゃなくて==だって思っていたのですが…関係ないですか?

パコネコ

Re:奇数のみを出力するプログラム

#3

投稿記事 by パコネコ » 15年前

描写されるのはp2(data2)ですよね
つまり奇数のデータをP2に入れていくプログラムですね
data1=data2[cnt];
逆なのでは?
これでは2のデータを1に入れているように思いました
間違ってたらごめんなさい

fatens

Re:奇数のみを出力するプログラム

#4

投稿記事 by fatens » 15年前

=だと代入になるので、この場合は==ですね。

●の部分ですが、何のために
>p1 = data1;
>p2 = data2;
としているのか考えてみると良いのでは。

パコネコ

Re:奇数のみを出力するプログラム

#5

投稿記事 by パコネコ » 15年前

忘れてました
for (i=0; i<NMAX; i++) {
● if (data1%2=1) {
● data1=data2[cnt];
● ???????????;
cnt++;
}
p1++;
}
はdata1ではなくp1を使ってあらわしたほうがいいです
多分そういう問題だと思う
iとポインタをうまく使って頑張ってください

パコネコ

Re:奇数のみを出力するプログラム

#6

投稿記事 by パコネコ » 15年前

ヒントで
for (i=0; i<NMAX; i++)
scanf("%d", data1+i);
          ___
dataをp1にするかんじ
この部分が参考になると思います
余計な事だったらごめんなさい

==================
間違えてしまいました
すいません。忘れてください 画像

fatens

Re:奇数のみを出力するプログラム

#7

投稿記事 by fatens » 15年前

>パコネコさん
p1++;
がありますよ。

パコネコ

Re:奇数のみを出力するプログラム

#8

投稿記事 by パコネコ » 15年前

ヒントのつもりで書いたほうですよね
ちょっと失敗
iは使わないのが「あたり」でしたね。
すいません

タマ

Re:奇数のみを出力するプログラム

#9

投稿記事 by タマ » 15年前

●の部分
if (*(p1+i)%2==1) {
*(p2+cnt)=*(p1+i);
こんな感じで良いでしょうか?

fatens

Re:奇数のみを出力するプログラム

#10

投稿記事 by fatens » 15年前

>こんな感じで良いでしょうか?
●の部分にはiもcntも入りません。
画像

パコネコ

Re:奇数のみを出力するプログラム

#11

投稿記事 by パコネコ » 15年前

ワイはあれでいいと思ってたけど…プリンタを使うなら
もう一つの???を使うんですね。
================
iはどっちにしても違いましたね 画像

fatens

Re:奇数のみを出力するプログラム

#12

投稿記事 by fatens » 15年前

for (i=0; i<NMAX; i++) {
● if (data1%2=1) {
● data1=data2[cnt];
● ???????????;
cnt++;
}
p1++;
}

p2 = data2;

この部分で、for文の中にp1++があり、外でp2 = data2としている理由を考えてみましょう。
iはただのカウンタで、cntは最後のループの上限として使うだけです。

パコネコ

Re:奇数のみを出力するプログラム

#13

投稿記事 by パコネコ » 15年前

for (i=0; i<NMAX; i++) {
● if (???????%2==1) {
● ??????=??????;
● ???????????;
cnt++;
}
p1++;
}

p2 = data2;

data1でもできる気はしますけど…p1,p2が含まれますね全部

タマ

Re:奇数のみを出力するプログラム

#14

投稿記事 by タマ » 15年前

今の状態↓
● if (*p1%2==1) {
● *p2=*p1;
● ???????????;
p1++はdata1内に入る数値を、順番に入れていく役割ですかね?
p2=data2は初期化しているのでしょうか?

パコネコ

Re:奇数のみを出力するプログラム

#15

投稿記事 by パコネコ » 15年前

data2のアドレスをp2に再入力?しているんですよ。多分
p2は値変わってますから
残りの??????で!
================
>p1++はdata1内に入る数値を、順番に入れていく役割ですかね?
そうですね次のアドレスに移動?しているんですね。 画像

タマ

Re:奇数のみを出力するプログラム

#16

投稿記事 by タマ » 15年前

if (*p1%2==1) {
*p2=*p1;
p2++;

チェックシステムに送信した所、うまくいけました。
教えてくださって、ありがとうございます!

閉鎖

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