Pomoc naukowa na maturę z informatyki od Bajaczysko
Ostatnio zmodyfikowano 2014-05-14 15:34
Bajaczysko Temat założony przez niniejszego użytkownika |
Pomoc naukowa na maturę z informatyki od Bajaczysko » 2014-05-14 12:00:54 Witam! W przyszłym tygodniu zdaję maturę z informatyki na poziomie rozszerzonym i napisałem program w którym są wszystkie algorytmy zebrane do kupy. Można sprawdzić samemu czy działają oraz do dyspozycji jest kod programu przez co można coś samemu pokombinować ;) Jako że jestem miły to udostępniam wam moje skromne dzieło: http://hostuje.net/file.php?id=f0ab8dda12b011375e50166e4d38db76 PS: Jeżeli jakiegoś algorytmu brakuje to dołączcie go do pliku i wyślijcie w tym temacie. Niech inni mają :) EDIT: Szyfr Cezara początkowo ściągłem skądś z internetu i on jest bezsensowanie długi także zamieszczam skróconą wersję (i łatwiejszą do zrozumienia): string SzyfrCezara( int klucz, string T ) { int dl = T.length(); for( int i = 0; i < dl; i++ ) T[ i ] += klucz; return T; } |
|
maly |
» 2014-05-14 13:24:29 |
|
OSA_PL |
» 2014-05-14 13:25:10 W funkcji Palindrom masz trochę za dużo porównań, gdy j<i już nie warto sprawdzać dalej bo masz to samo co sprawdzałeś wcześniej. |
|
Bajaczysko Temat założony przez niniejszego użytkownika |
» 2014-05-14 13:39:49 Palindrom to zmieniłem na taki kod: bool Palindrom( string tekst ) { for( int i = 0, j = tekst.length() - 1; i < tekst.length(); i++, j-- ) if( tekst[ i ] != tekst[ j ] ) return false; return true; } Krótki i prosty myślę ;) A co do szyfru to przecież jest on Cezara. Zmienia się znak o odpowiedni stały klucz przez całą funkcję. Niektóre funkcje zmieniam bo one były ściągnięte z internetu i je poprawiam :) Nowy schemat Hornera (poprzedni był okey ale ten dodatkowo może zmienić z szesnastkowego na dziesiętny): int horner( string T, int dlugosc, int stopien ) { if( dlugosc == 0 ) if(( T[ 0 ] - '0' ) < 10 ) return( T[ 0 ] - '0' ); else return( T[ 0 ] - 'A' + 10 ); int liczba; if(( T[ dlugosc ] - '0' ) < 10 ) liczba = T[ dlugosc ] - '0'; else liczba = T[ dlugosc ] - 'A' + 10; return stopien * horner( T, dlugosc - 1, stopien ) + liczba; } Jak coś to piszcie to będę poprawiał :) |
|
Monika90 |
» 2014-05-14 13:50:33 A co do szyfru to przecież jest on Cezara. |
Nie jest. Niech np. klucz bedzie równy 3, wtedy litera Z powinna być zmieniona na C (zakładam, że nie używamy polskich liter). A u Ciebie co będzie? |
|
Bajaczysko Temat założony przez niniejszego użytkownika |
» 2014-05-14 14:04:11 Ok, przyznaję się teraz do błędu. Poprawiony kod: string SzyfrCezara( int klucz, string T ) { int dl = T.length(); for( int i = 0; i < dl; i++ ) if( T[ i ] + klucz <= 'Z' ) T[ i ] += klucz; else T[ i ] = T[ i ] + klucz - 26; return T; } Następnym razem piszcie jaki jest błąd, bo myślałem, że mój szyfr nie był Cezara. On po prostu posiadał błąd - a to co innego ;) Poza tym na maturze są tylko 2 szyfry? Podstawieniowy i Cezara? Czy jeszcze jakieś? |
|
maly |
» 2014-05-14 15:34:01 bo myślałem, że mój szyfr nie był Cezara. On po prostu posiadał błąd - a to co innego |
Szyfr Cezara to algorytm Twój algorytm był inny co jest równoznaczne z niebyciem szyfrem Cezara:) Nie działa z kluczem większym od 26 i ujemnym. |
|
« 1 » |