• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Znajdowanie i zwracanie w łańcuchu znaków wyrazów spełniających określone warunki

Object Storage Arubacloud
0 głosów
1,173 wizyt
pytanie zadane 27 lutego 2016 w C i C++ przez Alaster Nowicjusz (170 p.)

Witam wszystkich forumowiczów!
Mam problem z pewnym zadaniem i pomimo wszelkich prób nie jestem w stanie go rozwiązać. Prosiłbym zatem o - w miarę możliwości -  łopatologiczne i dokładne przedstawienie rozwiązania tego problemu. Z góry dzięki za wszelką pomoc. 

Oto zadanie : 

Zadanie 69.
----------------
Wiązka zadań Geny
---------------------
Informację genetyczną (genotyp) każdego osobnika z galaktyki Madgen opisuje słowo (na-pis), w którym występują litery ze zbioru {A, B, C, D, E}. Obowiązują przy tym następujące zasady:

1. Organizmy żyjące na Madgen tworzą gatunki g1, g2, g3, …, gdzie gi to zbiór osobni-ków o długości genotypu równej i.

2. W skład genotypu mogą wchodzić geny. Pierwszy gen rozpoczyna się pierwszą wy-stępującą w genotypie sekwencją AA, a kończy się najbliższą napotkaną po niej se-kwencją BB. Każdy kolejny gen rozpoczyna się pierwszą sekwencją AA, występującą za końcem poprzedniego genu, i analogicznie kończy się najbliższą napotkaną se-kwencją BB.

3. Geny nazywamy częścią kodującą genotypu, pozostałe fragmenty tworzą część nieko-dującą.


Plik dane_gen.txt zawiera genotypy 1000 osobników z galaktyki Madgen. Każdy wiersz pliku zawiera genotyp jednego osobnika o długości nie większej niż 500 znaków.


Napisz program(-y), który poda odpowiedzi na pytania postawione w poniższych zadaniach. Odpowiedzi zapisz w pliku wyniki_gen.txt. Odpowiedź do każdego zadania rozpocznij w nowym wierszu, poprzedzając ją numerem zadania.

69.1.
-----------
Podaj liczbę wszystkich gatunków, których genotypy zapisane są w pliku dane_gen.txt. Podaj największą liczbę osobników reprezentujących ten sam gatunek.

69.2.
-----------
Występowanie w jakimkolwiek genie ciągu BCDDC oznacza mutację powodującą małą od-porność osobnika na zmęczenie. Podaj, ile osobników spośród tych, których genotypy zapisa-ne są w pliku, ma tę mutacje.

69.3.
-----------
Wyznacz i podaj największą liczbę genów występujących u jednego osobnika. Podaj też naj-większą długość genu zapisanego w całym pliku.


69.4.
-------------
Genotyp odczytywany z materiału biologicznego może być odkodowany w kierunku od strony
lewej do prawej lub odwrotnie: od strony prawej do lewej. Genotyp nazywać będziemy
odpornym, jeśli czytany od strony lewej do prawej oraz od strony prawej do lewej ma dokładnie
taką samą część kodującą. Natomiast genotyp silnie odporny to taki, który czytany od
strony lewej do prawej oraz od strony prawej do lewej daje dokładnie ten sam napis. (Inaczej
mówiąc, genotyp jest silnie odporny, gdy jest palindromem).
Wyznacz liczbę genotypów odpornych oraz liczbę genotypów silnie odpornych.

 

1 odpowiedź

0 głosów
odpowiedź 27 lutego 2016 przez niezalogowany

łopatologiczne i dokładne przedstawienie rozwiązania tego problemu.

Coś źle napisałeś "Proszę o podanie wskazówek".

Widzę, że już dawno linkowałem Jak mądrze zadawać pytania? 

Nawiasem mówiąc część zadań jest całkiem prosta, reszta po prosu wymaga chwili myślenia, więc nawet przy podstawowej znajomości klasy string powinieneś być w stanie rozwiązać te zadania (także średnio chce mi się wierzyć, że próbowałeś): http://www.cplusplus.com/reference/string/string/

komentarz 27 lutego 2016 przez Alaster Nowicjusz (170 p.)
Oczywiście, chodziło mi o pewnego rodzaju nakierowanie na rozwiązanie zadania a nie rozwiązywanie go za mnie. IMO zadanie nie jest wcale takie proste (przynajmniej dla mnie) jak się wydaje i znajomość klasy string samej w sobie nie wystarczy by je rozwiązać. Głównym problemem tego zadania jest oczywiście występowanie więcej niż jednego genu w danym genotypie i wynikłe z tego powodu wszelkie komplikacje.
1
komentarz 27 lutego 2016 przez niezalogowany
1) to oczywiście ilość linii w pliku (chyba że jakieś dane są nieprawidłowe)

2) to ilość znalezionych wyników przy użyciu find() w danej linii

3) tutaj by mi pomógł jakiś przykład: jak te geny są zapisywane? Jeżeli mają postać AAAA-BBBBBB-CCCC-DDD, to sprawa jest ciekawsza. Największa ilość genów to zliczenie wystąpień myślinków + 1, największa długość genu to długość stringa pomiędzy myślnikami (mówiąc szczerze to nie chce mi się czytać całego naukowego opisu)

4) strasznie zawiły opis (nie pomaga moja nieznajomość tej materii): silnie odporny to sprawdzenie czy to jest palindrom, łatwe (odwracasz stringa i sprawdzasz czy jest taki sam jak przed odwróceniem), czy odporny to musiałbyś mi podać kilka przykładów.

O ile nie ma jakichś specyficznych reguł to całość da się rozwiązać na podstawowym stringu bez wielkiego kombinowania
komentarz 27 lutego 2016 przez Alaster Nowicjusz (170 p.)
1) no nie do końca, chodzi tu o liczbę niepowtarzających się gatunków.

3) W danych nie ma żadnych myślników. Znalazłem najdłuższy gen (napis zaczynający się sekwencją AA i kończący -  BB) w każdym genotypie i porównałem je ze sobą. Działa (mam odpowiedzi do tych zadań).

4) genotyp odporny to taki, którego geny(napisy zaczynające się sekwencją AA i kończące -  BB) po połączeniu ich w jeden łańcuch znaków czytane od lewej są takie same jak czytane od prawej. Właśnie to zrobiłem.

W zasadzie główną przyczyną mojego niepowodzenia był fakt, że przez pomyłkę w programie przyjąłem, że to gen definiuje gatunek, a nie genotyp. Jak teraz sprawdziłem, ta głupia pomyłka spowodowała, że moje wyniki były błędne. Przepraszam za to całe zamieszanie z tym zadaniem.

Podobne pytania

0 głosów
1 odpowiedź 147 wizyt
pytanie zadane 18 lipca 2016 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 134 wizyt
pytanie zadane 29 grudnia 2016 w Rozwój zawodowy, nauka, praca przez kroliczysyn Początkujący (390 p.)

92,552 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...