• 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

0 głosów
1,583 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ź 208 wizyt
pytanie zadane 18 lipca 2016 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 260 wizyt
pytanie zadane 29 grudnia 2016 w Rozwój zawodowy, nauka, praca przez kroliczysyn Początkujący (390 p.)

93,632 zapytań

142,556 odpowiedzi

323,056 komentarzy

63,139 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2523p. - Maurycy W
  9. 2459p. - CC PL
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1851p. - Mariusz Fornal
  13. 1811p. - rafalszastok
  14. 1600p. - Rafał Trójniak
  15. 1588p. - Tomasz Bielak
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...