• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:c言語 正負の値それぞれでの最大値最小値)

C言語で正負の値の最大値・最小値を求める方法

このQ&Aのポイント
  • C言語で正負の値の最大値・最小値を求めるプログラムを作成したいです。具体的な処理として、txtファイルに縦一列に並んだ値を読み込み、プラス側とマイナス側でそれぞれ最大値と最小値を求めます。もし値が全てプラスまたはマイナスの場合は、最大値と最小値はありません。
  • このプログラムを使うことで、大学の研究などでデータ処理を行う際に役立つでしょう。
  • Microsoft Visual C++ 2008 Express Editionを使用してプログラムを作成しています。どのような処理方法が最適か教えていただけますか?

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

  • ベストアンサー
回答No.1

本当に研究で使うデータ処理なのかなぁ? こんな単純なデータ処理をして結果を表示するだけなんて研究に使うとは思えない。 むしろ課題を丸投げにしているように見える。 数値が縦一列に入っているということは各数値は改行で区切られているのだから、 ファイルをオープンして一行づつデータを読み取りながら、その数値の正負零を判定し、 (零を除いて)正負それぞれの最大最小を順次残していくようにすればよい。 最後に、残った最大最小の値を表示または非存在を表示する。 大した処理ではないと思われますが。。。 もしC言語が苦手だというのであれば、Excelなどの表計算ソフトのマクロで行っても たいしたことは無いでしょう。

cab360
質問者

お礼

回答ありがとうございます。 あるデータからあるデータを引いた差分(変化量)が書き込まれた3000個のtxtファイルがあります。 電流 電圧1 電圧2 電圧3 といったように各項目に100個ずつ値が入っています。 それぞれの項目で最大最少を求めて新たなtxtファイルに書き込み、 この先の研究に使おうと思っています。 各項目で大きい順に並べ替えて1番目と100番目を取り出せばいいと思っていたら、 正負の値があったので欲しいデータが得られませんでした。 c言語はとても苦手です。参考にしてやってみます。

その他の回答 (3)

回答No.4

テキスト処理を扱うにはawkと言うすばらしい言語があります。 UNIXのものでしたがcygwinにもあります。元々UNIXのコマンドなので簡単にスクリプトを書いて後はマシンにやらせると言う発想のものです(深く考えるより簡単にやってしまう)。 cygwinを導入したして回答します。 cat xxx.txt|awk \ 'BEGIN {Pmax=0;Pmin=9999;Mmax=-9999;Mmin=0} {  if ($1>0) {   if ($1>Pmax) {Pmax=$1}   if ($1<Pmin) {Pmin=$1}  }  if ($1<0) {   if ($1>Mmax) {Mmax=$1}   if ($1<Mmin) {Mmin=$1}  } } END {  print "+最大値=" Pmax  print "+最小値=" Pmin  print "-最大値=" Mmax  print "-最小値=" Mmin }' ※インデンテーションのために全角空白が入っています。

cab360
質問者

お礼

少し調べてみたらテキスト処理にはもってこいの言語ですね。 この先に向けてインストールしてみます。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

こういってはなんですが..... なんで苦手なCをわざわざつかうんですか? あなたがCを苦手、というのもありますが、C言語の方でも、こういう文字列をいろいろと操作するのを比較的苦手としています。 「C言語のプログラムを作る」ということ自体が目的でなければ、あなたができる方法でやればいいです。 特に、こんな一度しか使わないようなものは。

cab360
質問者

お礼

そうですよね。c言語は授業で唯一基礎的なことを習っており、 それ以外に選択肢も知識もなかったので使っていました。 C言語が、こういう文字列をいろいろと操作することを苦手なのは知りませんでした。

回答No.2

最も手軽に実装できる手段は何だろうと 興味が沸いたので少し調べたら windows7ならpower shellで == test.txt == num -2 -1 0 1 2 == test.txt == と書いたファイルを用意して > Import-Csv C:\test.txt | Measure-Object num -max -min Count : 3 Average : Sum : Maximum : 2 Minimum : -2 Property : num って結果が返ってきました。便利だなあ。

cab360
質問者

お礼

便利なものもあるんですね!

関連するQ&A