Skocz do zawartości


Zdjęcie

Szyfrowanie podane z klawiatury


  • Zaloguj się, aby dodać odpowiedź
9 odpowiedzi w tym temacie

#1 GrandDerby

GrandDerby
  • Użytkownicy
  • 11 postów

Napisano 05 grudzień 2011 - 18:18

Proszę bardzo o pomoc.:) Będę bardzo wdzięczny.

Napisz program który szyfruje podany z klawiatury ciąg znaków:
1.Odwracając je (ROBERT - > TREBOR)
2. Podstawia zamiast liter liczby (a-1, b-2, c-3 itd.)
3.Przesówa wszystko o 3 litery w prawo (nie wiem o co chodzi ale tak nam podał)
4. Zmienia podany ciąg znaków (czyli podpunkt 2 w tym ma być) na system dwójkowy (tak mi sie wydaje choc pewny nie jestem czy wyraz np robert przerobi sie na system dwojkowy)
Ma być zrobiony najprościej jak się da,
Opisana każda linijka (nie jestem zbyt kumaty) oraz tylko z bibliotekami (iostream, iostream.h, conio.h) innych nie mieliśmy
Praca na środe :) mile widziana pomoc :):)
  • 0


#2 magik092

magik092
  • Użytkownicy
  • 1555 postów

Napisano 05 grudzień 2011 - 20:05

1.
int main(int argc, char *argv[])// inicjacja Dev C++, zależna od kompilatora
{ 
    string ciag; // zdefiniuj string
    char tmp; //    zdefiniuj zmienną pomocniczą
    while((tmp = getchar())!='\n')
            ciag = ciag + tmp; // przypisuję do stringu kolejne znaki z klawiatury, unikamy błędów typu, np. wprowadzanie spacji
    for(int i=ciag.size()-1;i>=0;i--)
            cout << ciag[i] <img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' /> // drukuj kolejno odwrócony ciąg
    cout << "\n"<img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' />
    system("PAUSE") <img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' />
    return EXIT_SUCCESS;
}
Dobrze czasami rozruszać kości :D

EDIT: Sorki za duble ale filtr nie przepuszcza mi kodu, rozpoznaje zbyt dużo emotikon ^^
  • 0

Dołączona grafika


#3 magik092

magik092
  • Użytkownicy
  • 1555 postów

Napisano 05 grudzień 2011 - 20:09

2.
int main(int argc, char *argv[])
{
    string ciag; // zdefiniuj string
    char tmp; //    zdefiniuj zmienną pomocniczą
    while((tmp = getchar())!='\n')
    {// przypisuję do stringu kolejne znaki z klawiatury, unikamy błędów typu, np. wprowadzanie spacji
            if(tmp == 'a')
                   ciag = ciag + '1'<img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' /> / a=1
            else if(tmp == 'b')
                   ciag = ciag + '2'<img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' /> // b=2
            else if(tmp == 'c')
                   ciag = ciag + '3'<img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' /> // c=3
            else if(tmp == 'd')
                   ciag = ciag + '4'<img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' /> // d=4
            else
                   ciag = ciag + tmp <img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' />// w innym przypadku przepisz znak
    }
    cout << ciag; // drukuj ciąg
    cout << "\n"<img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' />
    system("PAUSE") <img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' />
    return EXIT_SUCCESS;
}

  • 0

Dołączona grafika


#4 magik092

magik092
  • Użytkownicy
  • 1555 postów

Napisano 05 grudzień 2011 - 20:09

3.
int main(int argc, char *argv[])
{
    string ciag; // zdefiniuj string
    char tmp; //    zdefiniuj zmienną pomocniczą
    int przesuniecie = 0;
    while((tmp = getchar())!='\n')
    {// przypisuję do stringu kolejne znaki z klawiatury, unikamy błędów typu, np. wprowadzanie spacji
    //      korzystamy z faktu, że A = 65, Z = 90, a = 96, z = 122
            if(tmp<65||tmp>122 || (tmp>90&&tmp<96))// pozostaw tylko litery (w razie liczb przepuścić też od 47 do 56, włącznie)
                    continue;
            if(tmp<=90)
                    tmp = 65 + ((tmp - 62) % 26) <img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' /> // dla dużych liter zwiększ liczbę o (numer znaku - 62) <- daje przesunięcie o 3 ale modulo 26, nie przekroczy tablicy
            else
                    tmp = 96 + ((tmp - 93) % 26) <img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' /> // dla dużych liter zwiększ liczbę o (numer znaku - 93) <- daje przesunięcie o 3 ale modulo 26, nie przekroczy tablicy
            ciag = ciag + tmp;
    }
    cout << ciag; // drukuj ciąg
    cout << "\n"<img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' />
    system("PAUSE") <img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' />
    return EXIT_SUCCESS;
}

  • 0

