• ベストアンサー

配列の中身を逆にするために。。。

reverse関数を使おうとしました。 言語はC言語です。 reverse関数の意味に配列の並びを逆にします。 と書いてあったのでしようしたのですが。。。 コンパイルすると、「識別子が見つかりませんでした」 なります。 C言語では使えないのですか? ソフトはMicrosoft visual studioを使用してます。

質問者が選んだベストアンサー

  • ベストアンサー
  • kusa_cw
  • ベストアンサー率50% (4/8)
回答No.3

No.2さんも書かれていますが、C++であればreverse関数を使用できます。 STLという枠組みの中で、ともおっしゃられていますが、厳密には イテレータという枠組みの中でと言った方がいいかと思います。 配列のアドレスは広義にイテレータとして扱えますので、 #include <algorithm> int main( int, char** ) { char ary[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, }; std::reverse( &ary[0], &ary[10] ); } のようにして配列の要素を逆転させることは可能です。

evilspirit
質問者

お礼

char**という使い方もできるんですね。 stdについては最近しました。 これでまた一つ勉強にないりました。 CGHをやることになったので、真剣にC++について勉強してみます。 イテレータについてはまだよく分かってないのでその部分もやります。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

> reverse関数の意味に配列の並びを逆にします。 > と書いてあったのでしようしたのですが。。。 具体的に書いてあった内容をそのまま表示した方が、回答する側としてはわかりやすいのですが。 一番それらしいのが、STL の標準アルゴリズムにある、 reverse かと思いますが、それだと、「要素の並びを逆にする」かなと思います。 これだとすると、C++の、STLという枠組みの中でしか使えません。 STL 自体は、非常に便利なものなので勉強する価値は大いにありますが。

evilspirit
質問者

お礼

はい。 そのとおりでした。 C++がやはり必要だと思い調べたらSTLというのがありました。 C言語でreverseがあると思っていたのはC++のことでした。 勉強不足でした。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

reverse関数はC言語の標準関数にはありません。 自作する必要があるのではないでしょうか。

evilspirit
質問者

お礼

