• 締切済み

プログラム 課題

14.1と16の組み合わせと、32と33.9の組み合わせを分けて取り出す プログラムを作りたいのですが、正直どんなプログラムになるのかわかりません。 (予想としては、ifを使ったりするのではないかと思うのですが。) 以下の配列がファイルのデータです 32 33.9 14.1 14.1 16 16 16 14.1 33.9

みんなの回答

  • ryukak
  • ベストアンサー率0% (0/0)
回答No.7

課題の意味が少しわかりにくいですね。 単純に値を取り出すだけならデータを読み込んで配列に格納して出力するだけでいいかと

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

「桁落ち」はなんか違うような・・・ http://www.cc.kyoto-su.ac.jp/~yamada/programming/float.html

全文を見る
すると、全ての回答が全文表示されます。
  • yama5140
  • ベストアンサー率54% (136/250)
回答No.5

「課題」の主旨は、#4 さんの「桁落ち誤差」についてなのか、 「ファイルのデータ」って、「入力処理」も?とか、 共に差が 1.9 ( 33.9 - 32.0, 16.0 - 14.1 )なのは意味があるのか、 「組み合わせを分けて取り出す」とは、・・などと考えたんだけど???。 判らず終いで、・・・ やっぱ #1 さんの言う「マトモな回答」ではないな・・。 #include <stdio.h> #define DIM 9 #define SUMI 0.0 double dgData[ DIM ] = { 32.0, 33.9, 14.1, 14.1, 16.0, 16.0, 16.0, 14.1, 33.9 }; void Toridasu( double dA, double dB ) { int i, j; printf( "%4.1f:%4.1f", dA, dB ); for( i = 0; i < ( DIM - 1 ); i++ ){ if( dA != dgData[ i ] ) continue; for( j = ( i + 1 ); j < DIM; j++ ){ if( dB != dgData[ j ] ) continue; printf( " #%d:#%d", ( i + 1 ), ( j + 1 ) ); dgData[ i ] = SUMI; // 用済み dgData[ j ] = SUMI; //  〃 break; } } for( i = 0; i < ( DIM - 1 ); i++ ){ if( dB != dgData[ i ] ) continue; for( j = ( i + 1 ); j < DIM; j++ ){ if( dA != dgData[ j ] ) continue; printf( " #%d:#%d", ( j + 1 ), ( i + 1 ) ); dgData[ i ] = SUMI; // 用済み dgData[ j ] = SUMI; //  〃 break; } } printf( "\n" ); } void main() { int i; for( i = 0; i < DIM; i++ ) printf( "#%d=%4.1f\n", ( i + 1 ), dgData[ i ] ); printf( "\n" ); Toridasu( 14.1, 16.0 ); Toridasu( 32.0, 33.9 ); printf( "\n残り" ); for( i = 0; i < DIM; i++ ){ if( SUMI != dgData[ i ] ) printf( " #%d", ( i + 1 ) ); } printf( "\n" ); } 実行結果 #1=32.0 #2=33.9 #3=14.1 #4=14.1 #5=16.0 #6=16.0 #7=16.0 #8=14.1 #9=33.9 14.1:16.0 #3:#5 #4:#6 #8:#7 32.0:33.9 #1:#2 残り #9

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

組み合わせを分けて取り出す #include <stdio.h> #define N 9 void picup(int, int *, float *); int main(void) { float array[N]={32.0,33.9,14.1,14.1,16.0,16.0,16.0,14.1,33.9}; int integer[N],i; //桁落ち誤差回避のための整数変換 for(i=0;i<N;i++) integer[i]=10.0*array[i]; //事業仕分け? printf("Case of 14.1 and 16.0\n"); picup((int)(10.0*(14.1+16.0)),integer,array); printf("Case of 32.0 and 33.9\n"); picup((int)(10.0*(32.0+33.9)),integer,array); return 0; } void picup(int judge, int integer[], float array[]) { int i,j,temp; for(i=0;i<N-1;i++){ for(j=i;j<N;j++){ temp=integer[i]+integer[j]; if(temp==judge){ printf("%d(%.1f) : %d(%.1f)\n", i,array[i],j,array[j]); } } } } ----- 実行結果 ----- Case of 14.1 and 16.0 2(14.1) : 4(16.0) 2(14.1) : 5(16.0) 2(14.1) : 6(16.0) 3(14.1) : 4(16.0) 3(14.1) : 5(16.0) 3(14.1) : 6(16.0) 4(16.0) : 7(14.1) 5(16.0) : 7(14.1) 6(16.0) : 7(14.1) Case of 32.0 and 33.9 0(32.0) : 1(33.9) 0(32.0) : 8(33.9)

