InfografikaAlgorytm

Infografika pokazuje, czym jest algorytm, na prostym przykładzie z życia codziennego.

Ćwiczenie 0

Jeśli trzeba przeanalizować napis znak po znaku, najlepiej zrobić to za pomocą pętli for. Wartość początkowa zmiennej będącej wynikiem powinna być tzw. pustym napisem. Wynikiem zdefiniowanej poniżej funkcji papuga(string napis) jest napis z podwojoną każdą literą. Zmodyfikuj kod tak, aby po uruchomieniu skryptu otrzymać napis z potrojoną każdą literą.

#include <iostream> using namespace std; string papuga(string napis) { string pom = ""; for (int i = 0; i < napis.size(); i++) pom = pom + napis[i] + napis[i]; return pom; } int main() { cout << papuga("agawa") << endl; cout << papuga("krokus") << endl; return 0; }
Wynikiem funkcji papuga("bez") jest bbbeeezzz
return papuga("bez")=="bbbeeezzz";
bbbeeezzz
papuga("bez")
Wynikiem funkcji papuga("bratki") jest bbbrrraaatttkkkiii
return papuga("bratki")=="bbbrrraaatttkkkiii";
bbbrrraaatttkkkiii
papuga("bratki")
Wynikiem funkcji papuga("-*-") jest ---***---
return papuga("-*-")=="---***---";
---***---
papuga("-*-")
Rozwiąż ćwiczenie

Ćwiczenie 1Zliczanie pojedynczych znaków w tekście

Zdefiniuj funkcję ile(string s, char z), której parametrami są ciąg zna­ków oraz znak A, C, G lub T, a wynikiem jest lista wystąpień danego znaku w ciągu znaków. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji ile("CAATAAAAA", 'T') jest 1.
  • Wynikiem funkcji ile("TCTAAAGATATCGGG", 'A') jest 5.
#include <iostream> using namespace std; // zdefiniuj funkcję int ile(string s, char z) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji ile("AAAAAA", 'A') jest 6
return ile("AAAAAA", 'A')==6;
6
ile("AAAAAA", 'A')
Wynikiem funkcji ile("CCC", 'T') jest 0
return ile("CCC", 'T')==0;
0
ile("CCC", 'T')
Wynikiem funkcji ile("TCCAGGC", 'G') jest 2
return ile("TCCAGGC", 'G')==2;
2
ile("TCCAGGC", 'G')
Rozwiąż ćwiczenie

Ćwiczenie 2Zliczanie ciągów znaków w tekście

Zdefiniuj funkcję pary(string s), której parametrem jest łań­cuch DNA, a wynikiem – liczba wystąpień par jednakowych symboli (np. TTAT – 1, TTTA – 2, TATA – 0). Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji pary("TGATTCTGAACAAGTGTT") jest 4.
  • Wynikiem funkcji pary("TGATATTCGATGTGAAAAAGTCATACTGTT") jest 6.
#include <iostream> using namespace std; // zdefiniuj funkcję int pary(string s) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji pary("ACGTGTCA") jest 0
return pary("ACGTGTCA")==0;
0
pary("ACGTGTCA")
Wynikiem funkcji pary("ACGTTT") jest 2
return pary("ACGTTT")==2;
2
pary("ACGTTT")
Wynikiem funkcji pary("T") jest 0
return pary("T")==0;
0
pary("T")
Rozwiąż ćwiczenie

Ćwiczenie 3Zmiana struktury ciągu znaków

Odwrotne uzupełnienie łańcucha DNA to ciąg utworzony przez odwrócenie dane­go ciągu i dopełnienie każdego symbolu, tj. zamiany A na T i odwrotnie oraz C na G i odwrotnie (np. CTGA → AGTC → TCAG). Zdefiniuj funkcję oduz(string s), której parametrem jest łańcuch DNA, a wynikiem jego odwrotne uzupełnienie. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji oduz("TGACCCA") jest TGGGTCA.
  • Wynikiem funkcji oduz("TGATATTCGATGTGAAAAA") jest TTTTTCACATCGAATATCA.
