Szyfrowanie podane z klawiatury
#1
Napisano 05 grudzień 2011 - 18:18
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
#2
Napisano 05 grudzień 2011 - 20:05
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
EDIT: Sorki za duble ale filtr nie przepuszcza mi kodu, rozpoznaje zbyt dużo emotikon
#3
Napisano 05 grudzień 2011 - 20:09
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; }
#4
Napisano 05 grudzień 2011 - 20:09
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; }
#5
Napisano 05 grudzień 2011 - 20:09
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
#6
Napisano 06 grudzień 2011 - 17:46
#7
Napisano 06 grudzień 2011 - 18:05
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
Napisano 06 grudzień 2011 - 18:20
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
#9
Napisano 07 grudzień 2011 - 09:22
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych