Polecenie 1

Wykrywanie mutacji genowej w sekwencjach DNA

Lekarze odkryli sekwencję DNA odpowiedzialną za poważną chorobę genetyczną. Mutacja ta ma postać: AGTCG

W ramach badań genetycznych trzem pacjentom pobrano próbki DNA. Ich sekwencje genowe przedstawiają się następująco:

  • Pacjent 1: TTAGTCGATCGT

  • Pacjent 2: GCTTAGGCTAGC

  • Pacjent 3: AGTCGTTAGTCG

Napisz program w języku C++, który:

  1. Wczytuje sekwencję mutacji oraz sekwencje DNA trzech pacjentów.

  2. Sprawdza, czy dana mutacja występuje w sekwencji każdego pacjenta.

  3. Wypisuje, który pacjent ma mutację oraz na której pozycji się ona zaczyna (indeks liczony od zera).

  4. Jeśli pacjent nie ma mutacji — wypisze odpowiednią informację.

Przykład oczekiwanego wyniku:

Linia 1. Pacjent 1 dwukropek Mutacja wykryta na pozycji 2. Linia 2. Pacjent 2 dwukropek Mutacji nie wykryto. Linia 3. Pacjent 3 dwukropek Mutacja wykryta na pozycji 0.
Podpowiedź
Odpowiedź
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny. Linia 2. kratka include otwórz nawias ostrokątny string zamknij nawias ostrokątny. Linia 3. using namespace std średnik. Linia 5. int znajdzMutacje otwórz nawias okrągły string sekwencja przecinek string mutacja zamknij nawias okrągły otwórz nawias klamrowy. Linia 6. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny znak równości sekwencja kropka length otwórz nawias okrągły zamknij nawias okrągły minus mutacja kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 7. bool pasuje znak równości true średnik. Linia 8. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny mutacja kropka length otwórz nawias okrągły zamknij nawias okrągły średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 9. if otwórz nawias okrągły sekwencja otwórz nawias kwadratowy i plus j zamknij nawias kwadratowy wykrzyknik znak równości mutacja otwórz nawias kwadratowy j zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy. Linia 10. pasuje znak równości false średnik. Linia 11. break średnik. Linia 12. zamknij nawias klamrowy. Linia 13. zamknij nawias klamrowy. Linia 14. if otwórz nawias okrągły pasuje zamknij nawias okrągły return i średnik prawy ukośnik prawy ukośnik Zwróć pozycję pierwszego wystąpienia. Linia 15. zamknij nawias klamrowy. Linia 16. return minus 1 średnik prawy ukośnik prawy ukośnik Mutacja nie występuje. Linia 17. zamknij nawias klamrowy. Linia 19. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 20. string mutacja znak równości cudzysłów AGTCG cudzysłów średnik. Linia 22. string pacjent1 znak równości cudzysłów TTAGTCGATCGT cudzysłów średnik. Linia 23. string pacjent2 znak równości cudzysłów GCTTAGGCTAGC cudzysłów średnik. Linia 24. string pacjent3 znak równości cudzysłów AGTCGTTAGTCG cudzysłów średnik. Linia 26. int poz1 znak równości znajdzMutacje otwórz nawias okrągły pacjent1 przecinek mutacja zamknij nawias okrągły średnik. Linia 27. int poz2 znak równości znajdzMutacje otwórz nawias okrągły pacjent2 przecinek mutacja zamknij nawias okrągły średnik. Linia 28. int poz3 znak równości znajdzMutacje otwórz nawias okrągły pacjent3 przecinek mutacja zamknij nawias okrągły średnik. Linia 30. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Pacjent 1 dwukropek cudzysłów średnik. Linia 31. if otwórz nawias okrągły poz1 wykrzyknik znak równości minus 1 zamknij nawias okrągły. Linia 32. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Mutacja wykryta na pozycji cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny poz1 otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik. Linia 33. else. Linia 34. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Mutacji nie wykryto cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik. Linia 36. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Pacjent 2 dwukropek cudzysłów średnik. Linia 37. if otwórz nawias okrągły poz2 wykrzyknik znak równości minus 1 zamknij nawias okrągły. Linia 38. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Mutacja wykryta na pozycji cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny poz2 otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik. Linia 39. else. Linia 40. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Mutacji nie wykryto cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik. Linia 42. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Pacjent 3 dwukropek cudzysłów średnik. Linia 43. if otwórz nawias okrągły poz3 wykrzyknik znak równości minus 1 zamknij nawias okrągły. Linia 44. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Mutacja wykryta na pozycji cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny poz3 otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik. Linia 45. else. Linia 46. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Mutacji nie wykryto cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik. Linia 48. return 0 średnik. Linia 49. zamknij nawias klamrowy.