- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
#include<iostream>
#include<clocale>
#include<fstream>
#include<cstring>
using namespace std;
int main()
{
setlocale(LC_ALL,"RUS");
int cnt=0,cnt2=0,cnt3=0,cnt4=0;
int iMax=93;
bool bPassword=1;
char password[6];
char cBuffer[5]="";
char cSymbols[]=",<.>/?;:'|[{]}`~!@#$%^&*()-_=/№0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHILKLMNOPQRSTUVWXYZ";
char cClear[]="";
cout<<"Введите пароль:";
cin>>password;
cout<<"Брать ли в перебор символы?(1 - да , 0 - нет):";
bool bSymbols;
cin>>bSymbols;
cout<<"Брать ли в перебор цифры?(1 - да , 0 - нет):";
bool bNumbers;
cin>>bNumbers;
cout<<"Брать ли в перебор буквы нижнего регистра?(1 - да , 0 - нет):";
bool bDownRegister;
cin>>bDownRegister;
cout<<"Брать ли в перебор буквы верхнего регистра?(1 - да , 0 - нет):";
bool bUpRegister;
cin>>bUpRegister;
while(bPassword)
{
if(!bSymbols){if(cnt>=0&&cnt<31){cnt++;continue;}}
if(!bNumbers){if(cnt>=31&&cnt<41){cnt++;continue;}}
if(!bDownRegister){if(cnt>=31&&cnt<67){cnt++;continue;}}
if(!bUpRegister){if(cnt>=67&&cnt<iMax){cnt++;continue;}}
cBuffer[0]={cSymbols[cnt]};
bPassword=strcmp(password,cBuffer);
cout<<"cBuffer:"<<cBuffer<<endl;
if(bPassword){strcpy(cBuffer,cClear);}
if(cnt==iMax)
{
cnt=0;
while(bPassword)
{
if(!bSymbols){if(cnt>=0&&cnt<31){cnt++;continue;}}
if(!bNumbers){if(cnt>=31&&cnt<41){cnt++;continue;}}
if(!bDownRegister){if(cnt>=31&&cnt<67){cnt++;continue;}}
if(!bUpRegister){if(cnt>=67&&cnt<iMax){cnt++;continue;}}
if(!bSymbols){if(cnt2>=0&&cnt2<31){cnt2++;continue;}}
if(!bNumbers){if(cnt2>=31&&cnt2<41){cnt2++;continue;}}
if(!bDownRegister){if(cnt2>=31&&cnt2<67){cnt2++;continue;}}
if(!bUpRegister){if(cnt2>=67&&cnt2<iMax){cnt2++;continue;}}
cBuffer[0]={cSymbols[cnt2]};
cBuffer[1]={cSymbols[cnt]};
bPassword=strcmp(password,cBuffer);
cout<<"cBuffer:"<<cBuffer<<endl;
if(bPassword){strcpy(cBuffer,cClear);}
if(cnt2==iMax&&cnt==iMax)
{
cnt2=0;
cnt=0;
while(bPassword)
{
if(!bSymbols){if(cnt>=0&&cnt<31){cnt++;continue;}}
if(!bNumbers){if(cnt>=31&&cnt<41){cnt++;continue;}}
if(!bDownRegister){if(cnt>=31&&cnt<67){cnt++;continue;}}
if(!bUpRegister){if(cnt>=67&&cnt<iMax){cnt++;continue;}}
if(!bSymbols){if(cnt2>=0&&cnt2<31){cnt2++;continue;}}
if(!bNumbers){if(cnt2>=31&&cnt2<41){cnt2++;continue;}}
if(!bDownRegister){if(cnt2>=31&&cnt2<67){cnt2++;continue;}}
if(!bUpRegister){if(cnt2>=67&&cnt2<iMax){cnt2++;continue;}}
if(!bSymbols){if(cnt3>=0&&cnt3<31){cnt3++;continue;}}
if(!bNumbers){if(cnt3>=31&&cnt3<41){cnt3++;continue;}}
if(!bDownRegister){if(cnt3>=31&&cnt3<67){cnt3++;continue;}}
if(!bUpRegister){if(cnt3>=67&&cnt3<iMax){cnt3++;continue;}}
cBuffer[0]={cSymbols[cnt3]};
cBuffer[1]={cSymbols[cnt2]};
cBuffer[2]={cSymbols[cnt]};
bPassword=strcmp(password,cBuffer);
cout<<"cBuffer:"<<cBuffer<<endl;
if(bPassword){strcpy(cBuffer,cClear);}
if(cnt3>=iMax&&cnt2>=iMax&&cnt>=iMax)
{
cnt3=0;
cnt2=0;
cnt=0;
while(bPassword)
{
if(!bSymbols){if(cnt>=0&&cnt<31){cnt++;continue;}}
if(!bNumbers){if(cnt>=31&&cnt<41){cnt++;continue;}}
if(!bDownRegister){if(cnt>=31&&cnt<67){cnt++;continue;}}
if(!bUpRegister){if(cnt>=67&&cnt<iMax){cnt++;continue;}}
if(!bSymbols){if(cnt2>=0&&cnt2<31){cnt2++;continue;}}
if(!bNumbers){if(cnt2>=31&&cnt2<41){cnt2++;continue;}}
if(!bDownRegister){if(cnt2>=31&&cnt2<67){cnt2++;continue;}}
if(!bUpRegister){if(cnt2>=67&&cnt2<iMax){cnt2++;continue;}}
if(!bSymbols){if(cnt3>=0&&cnt3<31){cnt3++;continue;}}
if(!bNumbers){if(cnt3>=31&&cnt3<41){cnt3++;continue;}}
if(!bDownRegister){if(cnt3>=31&&cnt3<67){cnt3++;continue;}}
if(!bUpRegister){if(cnt3>=67&&cnt3<iMax){cnt3++;continue;}}
P.S. Сам код тоже писался не без применения грубой силы...
P.S.: Если меня накормят говном - я пойму.
P.S. Такая прямолинейность напоминает работу системы "Антиплагиат". Это даже смешнее, чем ЕГЭ, поскольку задачки для ЕГЭ хотя бы люди придумывали. А тут пишешь диплом, скажем, на тему поэзии Пушкина, а в заимствованиях получаешь документы по сравнительной зообиологии жидорептилоидов из-за титульного листа или какого-нибудь научного оборота вроде "Рассмотрим ротор ротора магнитного поля вытянутого плавославного цилиндра размером в один ямб".
про жабу - я тут доклад человека слушал и он сказал что final делает из класса подобие структуры(?!) а так же что в жабе 4 основных вида объектов. Можете пояснить?
Алокация на стеке.
Но escape-анализ и без final так умеет, просто немутабельные объекты проще дуплить. Ты ж любитель хаскилов всяких.
Зачем он нужен?
Непонятно конечно кого ты слушал, что он говорил, и как ты это понял.
Возможно речь шла о том что можно поля наружу выставлять, без геттеров, если он финальные.
Ну если не считать, что нельзя наследоваться, да, тут аналогия полная
А вот это уже очень маловероятно. Как минимум из-за null'а. Ну и из-за наследования (если класс не final, то вместо него всегда могут подсунуть его потомка).
И всё, больше ничего не сказал человек? Критерий деления не упомянул, весь список не огласил?
А еще первый слайд хвастал надписью "правило номер 0 - не ЯВА, а ДЖАВА", на что препод спросил "а жабой можно называть?"
у меня вообще сложилось впечатления, что я через .Net знаю о жабе больше, чем докладчик.
Вот именно, что нахуй.
А у Добби уже есть работа? Или Добби только целыми днями ест борщи?
Проверять еду Царя на наличие ядов - тоже работа.
работа дураков любит
Х.з., если честно, о чем он.
Есть вероятность, что он делит их на обычные, вложенные static/не static классы и анонимные. Как раз 4 получается.
P.S. Ты же доклад слушал, тебе лучше знать...
Количество возможных группировок - семь-восемь. Что происходит, когда пользователь выбирает больше пяти? Его вежливым языком отправляют нахер, предлагая выбрать любые, но не более пяти.
С человеческим лицом. (q)