Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pomoc naukowa na maturę z informatyki od Bajaczysko

Ostatnio zmodyfikowano 2014-05-14 15:34
Autor Wiadomość
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):
C/C++
string SzyfrCezara( int klucz, string T )
{
    int dl = T.length(); //okreœlenie iloœci znaków wyrazu
   
    for( int i = 0; i < dl; i++ )
         T[ i ] += klucz;
   
    return T;
}
P-109918
maly
» 2014-05-14 13:24:29
to nie jest szyfr cezara i wrzucaj kod między [cpp][/cpp].
http://pl.wikipedia.org/wiki​/Szyfr_Cezara
P-109920
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.
P-109921
Bajaczysko
Temat założony przez niniejszego użytkownika
» 2014-05-14 13:39:49
Palindrom to zmieniłem na taki kod:
C/C++
bool Palindrom( string tekst ) //Git
{
    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):

C/C++
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ł :)
P-109922
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?
P-109923
Bajaczysko
Temat założony przez niniejszego użytkownika
» 2014-05-14 14:04:11
Ok, przyznaję się teraz do błędu. Poprawiony kod:
C/C++
string SzyfrCezara( int klucz, string T )
{
    int dl = T.length(); //okreœlenie iloœci znaków wyrazu
   
    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ś?
P-109925
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.
P-109927
« 1 »
  Strona 1 z 1