最近C++を勉強しました。 C言語にはないんですね。 配列を他に作ったソースを作りました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • (C#、C++) ではC言語は読めないので

    Microsoft Visual Studio(C#、C++) ではC言語は読めないと思います。 MinGwとMSYS今までやっていたのですが、突然作業ができなくなりました。アンインストールして再インストールしてもだめです。 Windows7Ultimate用のC言語のコンパイルソフトとシェルを探しています。  以上宜しくお願いします。    

  • C言語で巨大配列を作るにはどうすれば良いのでしょうか?

    C言語で巨大配列を作るにはどうすれば良いのでしょうか? テストで作ってみた配列を用いたプログラムが動かなかったので(コンパイルは正常)、なんでだろうと思って調べてみると、巨大な配列はcalloc関数等を用いて作る必要があると知りました。 しかし正直解説サイトを見てもよく意味が分かりませんでした…。 例えばA[1000][1000][1000]の様な配列は、どの様に作ればいいのでしょうか? A[x][y][z]みたいに表現して、Aを変えて同じ様な配列を8個ほど作りたいです。 初心者なので勉強不足かも知れませんが、どうぞ宜しくお願い致します。

  • 配列の要素数を超えた参照のコンパイル

    C言語においては”配列の要素数を超えての参照もコンパイルエラーにはならない”という事がいえます。 例えば int a[10]={1}; とした時、a[-1] a[11]を参照しても、コンパイルエラーにはなりません。不定値が表示されるか、Red Hat Linuxに関しては”セグメンテーション違反です”とでるだけです。 しかし、わたしはCしか学んではいませんので解りませんが、配列の要素数を超えての参照はコンパイルエラーになる言語もあるのではないかと思います。 C言語はよく”暴走する言語”と言われます。規制をできる限り排除して軽くし、ミスはプログラマが取るという意味に考えています。 ”C言語においては配列の要素数を超えての参照もコンパイルエラーにはならないという事”はC言語のその様な設計思想に基ずいた仕様なのでしょうか。 それとも、違う考えに基ずいて、”配列の要素数を超えての参照もコンパイルエラーにはならない”という事に成っているのでしょうか。 宜しく願います。

  • mecabというアプリケーションをvisual studio 2010

    mecabというアプリケーションをvisual studio 2010を用いてC言語で実行したいのですが、どのようにすればいいのか分からず困ってます。 mecabの中にあるヘッダファイルは C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include に入れたらincludeしてくれたのですが、実行してみると 未解決の外部シンボル __imp__mecab_destroy が関数 _main で参照されました。 となってしまいうまくコンパイルできません。 ヘッダファイルのほかにどのファイルをどこに入れたらいいのか もしわかる方がいれば教えていただけますか?

  • 配列型の数字データをint型に変える方法

    こんばんは。 C言語を勉強しているのですが、わからない事が有り投稿しました。 atoi関数と同じような関数を作ろうとして、配列の中の 数字を取り出し、関数内の別配列に収めたのですが、これをint型としてmainに戻す場合どのようにして型変換をしたらよいのかわかりません。 (取り出した数字の並びはそのままで) 何か方法をご存知の方がいましたら、回答をお願いします。

  • メモリ確保方法を教えてください。

    Visual Studio.NET でC言語でプログラムを組んでいるのですが、二次元配列をたくさん使用したプログラムで、コンパイルして実行しようとするとエラーが表示されてしまいます。配列の要素を少なくすると実行はされるのですが、要素数が多くなるとエラーが表示されます。 実行時にユーザの使用メモリ数が制限されているなら、その使用メモリを増やす方法があれば教えていただけませんか?よろしくお願いします。

  • LiEというプログラムを使いたいのですが、やり方がわかりません…

    LiEというプログラムを使いたいのですが、使い方、というか使うまでの過程で何をすればいいのか全くわかりません。 プログラム自体は以下のサイトで落とせるのですが、同サイトのマニュアルを読んでみたところ、どうやらプログラムはC言語で書かれていて、使うためにはコンパイルして.exeに書き換えないといけないらしいです。(あまりこのあたりの専門用語の意味をよく理解していません。よくわからないことを言っていたらすいません…) http://www-math.univ-poitiers.fr/~maavl/LiE/ 知り合いに聞いてみると、Visual Studioというソフトでコンパイルできると言っていたのでやってみたのですが、エラーが大量に出てきました。 知り合い曰く、Visual StudioはC++を読みとるソフトで、C言語は読みとれないのだとか。 そこでC言語を読みとれるソフトを探したのですが、どこにあるのか全くわかりません… 結局のところ、LiE.exeというプログラムを手に入れ、それを起動できる状態にしさえすれば、あとはマニュアルを読めばなんとかなると思うのですが、そこまでたどり着けません… どうすればプログラムを起動することができるのか教えていただけないでしょうか? プログラミングに関する知識はほぼ皆無なので、常識的なことから教えていただけると助かります。

  • c言語のコンパイラ

    c言語の勉強を始めようと思っています。 Visual Studio.NET 2002を持っているのですが、これでコンパイルできるのでしょうか? やり方がわかりません。 よろしくお願いします。

  • 64ビット コマンドライン Cプログラミング

    私の環境は以下のとおりです CPU x6800 メモリ 8GB Vista 64 sp1 Visual studio 2005 やりたいことは、コマンドプロンプト[ > ] で 大きな配列 char dem[1000][1000][2000] を使うCプログラムを作成し使用すること。 質問したいことは、 コマンドラインの環境設定(PATH: bin lib include) コンパイラ リンカ の/オプション はどのように設定したらよいのでしょうか。 現状は work.c のコンパイル+リンク で work.exe はエラーなく成功するのですが 実行すると、{ work.exeは有効な win32 アプリケーションではありません。} というエラーが出て実行できません。 配列の要素を2000->1000にすればもちろんエラーは出ません。 なおこのときのコマンドプロンプトは  Visual Studio 2005 x64 Win64 コマンド プロンプト PATH は次のようになっています。 PATH=C:\Program Files (x86)\Microsoft Visual Studio 8\VC\BIN\amd64;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\bin\win64\amd64;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\bin;  C:\Windows\Microsoft.NET\Framework64\v2.0.50727;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\VCPackages;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\bin;  C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\bin;  C:\Windows\system32;C:\Windows;  C:\Windows\System32\Wbem;  C:\Windows\System32\WindowsPowerShell\v1.0\ 先達のご教示をお願いいたします。

  • visual studio 2005でC言語は学べるのか?

    こんばんは。 プログラミングを学ぼうと考えている素人です。 visual studio 2005 academic editionというソフトでC言語を学ぼうと思ったのですが、中に入っているソフトがCではなく、C#でした。 調べてみると、CとC#は違う様で(具体的に何が違うは分かりませんでしたが)、 C言語が学べるのか不安になって質問しました。 visual studio 2005でもC言語を使用することは可能なのでしょうか? 陳腐な質問ですが、何卒よろしくお願いいたします。