ページ 11

まったくわかりません……

Posted: 2011年5月20日(金) 15:54
by ek2459
はじめてここにきました。
さっそく質問なのですが、

キーボードから入力された任意の塩基配列に対して、3 通りある読み枠すべてから、
開始コドン~終止コドンに囲まれた領域を抽出するプログラムを作成せよ。なお、開始コ
ドンは、AUG、終止コドンは、UAG, UGA, UAA の3 通りあるとする。
例:
AAUAUGAUCCAUGGGCUACUAGAUUGAAUAGCCU
候補コード領域1: AUGAUCCAUGGGCUACUAGAU
候補コード領域2: AUGGGCUAC

なにがしたいのかはわかるのですが、どのようにしてプログラムを組めばいいのか、まったく思いつきません。
よろしくお願いしますm(_ _)m

Re: まったくわかりません……

Posted: 2011年5月20日(金) 17:09
by 井上
1.文字列を strncmp 等で比較しながらループ。
2.1が成功したら、 UAG,UGA,UAAと比較しながらループ。
3.回数+1 後、1へ戻る

1.2のループ終了時の回数を数えてみてはいかがでしょうか?

Re: まったくわかりません……

Posted: 2011年5月21日(土) 12:59
by non
C言語の質問サイトですから、専門用語を使われるとなんのことだかわかりません。
>例:
>AAUAUGAUCCAUGGGCUACUAGAUUGAAUAGCCU
>候補コード領域1: AUGAUCCAUGGGCUACUAGAU
>候補コード領域2: AUGGGCUAC

例の最初の行が、キーボードから入力された文字列で、次の候補コード領域1と候補コード領域2が検索された答えなのでしょうか?
しかし、答えはほかにもAUGAUCCAUGGGCUACなどもあると思うのですが、そのすべてを抜き出せということなのでしょうか?

さて、ここは丸投げ禁止サイトなので、まず、標準入力(キーボード)から文字列を入力し、配列に格納して、その文字列にAUGが最初に
出現する場所をみつけて、その場所の文字位置か、アドレスを返すようにプログラムを作ってみてください。
井上さんが書かれている1までですね。strstr関数を使ったほうが簡単です。

Re: まったくわかりません……

Posted: 2011年5月21日(土) 16:10
by ek2459
井上さん
ありがとうございます。
作ってみてエラーが起きたらまた書きます。

nonさん
ありがとうございます、おっしゃる通りです。