Szyfrowanie podane z klawiatury
Started by GrandDerby, 05 Dec 2011 18:18
9 replies to this topic
#1
Posted 05 December 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
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
Posted 05 December 2011 - 20:05
1.
EDIT: Sorki za duble ale filtr nie przepuszcza mi kodu, rozpoznaje zbyt dużo emotikon
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
Posted 05 December 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; }
#4
Posted 05 December 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; }
#5
Posted 05 December 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
#6
Posted 06 December 2011 - 17:46
a można go skleić ? Aby był jeden cały program, a nie podzielony na na 4 cześći?
#7
Posted 06 December 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.
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
Posted 06 December 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
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
Posted 07 December 2011 - 09:22
Okk.. Zrobiłem. Dziękuje bardzo
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users