Archiwum kategorii 'Klasyka'

ROT13

Chyba każdenu programującemu znany jest ten trywialny algorytm szyfrujący, ale na wszelki wypadek poniżej kod w C gdyby ktoś nie…

#include <stdio.h>
#include <string.h>

int main (int argc, char* argv[]) {
 int i = 0;
 for (i = 0; i != strlen (argv[1]); ++i) {
 char *c = &argv[1][i];
 if (!isalpha(*c))
 continue;

 if (*c  'Z'|| (*c) + 13 > 'z')
 (*c) -= 26;
 (*c) += 13;
 }
 printf ("%s\n", argv[1]);    
 return 0;
}

lub ciekawsza implementacja, nie mojego autorstwa, pochodząca całego zbioru implementacji tego algorytmu w różnych językach:

int main ()
{
 register char byte, cap;
 for(;read (0, &byte, 1);)
 {
 cap = byte & 32;
 byte &= ~cap;
 byte = ((byte >= 'A') && (byte <= 'Z') ? ((byte - 'A' + 13) % 26 + 'A') : byte) | cap;
 write (1, &byte, 1);
 }
}

Dywan Sierpińskiego

Może przytoczę fragment Wikipedii:

Dywan Sierpińskiego to fraktal otrzymany z kwadratu za pomocą podzielenia go na dziewięć (3×3) mniejszych kwadratów, usunięcia środkowego kwadratu i ponownego rekurencyjnego zastosowania tej samej procedury do każdego z pozostałych ośmiu kwadratów.

Poniżej prezentuje owoce prac powstałych z chwilowego “natchnienia” do grafiki: program napisany przy użyciu bibliotek Gtkmm (interface) i Cairo (rysowanie) w C++ generujący krzywą (sic!) nazywaną “Dywanem Sierpińskiego” – na cześć polskiego matematyka, Wacława Sierpińskiego.

Programik powstał w jedna nockę i 1/5 przedpołudnia, z czego większość kodu to interface… Co do algorytmu plecenia dywanu to jest on autorstwa własnego, między innymi stąd ta pewna niedokładność. W planach mam dodanie kilku funkcjonalności podrzuconych mi przez pewną osobę. Poniżej prezentuje kilka screenów:

Poza sesją: Najlepsze jest to że pole tego fraktala wynosi 0…

Pobierz kod źródłowy (z chomikuj.pl)

Wartość liczby w systemie dziesiętnym

Kod źródłowy programu przeliczającego wartość podaną w systemie o danej podstawie (największa cyfra to ‘Z’) , na wartość w systemie dziesiętnym wg. schematu Hornera, napisany w C++. Może komuś się przyda na jakieś zaliczenie albo coś…

Pobierz kod źródłowy (na chomikuj.pl)

Trójkąt Pascala

Kod programu rysującego trójkąt Pascala o podanej liczbie wierszy, nie większej od 12. Ograniczenie wynikające z kwestii estetyki, gdyż dla większej liczby wierszy trójkąt nie wygląda jak trójkąt. Choć program poprawnie liczy kolejne elementy n-tego wiersza.

program TrojkatPascala;

uses
    Crt;

var
    i,j, n : integer;
    Wiersz : array[0..12] of integer;

begin
    WriteLn('Podaj liczbe rzedów');
    ReadLn(n); //Wczytujemy liczbe wierszy
    if n > 12 then halt;
     ClrScr;
    for i := 0 to n do
        begin
            Wiersz[i] := 1;
            for j := i - 1 downto 0 do //Liczymy kolejne elementy wiersza :)
                begin
                    Wiersz[j] += Wiersz[j - 1];
                end;

            GoToXY((n - i) * 2, WhereY)    ; //Przesuniecie wzgledem wierzcholka
            for j := 0 to i do
                begin
                    Write(Wiersz[j]:3, ' '); //Wypisujemy kolejne elementy
                end;
            WriteLn;
        end;
end.