2つの文字列がどのくらい合っているかの割合を求めたいです

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
950417jjjjjjjjjj

2つの文字列がどのくらい合っているかの割合を求めたいです

#1

投稿記事 by 950417jjjjjjjjjj » 5年前

[1]
1.2つのtxtにはそれぞれa,bの文字列があります。
例)d.txt aaaaaabbbbbbaabbbbbbbbbaaaaaaaaaaaaa
  t.txt aaaabbbbbbbbaaaaaabbbbbbbbbbbaaaaaab
これらのテキストを読み込み、1に対してどのくらい文字が同じになっているのかを何%で表したいです。
2.[code]
#include <stdio.h>

int main(void)
{
int i;
FILE *file;
file = fopen("d.txt","r");
fscanf(file,"%d",&i);
fclose(file);
printf("%d\n",i);
return 0;
}
[/code]

3.2つのtxtの読み込みはどうしたらいいのでしょうか。
 2つのtxtに対しての文字の合っている割合はどう処理また、計算すればいいですか。

[2]環境
1.OS:Linux
2.TeraTerm ?

[3]
プログラミングは初心者です。まだ始めたばかりです。

にほ
記事: 17
登録日時: 6年前
連絡を取る:

Re: 2つの文字列がどのくらい合っているかの割合を求めたいです

#2

投稿記事 by にほ » 5年前

codeの周りのかっこが全角になっているので、コードが正しく表示されていませんね。記事の送信の際はプレビューして問題ないか確認してから送信することをお勧めします。

これらのテキストを読み込み、1に対してどのくらい文字が同じになっているのかを何%で表したいです。
やりたいことはだいたいわかりますが、仕様書としては不十分なところがあるように思えます。例えば、二つのテキストの文字列が違う場合、どのような処理をするつもりですか?(短い方に合わせる or 長い方に合わせる etc...)

2つのtxtの読み込みはどうしたらいいのでしょうか。
提示されたコードではd.txtしか読み込んでいないようなので、d.txt、t.txtそれぞれ読み込み処理を行ってください。

2つのtxtに対しての文字の合っている割合はどう処理また、計算すればいいですか。
まず、文字を読み込んで比較するためには文字列を格納する必要があるので、char型の配列が必要です。読み込んだchar型の値に対して、t.txtの配列とd.txtの配列についてそれぞれ比較すれば大丈夫そうですね。C言語であれば、

コード:

if (str[0] == str[1]) {
のようにして比較することができると思います。
あとは、読み込んだ全体数と一致していた数を使えば割合が求められるはずです。

box
記事: 2002
登録日時: 13年前

Re: 2つの文字列がどのくらい合っているかの割合を求めたいです

#3

投稿記事 by box » 5年前

例)d.txt aaaaaabbbbbbaabbbbbbbbbaaaaaaaaaaaaa
  t.txt aaaabbbbbbbbaaaaaabbbbbbbbbbbaaaaaab
この例の場合、何%としたいのですか?
仮にコンピューターを使わずに手計算するとしたら、どういう手順を踏みますか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

box
記事: 2002
登録日時: 13年前

Re: 2つの文字列がどのくらい合っているかの割合を求めたいです

#4

投稿記事 by box » 5年前

どうしてさっきみたいなことを聞いたかというと、例えば
ab
ba
という2つの文字列を比べた結果を何%にしたいのかな?という疑問がわいたからです。
先頭から1文字ずつ比べる方法だと全く一致しませんが、
aの数とbの数という観点に立つと、完全に一致しますよね。
なので、
2つのtxtに対しての文字の合っている割合はどう処理また、計算すればいいですか。
という問いかけに対しては、質問者さんはどうしたいのですか?という逆質問となります。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

返信

“C言語何でも質問掲示板” へ戻る