#include <iostream> using namespace std; // zdefiniuj funkcję string oduz(string s) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji oduz("AAAAAGG") jest ciąg znaków CCTTTTT
return oduz("AAAAAGG")=="CCTTTTT";
CCTTTTT
oduz("AAAAAGG")
Wynikiem funkcji oduz("ATGC") jest ciąg znaków GCAT
return oduz("ATGC")=="GCAT";
GCAT
oduz("ATGC")
Wynikiem funkcji oduz("C") jest ciąg znaków G
return oduz("C")=="G";
G
oduz("C")
Rozwiąż ćwiczenie

Ćwiczenie 4Zmiana struktury ciągu znaków

Przeanalizuj dane w tabeli i zdefiniuj funkcję ta(string s), której parametrem jest łańcuch DNA, a wynikiem – łańcuch DNA z gwiazdką (*) w miejscu symboli C, G i T. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji ta("TGACCCA") jest **A***A.
  • Wynikiem funkcji ta("TGATATTCGATGTGAAAAA") jest **A*A****A****AAAAA.
#include <iostream> using namespace std; // zdefiniuj funkcję string ta(string s) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji ta("CCCC") jest ciąg znaków ****
return ta("CCCC")=="****";
****
ta("CCCC")
Wynikiem funkcji ta("CAGATTTT") jest ciąg znaków *A*A****
return ta("CAGATTTT")=="*A*A****";
*A*A****
ta("CAGATTTT")
Wynikiem funkcji ta("ATGCCGTA") jest ciąg znaków A******A
return ta("ATGCCGTA")=="A******A";
A******A
ta("ATGCCGTA")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Zdefiniuj funkcję codruga(string napis), której wynikiem jest napis z pominiętym co drugim znakiem. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji codruga("aksamitka") jest asmta.
  • Wynikiem funkcji codruga("chaber") jest cae.
#include <iostream> using namespace std; // zdefiniuj funkcję string codruga(string napis) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji codruga("irys") jest iy
return codruga("irys")=="iy";
iy
codruga("irys")
Wynikiem funkcji codruga("magnolia") jest mgoi
return codruga("magnolia")=="mgoi";
mgoi
codruga("magnolia")
Wynikiem funkcji codruga("rosiczka") jest rsck
return codruga("rosiczka")=="rsck";
rsck
codruga("rosiczka")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 2

Zdefiniuj funkcję wspak(string napis), której wynikiem jest napis ze znakami przestawionymi od końca do początku. Rozwiązanie zapisz za pomocą pętli. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji wspak("aloes") jest seola.
  • Wynikiem funkcji wspak("dalia") jest ailad.
#include <iostream> using namespace std; // zdefiniuj funkcję string wspak(string napis) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji wspak("kaktus") jest sutkak
return wspak("kaktus")=="sutkak";
sutkak
wspak("kaktus")
Wynikiem funkcji wspak("mak") jest kam
return wspak("mak")=="kam";
kam
wspak("mak")
Wynikiem funkcji wspak("orchidea") jest aedihcro
return wspak("orchidea")=="aedihcro";
aedihcro
wspak("orchidea")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 3

Zdefiniuj funkcję lustro(string napis), której wynikiem jest napis z połączonym napisem wspak. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji lustro("aster") jest asterretsa.
  • Wynikiem funkcji lustro("peonia") jest peoniaainoep.
#include <iostream> using namespace std; // zdefiniuj funkcję string wspak(string napis) { } // zdefiniuj funkcję string lustro(string napis) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji lustro("kalina") jest kalinaanilak
return lustro("kalina")=="kalinaanilak";
kalinaanilak
lustro("kalina")
Wynikiem funkcji lustro("malwa") jest malwaawlam
return lustro("malwa")=="malwaawlam";
malwaawlam
lustro("malwa")
Wynikiem funkcji lustro("skrzyp") jest skrzyppyzrks
return lustro("skrzyp")=="skrzyppyzrks";
skrzyppyzrks
lustro("skrzyp")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 4

Zdefiniuj funkcję przeplot(string napis), której wynikiem jest napis powstały z oryginalnego napisu poprzez dostawienie po każdej literze znaku z danego napisu, ale od końca. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji przeplot("azalia") jest aaziallaizaa.
  • Wynikiem funkcji przeplot("mniszek") jest mkneizsszienkm.
