ページ 11

要素数を数えるプログラミングを教えてください。

Posted: 2012年11月04日(日) 15:55
by yamamoto
多分皆さんには簡単な問題だと思われますが、よろしくお願いします。
自分にはさっぱりわからないもので…。

整数配列の要素に負の値が現れるまで要素数を数えるプログラムを作れ。
下のプログラムのように添え字の操作を使用してはいけない。ポインタを使う方式に改めよ。すなわち、data>0という操作を使わないプログラムに変更せよ。
#include<stdio.h>
main()
{
int data[]={3,8,2,5,9,-4,6,1,0,7};
int i=0;
while(data>0){
i++;
}
printf(“Num of elements before negative value = %d\n”,i);
}

という問題なのですが、よろしくお願いしますorz

Re: 要素数を数えるプログラミングを教えてください。

Posted: 2012年11月04日(日) 16:14
by h2so5
問題文がおかしいと思います。
負の値が現れるまで、と書いてありますが条件式が data>0 だと 0 があったときも停止してしまいます。

Re: 要素数を数えるプログラミングを教えてください。

Posted: 2012年11月04日(日) 16:17
by yamamoto
すいません・・・。書き直します!!

整数配列の要素に負の値が現れるまで要素数を数えるプログラムを作れ。
下のプログラムのように添え字の操作を使用してはいけない。ポインタを使う方式に改めよ。すなわち、data>=0という操作を使わないプログラムに変更せよ。
#include<stdio.h>
main()
{
int data[]={3,8,2,5,9,-4,6,1,0,7};
int i=0;
while(data>=0){
i++;
}
printf(“Num of elements before negative value = %d\n”,i);
}

どうか、もう一度よろしくお願いしますorz

Re: 要素数を数えるプログラミングを教えてください。

Posted: 2012年11月04日(日) 16:37
by ホヅミ
ポインタ(今回は*pとする)を宣言し、ポインタに先頭アドレスを入れてあげてください
参照する場合はポインタを変数iでずらして参照して行ってください。
まずは、これで解決できるかやってみましょう。

Re: 要素数を数えるプログラミングを教えてください。

Posted: 2012年11月04日(日) 17:25
by ISLe
新たにポインタ変数を宣言しなくても、ポインタ(参照演算子)を使う方式にはできますが。
問題の不備ですね。

Re: 要素数を数えるプログラミングを教えてください。

Posted: 2012年11月04日(日) 19:04
by nil
コードタグを使ってくださいね。
さて、yamamotoさんのわからないのは問題のうちどこですか?
例として出されているプログラムは理解できていますか?

Re: 要素数を数えるプログラミングを教えてください。

Posted: 2012年11月04日(日) 19:12
by 初級者
data と書くのと *(data + i) と書くのとは等価なので…

コード:

#include <stdio.h>

int main(void)
{
    int data[] = { 3, 8, 2, 5, 9, -4, 6, 1, 0, 7 };
    int i = 0;

    while (*(data + i) >= 0) {
        i++;
    }
    printf("Num of elements before negative value = %d\n", i);
    return 0;
}