全文を見る
すると、全ての回答が全文表示されます。
  • kakuritsu
  • ベストアンサー率23% (62/261)
回答No.3

>14.1と16の組み合わせと、32と33.9の組み合わせを分けて取り出す これがどういう意味なのか、教えてください。 何がしたいのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.2

はて、このデータでどのような回答が出ることを期待しているのか? あなたは、自分の質問内容で答えられると思いますか?

全文を見る
すると、全ての回答が全文表示されます。
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

「プログラム」以前の話なので、手でやる場合にどう解決するかをまずは考えましょう。 そうして、手で解決する手段を考えたらそれをプログラムに変換することを考えましょう。 その段階になってわからないところがあったら、そこを提示してください。 それくらいしないとマトモな回答つきませんよ。

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

関連するQ&A

  • どのようなプログラムをつくればいいでしょうか?

    Perlをもちいて塩基配列のチェックをおこないたいんですがどのようなプログラムを作成したらいいのかがわからないので教えてください。 以下の塩基配列のデータファイル(1)があります 塩基配列の説明文~ 5’-ATATAGATAGATCATAGATCCCCGATAGCCCAGTAAATGATGACCCGATGATGACCCAGTACCCGGATGAGTAGTGATAGTACCCGTGTGTAAGTGATAGATAGTCCCATGTAGACAAAGATCCAGTAACGCGCGTTTTT-3’ これに対し、制限酵素A、B、Cを含んだデータファイル(2)があります。 ファイル形式は以下のような内容です。 制限酵素の説明文~ <1>A(制限酵素名) <2> <3> <4> 5’-A^TAGT-3’(認識部位) このデータファイル(1)に対し、(2)のファイル内の制限酵素A(認識部位5’-A^TAGT-3’)で切断する位置の数、位置の場所を表す番号(塩基配列の中の何番目か)を表示させるプログラムを作りたいんですがどのようにしたらいいんでしょうか? プログラムを実行する際には以下の手順を踏んでおこないます。 ./プログラムファイル名.pl 塩基配列ファイル名.fasta 制限酵素データファイル.txt 制限酵素名前(ここではAとする) これらをおこなうために必要な点として自分が考えているのは、(2)のファイル内の制限酵素名Aを認識させるために正規表現で<1>を認識させるようにして、実行時に指定する制限酵素名がなければそこでプログラムを終了させ、逆に存在する場合は、塩基配列を認識する部位である<4> 5’-A^TAGT-3’(認識部位)の部分を読み込んで(1)のファイル内の塩基配列認識部位の数と位置を表示させるプログラムを組み込めばいいのではないかと考えているのですが、<1>A(制限酵素名)があった場合に<4> 5’-A^TAGT-3’(認識部位)を認識させるためにはどうしたらいいんでしょうか?

    • ベストアンサー
    • Perl
  • 組み合わせのプログラム

    組み合わせのプログラムを考えています。 例として tray[0]=1000, tray[1]=500, tray[2]=300 があるとします。 各配列の値を使って、その合計値が例えば「1000 以下」と言う条件に当てはまる組み合わせは 1000, 800(500+300), 500, 300, (0) です(各配列の値は1回だけ使用可能とします)。 1つの tray に対して、それを「足すか」「足さないか」の2通りが考えれるので、全体で2^n個(trayの数をnとする)の組み合わせを調べれば良いと思っています(これは間違っているのかな?!) プログラムのイメージは以下のような感じです。 int sum,x; (ここは x を使って if か for を使った足すか足さないかの条件ではないか!?){ sum=0; for(int i=0;i<n;i++){ sum+=tray[i]*x;//ここでさきほどの x を使うのではないか、x に 0 or 1 が入ってくるイメージです if(指定した数字(条件)>=sum) System.out.print("ここで組み合わせの出力"); } } 初歩的な質問でお恥ずかしいです。 意味的に、かなりはしょった部分があるので、言いたい意味が分からないなど、ご質問がある方はご遠慮なくして下さい。 色々頑張ってみたのですが無理でした、もしご解答いただける方がいればすごく助かります。 宜しくお願いします。

    • ベストアンサー
    • Java
  • プログラムの課題で分からない問題があるので、ヒントを教えていただきたい

    プログラムの課題で分からない問題があるので、ヒントを教えていただきたいのです。 ちなみにfor文、if文、配列などを応用して(勿論ぜんぶ使わなくても良いです)プログラムをつくるものなのですが、配列をうまく理解してないので、どういう風に配列に代入して出力するかアドバイスお願いします。 ・キーボードから入力した2つの文字列(8文字以内)を比較して、同じときには○、異なるときは×と表示する int main(void) { char str[8]; int i,n,na; for (i=0;str1[i]= =str2[i];i++){ if (str1[i]= ='\0'){ n=1; }break; } というトコまでは何とか分かるのですが…

  • プログラムの課題で分からない問題があるので、ヒントを教えていただきたい

    プログラムの課題で分からない問題があるので、ヒントを教えていただきたいです。 ちなみにfor文、if文、配列などを応用して(勿論ぜんぶ使わなくても良いです)プログラムをつくるものなのですが、配列をうまく理解してないので、どういう風に配列に代入して出力するかアドバイスお願いします。 ・1~5の数字をキーボードから入力し、それに対応した英語を表示。ただし単語は配列に初期化しておくこと(※swich-caseを使わずに) ・キーボードから英語の大文字を1文字入力して、その文字がアルファベットの何文字目にあたるかを表示する ・キーボードからアルファベットの小文字を1文字入力→大文字に変換して表示する 多くてすみません。

  • ファイルから文字列を読み込んで、検索するプログラム

    以下のようなプログラムをつくりたいのですが、 どうしたらよいでしょうか?? 文字列を配列型に入れるときにわからなくなって しまうのですが。。。 ファイルからデータを順番に読み込み,メモリ上に一次元配列構造に並べて線形探索するプログラムを作成せよ. データの仕様 一行に、 「番号(スペース)読み仮名(スペース)文字列(住所)」 があり、これが10~1000行ほど、ファイルに(.dat) 入っている。 ファイルを配列に読み込んだあと、 番号を入力すると、住所が検索されてでてくる。 問題文も微妙なのですが、 これは番号の配列と住所の配列は別にして、 検索したほうがいいですよね、、? 何かヒントになることだけでも良いので、 よろしくお願いします!

  • アーキテクチャの課題

    以下の問いの回答を教えてください。 1.malloc関数を用いて巨大な配列を確保して、 その配列に書き込みを行うようなプログラムを作成しなさい。 int *buf; buf = (int*)malloc(SZ*sizeof(int)); if (buf == NULL) { perror("malloc"); exit(1); } for (i = 0; i < SZ; i++) buf[i] = i; 2.プログラムで、配列のサイズをさまざまに変えた時、 major pagefault と minor pagefault の回数がどうなるか調べなさい。 2. で調べた最大サイズの他、3~4通りのサイズで試すこと。 困ってますよろしくお願いします。

  • アーキテクチャの課題

    以下の問いの回答を教えてください。 1.malloc関数を用いて巨大な配列を確保して、 その配列に書き込みを行うようなプログラムを作成しなさい。 int *buf; buf = (int*)malloc(SZ*sizeof(int)); if (buf == NULL) { perror("malloc"); exit(1); } for (i = 0; i < SZ; i++) buf[i] = i; 課題では以上のヒントが与えられています。 サイズは1Gぐらいで何もわからないのでプログラムの全文を教えていただきたいです。 困ってますよろしくお願いします。

  • C言語でプログラムを書いています。

    C言語でプログラムを書いています。 その中で、サンプルデータの入ったファイルを読み込み、 その中身を配列を用いて行列として整理したいのですが、どのような命令が必要でしょうか。 ファイルの中身は、以下のようになっています。 1:0.111 2:0.222.....600:0.999 ・ ・ ・ 1:0.122 2:0.233.....600:0.998 「数字:」の部分は使用しないため、実際はコロン以下の数値で組みたいと考えています 詳しいサイトの紹介でもかまいませんので、よろしくお願いします

  • このプログラムなんですが

    #! /usr/bin/perl @data=<>; open (IN,"newtype.txt"); @file = <IN>; close (IN); foreach $address (@file) { ($pn,$ad) = split(/\t/,$address); $pnad{$pn}=$ad; } foreach $jusyo (@data) { chomp $jusyo; print $jusyo; print "\n"; print "$pnad{$jusyo}"; } foreach $line (@file) { @data = split(/t\/, $line); if($data[0] =~ "51105") { print "$data[0]"; print "$data[1]"; } elsif($data[0] =~ "651130") { print "$data[0]"; print "$data[1]"; } } exit; コンパイルするときには ./sample.pl data.txt をシェルにうって実行します。 このプログラムでは、はじめに自分で指定したファイル内に存在する郵便番号(通常は7桁だけなんですが、プログラムを見ていただければわかると思われますが、それ以外に5桁(たとえば12354XX,x12354x,xx12354など))と6桁(134567x,x134567など)がありまして、それを表示させたいんですが、上のプログラムでは、if文以下の5桁と6桁があった場合にそれを同時に表示させるプログラムができていないんです。 ハッシュをもちいてプログラムを作り直したいんですが、教えてください。 今日の夜8時までに出さなくてはいけないので、すぐに回答をいただけたらありがたいです。

  • fortran95でのプログラムの課題なんですが教えてください

    fortran95でのプログラムの課題なんですが教えてください 生徒数20人分の学籍番号と1教科の採点結果を提示する。 これらのデータから、最高点、最低点、平均点、標準偏差を求める。さらに、各生徒の成績の偏差値を計算し、成績順に並べ替える作業を複数のサブルーチンを用いてプログラムせよ。 表示項目は、 ・最高点、最低点、平均点、標準偏差 ・順位、学籍番号、素点、偏差値、評価(成績順リスト) とし、結果を書式設定を用いて表示させたものを、プログラムの後部にコメント文として添付すること。実数のデータは小数点第2位までの表示とする。提出ファイル名は(reportfinal.f95)とすること。 なお、生徒の成績についてはファイルから読み込むこととし、データは7月13日に提示するものを使用すること。 評価は、90点以上をA、80~89点をB、70~79点をC、60~69点をD、60点未満をFと表示すること。 ※注意 ・レポートのファイル名はreportfinal.f95とする ・冒頭に自身のIDと氏名を付記すること。 ・表示された結果を、作成したプログラムの後部にコメント文として貼り付けて提出。 ・成績順に並べ替えを行って、成績の良い順に表示させる。 ・表示には書式設定を行うこと。 ・配列を用いること。 ・サブルーチンを複数使用すること。 ・数値の取り扱いについては、解説、参考資料を参照のこと このプログラムの作り方が最初以外全然わかりません 最初は INTEGER,DIMENSION(20):: TEN REAL,DIMENSION(20):: HEN CHARACTER(LEN=9),DIMENSION(20):: GAKUNUM OPEN(4,FILE='RepCard9.dat') DO I=1,20 READ(4,100)GAKUNUM(I),TEN(I) END DO CLOSE(4) 100 FORMAT(A9,I6) とやれと言うことだけ言われました 数値は[RepCard9.dat」というファイルを与えられていてその中に入っています 完全に行き詰っています。お願いします