Dołączona grafika


#5 magik092

magik092
  • Użytkownicy
  • 1555 postów

Napisano 05 grudzień 2011 - 20:09

4.
string DecToBin(int decNum) 
{// skrypt zamienia liczbę dziesiętna na binarną, znalezione w sieci
    if (decNum == 0) 
       return ""<img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' /> 
    else if (decNum % 2 == 0) 
         return DecToBin(decNum >> 1) + "0"<img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' /> 
    else 
         return DecToBin(decNum >> 1) + "1"<img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' /> 
} 
int main(int argc, char *argv[])
{
    string ciag; // zdefiniuj string
    char tmp; //    zdefiniuj zmienną pomocniczą
    int przesuniecie = 0;
    while((tmp = getchar())!='\n')
    {// przypisuję do stringu kolejne znaki z klawiatury, unikamy błędów typu, np. wprowadzanie spacji, od razu zamieniam znak na system binarny
            ciag = ciag + DecToBin(tmp) <img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' />
    }
    cout << ciag; // drukuj ciąg, już w postaci binarnej
    cout << "\n"<img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' />
    system("PAUSE") <img src='http://forum.pcfoster.pl/public/style_emoticons/<#EMO_DIR#>/disagree.png' class='bbc_emoticon' alt=';' />
    return EXIT_SUCCESS;
}
Sorki za duble ale filtr nie przepuszcza mi kodu, rozpoznaje zbyt dużo emotikon ^^
  • 0

Dołączona grafika


#6 GrandDerby

GrandDerby
  • Użytkownicy
  • 11 postów

Napisano 06 grudzień 2011 - 17:46

a można go skleić ? Aby był jeden cały program, a nie podzielony na na 4 cześći?
  • 0

#7 Duath

Duath
  • Redaktorzy
  • 2117 postów
  • Lokalizacja404

Napisano 06 grudzień 2011 - 18:05

Oczywiście, że można. Skopiuj sobie kody, które podał Ci magik i spróbuj samemu się pobawić. Poza tym rozumiesz pod pojęciem jeden program? Z możliwością wyboru opcji, co ma robić? Jeśli tak, to zwykła funkcja switch.
  • 0

Intel i5-3570K @ 4.2GHz | ASRock Z77 Extreme4 | Corsair Vengeance LP 16GB | Radeon HD7870 | Samsung 840 Pro 128GB | Samsung F3 1TB | Xonar DG | OCZ ModXStream Pro 500W
 

Duath


#8 magik092

magik092
  • Użytkownicy
  • 1555 postów

Napisano 06 grudzień 2011 - 18:20

Oczywiście, że można :)
To już zostawiam Tobie, kod masz okomentowany, w razie wątpliwości pytaj.
Chyba najłatwiej załatwić to w pętli while(opcja>0) i na końcu pętli prosisz użytkownika by podał opcja, gdy poda 0 to program się kończy, gdy poda 1 to np. szyfr cezara, gdy poda 2 to ... i tak dalej.
Można też stworzyć zewnętrzne funkcje dla każdej metody, możliwości sporo :D
  • 0

Dołączona grafika


#9 GrandDerby

GrandDerby
  • Użytkownicy
  • 11 postów

Napisano 07 grudzień 2011 - 09:22

Okk.. Zrobiłem. Dziękuje bardzo :)
  • 0

#10 jarex_67

jarex_67
  • Użytkownicy
  • 151 postów

Napisano 29 sierpień 2017 - 18:20

Spróbuj tutaj jest fajne szkolenie http://geek-on.pl :)


  • 0


Użytkownicy przeglądający ten temat: 2

0 użytkowników, 2 gości, 0 anonimowych