ページ 11

お願いします!!

Posted: 2012年11月20日(火) 11:57
by mh
float 型配列のデータを {10.1, 20.2, 30.3, 40.4, 50.5} とし、ポインターを用いて、アドレスとデータを順に取り出すプログラムを教えたください。

Re: お願いします!!

Posted: 2012年11月20日(火) 12:03
by beatle
フォーラムルールはご覧になりましたか?
このフォーラムでは、課題の丸投げは禁止されています。
ということで、mhさんができるところまで頑張ってもらいたいと思います。

Re: お願いします!!

Posted: 2012年11月20日(火) 13:44
by 初級者
こんな感じ?

コード:

#include <stdio.h>

int main(void)
{
    float array[5] = { 10.1, 20.2, 30.3, 40.4, 50.5 };
    float *p;
    int i;

    for (p = &array[0], i = 0; i < 5; p++, i++) {
        printf("%p:%f\n", p, *p);
    }
    return 0;
}

Re: お願いします!!

Posted: 2012年11月20日(火) 15:26
by たかぎ
float型なら、サフィックスのfが必要ですね。
そのうえで...

コード:

#include <iostream>

int main()
{
  for (float const& x :  {10.1f, 20.2f, 30.3f, 40.4f, 50.5f})
    std::cout << &x << ' ' << x << std::endl;
}
こんな感じでしょうか。

Re: お願いします!!

Posted: 2012年11月20日(火) 18:14
by nil
>たかぎさん
c++11の機能フル活用ですね!!

コード:

import std.stdio;
void main(){
    float[] a = [ 10.1f,20.2f,30.3f,40.4f,50.5f ];
    foreach( float x; a )
        writeln( x );
}

Re: お願いします!!

Posted: 2012年11月21日(水) 10:25
by かずま
涼雅 さんが書きました:

コード:

import std.stdio;
void main(){
    float[] a = [ 10.1f,20.2f,30.3f,40.4f,50.5f ];
    foreach( float x; a )
        writeln( x );
}
D はよく知らないんですが、これでアドレスが表示されるのでしょうか?

C++ なら、

コード:

#include <iostream>
#include <algorithm>

void p(float& x) { std::cout << &x << " " << x << std::endl; }

int main() {
    float a[] = { 10.1, 20.2, 30.3, 40.4, 50.5 };
    std::for_each(a, a + 5, p);
}
p を関数オブジェクトにしたほうが、生成されるコードが短くなるかもしれません。