• ベストアンサー

並べ替えについて教えて下さい

punchan_jpの回答

回答No.1

ここで並べ替えとは、どういう処理をさしているのでしょうか? ソーティング(整列)ですか?そうだと仮定して… 「方法が違うとのこと」とされていますが、整列そのものの原理は、 対象が何であれ変わるわけではありません。数値と文字列(文字で はなくて文字列ですよね?)で違うのは、代入するのに = を使う か strcpy 等を使うかの違いと、比較するのに <, =, > を使うか、 strcmp 等を使うかの違いです。もっとも、文字列の比較の場合、 何を大きいとするかは目的によって違いますので、特殊な順序にし たいなら新たに関数を用意しなければいけません。

関連するQ&A

  • 並べ替えの結果でわからないことがあります。

    下記状態の、行数約1000行の数字類の並べ替えがうまくいきません。 列内容 A列:名称 B列:フリガナ C列:ページ数(ここで並べ替えを行う) ページ数列の書式  「文字列」※フォント・サイズは統一されています  3桁表示(001、002、003・・・)  イレギュラー的に  「*001」や「001-1」などという表記分もあります。 いざ、上記状態のものをC列にて並べ替えを行うと、「231」「230」「001」「002」「003」(以下普通のソート状態)となります。 なぜか「231」「230」の行だけが一番上に来て、その後通常の並べ替えが行われています。 A列、B列には特別な仕様(ただの文字列のみ)は行っておらず、並べ替え方法も「データで並べ替え」・「C列で昇順」のみとなっています。 以上、よろしくお教えください。

  • アクセスの並べ替えについて

    現在アクセスで6万近くのデータを処理しています。 大字名と小字名及び地番(本番と枝番あり)を随時入力しています。 アクセス終了時に、並べ替えをしたいのですが、フィルタを使用して並べ替えの優先順位をつけました。コード(大字名で並べ替えるためにもともとある番号)→本番→枝番の順番で並べ替えするように設定しました。けれど、本番には500といった数字以外に500・520合併といった数字以外のものも含まれるため本番と枝番はプロパティをテキスト型にしています。そして並べ替えを実行すると、たしかにコード順にはなっているのですが、地番が100→1000→200→2000→というふうに必ずしも昇順になりません。どのように設定しなおしたらよろしいでしょうか?教えてください。

  • c言語 配列 や ソート datファイル読み込みについて

    初投稿でC言語初心者なのでよろしくお願いします。 課題でdatファイルから100万個の数字を読み込んで、ソートのタイムを競うのがでました。 ソートのアルゴリズム等は分かるのですが、100万個の数字を読み込むのがわかりません。 datファイルには、縦にずらっと数字が並べられていてどこを区切り文字としてとりだすのとか。 int配列も100万個も格納できないので3次元配列つかうのかなと思ってみたりしてます。 どうやって格納すればソートで使いやすいかご教授お願いいたします。

  • 配列を使わずに、変数名を動的にループで回したい

    配列を使わずに、変数名を動的にループで回したい 大学の課題をやっている途中に思ったことなのですが……。 プログラム中に同じ型の変数p1,p2,p3があり、それぞれの変数にループで同じ処理を施したいと思っています。 しかし、「p(i)」や「("p" + i)」などと、変数どうしを別のものとして認識させようとしても、コンパイラから警告が出て上手くいきません。 配列を使えば、このような処理が出来ることはわかるのですが、使う変数名を指定されてしまっているために、今回は配列を使えません。 出来るか出来ないか、出来る場合は方法を知りたいです。 後、今回はC言語のプログラムで利用出来るかが自分にとっての問題なのですが、C言語以外のこのプログラミング言語なら出来る、とかの情報もこの機会に知りたいです。 お答え出来る範囲でいいので、もしよければ回答お願いします。

  • 正八面体について

    正八面体のこの問題がわからなくて、悪戦苦闘しています。 (1)正八面体の各面に1~8の数字を1つずつ書き込んでできる八面体さいころは何種類できるか。ただし回転して同一になるものは同じとみなす。 (2)その中で、どの頂点についても、そこに会する4面につけられた数字の和が同一の値になるようなものがあるか。もしあれば、そのような配列の一例を示せ。 考えれば考えただけ、分からなくなりました。 どなたか教えてください。

  • エクセル複数条件の並べ替えについて

    こんばんは。 いつもお世話になり、ありがとうございます。 現在、エクセル2007を利用しております。 現在、並べ替えが上手くいかず、頭を抱えています。 -------------------------------------------------------    A    B    C    D    E 1 区名  町名  丁目  番地  枝番 2 ●区  △△町 05    200   005 3 ●区  △△町 01    300   004 4 ●区  ○○町 03    900   008 5 ●区  ○○町 00    315   200           ・           ・           ・ ------------------------------------------------------- 上記のような表を 町名ごとでまとめ、C列(丁目)・D列(番地)・E列(枝番)の番号を若い数字順に並べ替えたいと思っています。 並べ替えで、 ・町名 ・丁目 ・番地 ・枝番 の優先順位で並べ替えをしてみたのですが、枝番だけ若い数字順なりません。 4条件が揃うような並べ替えの方法というのはあるのでしょうか。 ちなみに、△△町・○○町共各数百行はあります。 ご存知の方がおられましたら、どうかご教授下さいますと助かります。 どうぞよろしくお願いします。

  • コマンドを実行してコマンドライン文字列を読み込む

    C言語(他の言語でも)で、コマンドを実行して結果の文字列を取得できるような関数はないでしょうか? コマンドを実行したプログラム内の変数に文字列として保持して、処理したいと考えています。 Windowsです。 よろしくお願い致します。

  • いろいろな言語に関する質問(スクリプト)

    ★現在、とあるソフトを開発していますが、このソフトで処理する  動作を外部の手続きファイル(スクリプト)を読み込むことで機能  拡張できるように考えています。 ・そこで、ちょっとした専用のスクリプト言語を開発しようと思って  います。質問内容はどの言語でも良いですが、それぞれの言語で  便利そうな仕組みを教えて下さい。たとえば、私は C/C++ 言語しか  使ったことがありませんが『if』、『switch』、『while』、『for』  のほかに BASIC やそれ以外の言語より、『until』、『repeat』や  C/C++の『do-while』をまねた、独自の『do-until』やバッチ処理の  『FOR』コマンドに似せた『fortable』の制御を可能にしようと思っ  ています。 ・基本的に文法構造の制御に関する仕組みを考えているので、関数の  機能ではありません。ただし、変数に関する扱い方や宣言の仕方は  いろいろとアイディアを出してくれてかまいません。何でもね。 ・今、ちょっとだけ『Perl』の文法を検索して言語使用などを見ましたが  もっと良い文字列(配列など)の操作仕組みがあれば、アイデアとして  取り入れたいと思います。整数に関する変数の扱い方も募集します。 ・以上。制御系を中心にスクリプト言語にあれば便利そうな仕組みや  サイト、または言語名を教えて下さい。お願い致します。

  • 並べ替えがうまくいかない

    数千行に及ぶデータがあります。 一定のものを抽出し、それを項目ごとに並べ替えて印刷使用しています。 たまたま、そこにあるべきはずのデータが入っていないことに気付き 調べたところ数行が並べ替えの対象となっていません。 データ入力時にミスがあったのかなと再度入力してみても変化がありません。 やむを得ず、該当行のところへ移動・挿入してから印刷をと試みましたがうまく行きません。 該当列には住所の条丁目を文字列として10-23のように入れています。 (当初、横に長いデータが想定されたため入力作業を優先し使用列をケチってしまったのが失敗でした) ここで質問ですが 1.考えられるマチガイはなんでしょうか? 2.全データの再入力以外に、抽出や並べ替えの対象外となってしまう  データが存在する行を見つけ出す方法はあるでしょうか?   ※データは2000と2007とで入力したものが混在し、互換モードで使用    していますが、調べた限りでは2007で入力した数字の取りこぼしもあるようです。

  • エクセルの文字列並べ替えについて

    エクセルの文字列並べ替えについて エクセル2000です。 半角文字列の数字とアルファベットを通常のエクセルの機能で昇順で並べ替えた場合 012 013 111 1AA 1B1 211 222 22C 23A 2AB 2BC のように並ぶと思います。(ここでの数字は数値でなく、すべて文字列です) 数字→アルファベットの順番のようです。 これを「アルファベット」→「数字」の順番で並べ替える方法はないでしょうか? 以下のような順にです。 ユーザー定義のリストに基づいた並べ替えがあることは存じていますが、3桁だけでも英数混在だと36×36×36=46,656個のリストを登録しなければならないことになり、現実的と思えません。 目的は、ホストコンピュータから出力される紙のデータがなぜかこのような順で出てきて、それにエクセルで作成したデータをあわせる必要が出てきたためです。 012 013 1AA 1B1 111 2AB 2BC 211 22C 222 23A エクセルの一般機能でもVBAでもかまいません。ご教示いただけると幸いです。