strstr関数を使用して、文字列 'TT'がDNA配列ATGCTAGTATTTGGATAGATAGATAGATAGATAGATAGATAAAAAAATTTTTTTTに「T」を2回も数えずに表示される回数を数えようとしています。それは 'TT'の5つのインスタンスで出てくるはずですが、代わりに私の関数は私に9を与えています。これはあなたが 'TT'を重複した場合に得られるものです。どのようにして 'TT'の個々のインスタンスのみがカウントされ、Tが2回カウントされないように修正できますか?ここに私のプログラムは次のとおりです。strstr()関数のオーバーラップ文字列検索
/***************************************************************************************/
#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;
//FUNCTION PROTOTYPES
int overlap(char *ptr1, char *ptr2);
int main()
{
//Declare and initialize objects
int count(0); // For DNA sequence
//DNA SEQUENCE
char DNA_sequence[] = "ATGCTAGTATTTGGATAGATAGATAGATAGATAGATAGATAAAAAAATTTTTTTT";
char thymine_group[] = "TT";
char *ptr1(DNA_sequence), *ptr2(thymine_group);
//Send QUOTE to function
count = overlap(ptr1, ptr2);
//Print number of occurences.
cout << "'TT' appears in DNA sequence " << count << " times" << endl;
return 0;
}
//FUNCTION 1 USING CHAR ARRAYS AND POINTERS
int overlap(char *ptr1, char *ptr2)
{
int count(0);
//Count number of occurences of strg2 in strg1.
//While function strstr does not return NULL
//increment count and move ptr1 to next section
//of strg1.
while ((ptr1=strstr(ptr1,ptr2)) != NULL)
{
count++;
ptr1++;
}
return count;
}
/**************************************************************************************************/
を試してみてください!ありがとう! – Arturo
あなたを歓迎します:-) – Yahia