#include <iostream> using namespace std; // zdefiniuj funkcję string wspak(string napis) { } // zdefiniuj funkcję string przeplot(string napis) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji przeplot("jaskier") jest jraesikkisearj
return przeplot("jaskier")=="jraesikkisearj";
jraesikkisearj
przeplot("jaskier")
Wynikiem funkcji przeplot("zawilec") jest zcaewliilweacz
return przeplot("zawilec")=="zcaewliilweacz";
zcaewliilweacz
przeplot("zawilec")
Wynikiem funkcji przeplot("wrzos") jest wsrozzorsw
return przeplot("wrzos")=="wsrozzorsw";
wsrozzorsw
przeplot("wrzos")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 5

Metoda find() zwraca pozycję pierwszego wystąpienia frazy w tekście, podanej jako argument, lub zwraca wartość string::npos w sytuacji, gdy fraza nie zostanie odszukana. Przeanalizuj poniższy fragment kodu.

Twój wynik to: /1
  • Na której pozycji odnaleziony zostanie ciąg szukaj?

Ćwiczenie dodatkowe 6

Korzystając z klasy string, można wykonywać operacje na tekście. Poniżej zamieszczono opisy działania podstawowych metod klasy string.

A. odczytywanie długości tekstu
B. dołączenie nowego tekstu na koniec istniejącego tekstu
C. wstawianie nowych znaków we wskazanym miejscu istniejącego tekstu
D. usuwanie fragmentu tekstu

Twój wynik to: /1
  • Dopasuj nazwę metody do jej opisu.

Ćwiczenie dodatkowe 7

Przeanalizuj poniższy kod.

Twój wynik to: /1
  • Jaki napis jest wartością obiektu n3 po wykonaniu kodu?

Ćwiczenie dodatkowe 8

Przeanalizuj poniższy fragment kodu.

Twój wynik to: /1
  • Jaką postać przyjmie ciąg tekstowy w po wykonaniu funkcji reverse?

Zadanie 1Sekwencja błędów

Odległość Hamminga między dwoma łańcuchami DNA oznacza liczbę symboli, któ­rymi różnią się oba łańcuchy. Odległość Hamminga między łańcuchami st o tej samej długości wynosi 8. Niepasujące symbole są zaznaczone kolorem:

  • łańcuch s – CAGGCTACTACCGGTAT,
  • łańcuch t – CATCGTAATGCAGGGCT.

Zdefiniuj funkcję hamming(string s, string t), gdzie st to łańcuchy o tej samej długości. Wynikiem funkcji jest liczba będąca odległością Hamminga między danymi łańcuchami. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji hamming("CAGGTT", "CAGGTT") jest 0.
  • Wynikiem funkcji hamming("CAGGCTACTACCGGTAT", "CATCGTAATGCAGGGCT") jest 8.
#include <iostream> using namespace std; // zdefiniuj funkcję int hamming(string s, string t) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji hamming("AAAACTACTA", "CATCGTAATG") jest 6
return hamming("AAAACTACTA", "CATCGTAATG")==6;
6
hamming("AAAACTACTA", "CATCGTAATG")
Wynikiem funkcji hamming("CCCCCCCC", "AAAAAAAA") jest 8
return hamming("CCCCCCCC", "AAAAAAAA")==8;
8
hamming("CCCCCCCC", "AAAAAAAA")
Wynikiem funkcji hamming("GACATAGCTA", "GAACCGGGGG") jest 7
return hamming("GACATAGCTA", "GAACCGGGGG")==7;
7
hamming("GACATAGCTA", "GAACCGGGGG")
Rozwiąż ćwiczenie

Pytania quizoweWyszukiwanie wzorca w tekście

Twój wynik to: /3
  • Ile razy wykona się poniższa pętla dla napisu w = "laseczek"?
    for (int i = 0; i < w.size(); i++) 
        cout << w[i] << endl;
  • Jaka wartość zostanie wypisana dla napisu w = "wiaderko" w wyniku działania polecenia cout << w.size();?
  • Jaka litera zostanie wypisana dla napisu w = "kaktus" w wyniku działania polecenia cout << w[5] << endl;?