10 / 10 / 1
Регистрация: 18.03.2010
Сообщений: 142
1

Почему не взяли на обучение в CQG, на сайте нашел испытательное задание, сделал и отослал. Не взяли и не объяснили почему. Хочу услышать мнения.

10.10.2011, 16:16. Показов 2064. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
/ Программа получает на вход текстовый файл и расшифровывает его первую строчку получая ключ.
//



C++
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#include "stdafx.h"
//Запрещенные биграммы, т.е. для буквы А запрещено Q и т.д. Биграммы взяты из книги А.П.Алферов "Основы криптографии". это быиграммы запрещены для литературно текста. 
char A[1]={'Q'};
char B[15]={'B','C','D','F','G','H','K','M','N','P','Q','V','W','X','Z'};//запрещенные биграммы вида: 'BB' и т.д.
char C[11]={ 'B', 'F', 'G', 'J', 'N', 'Q',  'S', 'V', 'W', 'X','Z'};
char D[4]={  'J', 'Q',  'X', 'Z'};
char E[1]={'Z'};
char F[2]={'K','Z'};
char G[5]={'J','K','V','X','Z'};
char H[8]={'D','J','K','L','V','X','Z','Q'};
char I[4]={'I','J','W','Y'};
char J[21]={ 'B', 'C', 'D',  'F', 'G', 'H',  'J', 'K', 'L', 'M', 'N', 'P','Q', 'R', 'S', 'T',  'V', 'W', 'X', 'Y','Z'};
char K[18]={ 'B', 'C', 'D',  'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M','P','Q', 'R',  'V', 'W', 'X', 'Z'};
char L[3]={'V','X','Z'};
char M[9]={'D','F','G','J','K','L','V','X','Z'};
char N[1]={'Z'};
char O[4]={'J','K','Q','X'};
char P[12]={ 'C', 'D',  'F', 'G',  'J', 'K',  'N', 'Q',  'V', 'W',  'Y','Z'};
char Q[25]={'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P','Q', 'R', 'S', 'T',  'V', 'W', 'X', 'Y','Z'};
char R[3]={'Q','X','Z'};
char S[3]={'K','X','Z'};
char T[4]={'K','Q','X','Z'};
char U[7]={'H','J','U','W','X','Y','Z'};
char V[20]={ 'B', 'C',  'F', 'G', 'H',  'J', 'K', 'L', 'M', 'N',  'P','Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Z'};
char W[13]={'D','F','G','J','K','P','Q','R','U','V','X','Y','Z'};
char X[18]={ 'B',  'D', 'E',  'G', 'H',  'J', 'K', 'L', 'M', 'N', 'Q', 'R', 'S',  'U', 'V',  'X', 'Y','Z'};
char Y[7]={'J','K','U','V','X','Y','Z'};
char Z[24]={ 'B', 'C', 'D', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P','Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z'};             
//Английский алфавит
char EngAlphabet[26]={'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P','Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z'};
int Search1(char KOL[],int n);//функция предназначенная для отбрасывания неправильных переводов
int Search(char m);//функция для поиска индекса буквы в ангийском алфавите
int Search2(char k[], char n,int m);//функция поиска запрещеных биграм, если биграмма запрещена возвращает 1
void main()
{
        
                
        string name;//название файла
        cout<<"Enter name file"<<endl;
        cin>>name;
        FILE * shifr;
    char str[100000];
        shifr = fopen (name.c_str() , "r");
        if (shifr != NULL) //если файл открылся
        {
                fgets(str,sizeof(str),shifr); 
        
     }
        else
        {
                cout<<"File not open"<<endl;
        }
        
         
         for(int i=0;str[i];i++)
        {
                str[i]=toupper(str[i]);//преводим в верхний регистр
        }
         int n=strlen(str);
         char *rashifr=new char[n];//массив для расшифрованного текста
        for(int k=1;k<26;k++)//перебираем все возможные ключи
         {
                 for(unsigned int i=0;i<strlen(str);i++)//расшифровываем текст с ключем к
                 {
                         if(str[i]>='A'&&str[i]<='Z')
                         {
                                 int h=Search(str[i]);
                                 if(h-k<0)h+=26;
                                 int num=(h-k)%26;
                                 
                                 rashifr[i]=EngAlphabet[num];
                                 
 
                         }
                         else
                         {
                                 rashifr[i]=str[i];
                         }
                        
                 
                
                 }
                 
                if(Search1(rashifr,n)==0)//если запрещенных биграмм нет то функция возвратит 0
                {
                        cout<<"Possible variant:"<<endl;
                         for(unsigned int i=0;i<n;i++)
                                cout<<rashifr[i];//расшифровка не имеющая запрещенных биграмм
                         
                         cout<<"Key:"<<k<<endl;//возможный ключ
                }
        }
}
        
         int Search(char m)
         {
                 for(int i=0;i<26;i++)
                 {
                         if(m==EngAlphabet[i])
                         {
                                 return i;//возвращает индекс буквы m в английском алфавите
                         }
                        }
                 return -1;
         }
         int Search2(char k[], char n,int m)
         {
                
                 for(unsigned int i=0;i<m;i++)
                 {
                         if(n==k[i])//если запрещенная биграмма найдена
                         {
                                 return 1;
 
                         }
                         
                 }
                 return 0;
 
         }
         
         int Search1(char KOL[],int n)
         {
                 
                 
                        int f=0;
                 int m=0;
                 for(int i=0;i<n;i+=2)//начинаем просматривать расшифровку по биграммам
                 {
                        
                        
                        if(KOL[i+1]!=' '||KOL[i+1]!='_'||KOL[i+1]!=','||KOL[i+1]!='.'||KOL[i+1]!='?'||KOL[i+1]!='!'){//если вторая буква в биграмме не . или не , или не ! или не ? или не _
                        char name=KOL[i];//название массива
                        
                        switch(name)
                        {
                        case 'A':m=1; if(Search2(A,KOL[i+1],m)>0){f++;} break;//если в массиве А найдена запрещенная биграмма прибавляем f;
                                case 'B': m=15;if(Search2(B,KOL[i+1],m)>0){f++;} break;
                                        case 'C': m=11;if(Search2(C,KOL[i+1],m)>0){f++;}break;
                                                case 'D':m=4; if(Search2(D,KOL[i+1],m)>0){f++;}break;
                                                        case 'E':m=1; if(Search2(E,KOL[i+1],m)>0){f++;}break;
                                                                case 'F':m=2; if(Search2(F,KOL[i+1],m)>0){f++;}break;
                                                                        case 'G':m=5; if(Search2(G,KOL[i+1],m)>0){f++;} break;
                                                                                case 'I':m=4;if(Search2(I,KOL[i+1],m)>0){f++;} break;
                                                                                        case 'J':m=21;if(Search2(J,KOL[i+1],m)>0){f++;} break;
                                                                                                case 'H':m=8; if(Search2(H,KOL[i+1],m)>0){f++;;}break;
                        
                        case 'K':m=18; if(Search2(K,KOL[i+1],m)>0){f++;}break;
                                case 'L':m=3; if(Search2(L,KOL[i+1],m)>0){f++;}break;
                                        case 'M':m=9; if(Search2(M,KOL[i+1],m)>0){f++;}break;
                                                case 'N':m=1; if(Search2(N,KOL[i+1],m)>0){f++;}break;
                                                        case 'O':m=4; if(Search2(O,KOL[i+1],m)>0){f++;}break;
                                        
                        case 'P':m=12; if(Search2(P,KOL[i+1],m)>0){f++;}break;
                        case 'Q':m=25; if(Search2(Q,KOL[i+1],m)>0){f++;}break;
                                case 'R':m=3; if(Search2(R,KOL[i+1],m)>0){f++;}break;
                                        case 'S':m=3; if(Search2(S,KOL[i+1],m)>0){f++;}break;
                                                case 'T':m=4; if(Search2(T,KOL[i+1],m)>0){f++;}break;
                                                        case 'U':m=7; if(Search2(U,KOL[i+1],m)>0){f++;}break;
                                                                case 'V':m=20; if(Search2(V,KOL[i+1],m)>0){f++;}break;
                                                                        case 'W':m=13; if(Search2(W,KOL[i+1],m)>0){f++;}break;
                        case 'X':m=18; if(Search2(X,KOL[i+1],m)>0){f++;}break;
                                case 'Y':m=7; if(Search2(Y,KOL[i+1],m)>0){f++;}break;
                                        case 'Z':m=24; if(Search2(Z,KOL[i+1],m)>0){f++;}break;
                        }
 
                        }
                 }
                return f;//возвращаем количество запрещенных биграм, если таковых нет фозвращаем 0
         }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2011, 16:16
Ответы с готовыми решениями:

Дали тест : Хочу чтобы взяли на работу
Предоставьте задачу в нормальном (текстовом) виде.

Создал калькулятор, хочу услышать мнения
Всем привет. Мне было поставлено задание создать калькулятор, банальное задание но все же,...

Хочу услышать Ваши мнения о данной сборке
Доброго времени суток! Планирую собрать комп на след. Комплектующих: Корпус- corsair graphite...

Хочу заказать системник, хотел бы услышать мнения о комплектующих
Решил заказать новый системник, с учетом немного поразгонять в будущем, и дальнейшего апгрейда...

17
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
10.10.2011, 16:29 2
Цитата Сообщение от nikola166 Посмотреть сообщение
#include "stdafx.h"
Ух ты, намертво к студии привязываем?
Цитата Сообщение от nikola166 Посмотреть сообщение
int Search1(char KOL[],int n);//функция предназначенная для отбрасывания неправильных переводов
int Search(char m);//функция для поиска индекса буквы в ангийском алфавите
int Search2(char k[], char n,int m);//функция поиска запрещеных биграм, если биграмма запрещена возвращает 1
Название функции должно говорить за себя, а не комментарий.
Цитата Сообщение от nikola166 Посмотреть сообщение
cout<<"Enter name file"<<endl;
Английский хромает?
Цитата Сообщение от nikola166 Посмотреть сообщение
cin>>name;
FILE * shifr;
А почему в коде С++ используются сишные структуры для работы с файлами, где потоки?
Цитата Сообщение от nikola166 Посмотреть сообщение
char str[100000];
Нехило ты со стеком работаешь с размахом...
Цитата Сообщение от nikola166 Посмотреть сообщение
if (shifr != NULL) //если файл открылся
{
fgets(str,sizeof(str),shifr);
}
else
{
cout<<"File not open"<<endl;
}
проверку в функцию с говорящим названием (если так сильно хочется откомментить свою строчку), во-вторых, у тебя файл не открылся, но ты вывел сообщение и пошел дальше программу выполнять, как будто ниче не было... Ладно бы еще сообщение было правильное. Если языка на знаешь, то зачем выпендриваться? А если выпендриваешься, то почему комментарии на русском?

P. S. дальше смотреть не хочется, скучно...
1
10 / 10 / 1
Регистрация: 18.03.2010
Сообщений: 142
10.10.2011, 17:19  [ТС] 3
не выпендривался я не перед кем
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
10.10.2011, 17:25 4
Цитата Сообщение от nikola166 Посмотреть сообщение
не выпендривался я не перед кем
ну а в чем тогда смысл писать по-английски, когда коменты в проге на русском?
0
10 / 10 / 1
Регистрация: 18.03.2010
Сообщений: 142
10.10.2011, 17:32  [ТС] 5
просто не задумывался даже над этим
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
10.10.2011, 17:35 6
Цитата Сообщение от nikola166 Посмотреть сообщение
просто не задумывался даже над этим
Вот ты не задумывался, а читающему в глаза сразу бросается. Что человек:
1. Плохо знает английский
2. Он не знает о том, что плохо его знает, раз на нем пишет.

И вот все как-то так печально сложилось...
0
10 / 10 / 1
Регистрация: 18.03.2010
Сообщений: 142
10.10.2011, 17:40  [ТС] 7
спасибо за информацию

Добавлено через 17 секунд
больше такой ошибки точно не повторю
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
11.10.2011, 09:56 8
Цитата Сообщение от nikola166
C++
1
2
3
4
5
6
7
8
9
10
                 case 'A':m=1; if(Search2(A,KOL[i+1],m)>0){f++;} break;//если в массиве А найдена запрещенная биграмма прибавляем f;
                                case 'B': m=15;if(Search2(B,KOL[i+1],m)>0){f++;} break;
                                        case 'C': m=11;if(Search2(C,KOL[i+1],m)>0){f++;}break;
                                                case 'D':m=4; if(Search2(D,KOL[i+1],m)>0){f++;}break;
                                                        case 'E':m=1; if(Search2(E,KOL[i+1],m)>0){f++;}break;
                                                                case 'F':m=2; if(Search2(F,KOL[i+1],m)>0){f++;}break;
                                                                        case 'G':m=5; if(Search2(G,KOL[i+1],m)>0){f++;} break;
                                                                                case 'I':m=4;if(Search2(I,KOL[i+1],m)>0){f++;} break;
                                                                                        case 'J':m=21;if(Search2(J,KOL[i+1],m)>0){f++;} break;
                                                                                                case 'H':m=8; if(Search2(H,KOL[i+1],m)>0){f++;;}break;
неясный код:
- однострочные конструкции - мешают отладке
- слипшиеся операции - этопростонечитаемотаккакнепонятночтокчемуотноситсяачтокчемунеотносится
- копипаст - это можно записать гораздо компактнее
в общем, хорошая среда для размножения ошибок
1
10 / 10 / 1
Регистрация: 18.03.2010
Сообщений: 142
11.10.2011, 11:39  [ТС] 9
спасибо огромное за информацию, приму к сведению
0
CMETAHA
11.10.2011, 15:59 10
Цитата Сообщение от Vourhey Посмотреть сообщение
Ух ты, намертво к студии привязываем?
Да. Там сказано использовать именно её.


nikola166, Из Самары? Меня взяли. Решал эту же задачу. Вот код если интересно:

C++
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
#include "stdafx.h"
#include <string>
#include <iostream>
#include <algorithm>
#include <map>
#include <fstream>
 
using namespace std;
 
string ApplyShift(string String, int Shift)//Создаёт новую строку с указанным сдвигом
{
    string Str_result = "";
    for (int i = 0; i < String.size(); i++)
    {
        char c = String[i];
        switch (c)
        {
        case ' ': case '.': case ',': case '!': case '?': case ':': case ';': case '-': Str_result += c; break;
        case '0..9': Str_result += c; break;
        default:
            c += (char)Shift;
            if (c > 'Z') c -= (char)26;
            Str_result += c;
        }
    }
    return Str_result;
}
 
bool IsVowel(char Letter)
{
    return (Letter == 'A') || (Letter == 'E') || (Letter == 'I') || (Letter == 'O') || (Letter == 'U');
}
 
double Relevance(string String)//Определяет релевантность слова
{
    bool CurrentIsVowel;
    bool PreviousIsVowel = IsVowel(String[0]);
    double Result = 1.0;//Начальная релевантность
    for (int i = 1; i < String.size(); i++)
    {
        if(String[i] != ' ')
        {
            CurrentIsVowel = IsVowel(String[i]);
            //Если тип звука, подряд идущих букв, совпадает, то уменьшаем релевантность
            if (CurrentIsVowel == PreviousIsVowel)
                Result *= (PreviousIsVowel ? 0.75 : 0.5);
            else
                PreviousIsVowel = CurrentIsVowel;
        }
    }
    return Result;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    ifstream iFile;
    iFile.open(argv[1]);
    string String;
    iFile.unsetf(ios::skipws);
    char temp;
    while(iFile >> temp)
    {
        String += temp;
    }
    String.push_back(' ');//Пробел в конце - для удобства
    transform(String.begin(),String.end(),String.begin(),toupper);
    map<string, double> StringAndRel;//Ключ - строка, данные - релевантность
    string DopString;//Дополнительная переменная
    for(int i = 0; i < 26; i++)
    {
        DopString = ApplyShift(String,i);
        StringAndRel[DopString] = Relevance(DopString);
    }
    double variable = 0;
    //Выбираем строку с максимальной релевантностью
    for(map<string, double>::iterator Iter = StringAndRel.begin(); Iter != StringAndRel.end(); Iter++)
    {
        if((*Iter).second > variable)
        {
            variable = (*Iter).second;
            DopString = (*Iter).first;
        }
 
    }
    iFile.close();
    cout << DopString << endl;
    return 0;
}
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
11.10.2011, 16:53 11
Цитата Сообщение от CMETAHA Посмотреть сообщение
case '0..9':
Извиняюсь, а это как? Или это не чистый С++?
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
11.10.2011, 19:19 12
Можно условие задачи полностью? Просто интересно.
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
11.10.2011, 22:23 13
nikola166, исходник даже смотреть противно, не то чтобы его проверять.

Добавлено через 16 секунд
Цитата Сообщение от Deviaphan Посмотреть сообщение
Извиняюсь, а это как? Или это не чистый С++?
Это нормально.

Добавлено через 1 минуту
Хотя нет, нормально было бы так:
C
1
case '0'...'9':
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.10.2011, 02:15 14
Цитата Сообщение от fasked
Хотя нет, нормально было бы так:
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main(void)
{
    switch ('m') {
        case 'a' ... 'z':
            printf("1\n");
            break;
    }
    return 0;
}
Код
[guest@localhost tests]$ gcc -Wall -pedantic -std=c99 t.c -o t
t.c: В функции ‘main’:
t.c:7:9: предупреждение: диапазоны в операторе switch не поддерживаются ISO C
[guest@localhost tests]$ ./t
1
[guest@localhost tests]$
0
CMETAHA
12.10.2011, 09:55 15
Цитата Сообщение от Deviaphan Посмотреть сообщение
Извиняюсь, а это как? Или это не чистый С++?
Ой. Извините. Это черновик. Конечно же там
C++
1
case '0': case '1': case '2' и т.д.
Цитата Сообщение от fasked Посмотреть сообщение
Хотя нет, нормально было бы так:
У меня тоже такой вариант не работает.

Цитата Сообщение от Kastaneda Посмотреть сообщение
Можно условие задачи полностью? Просто интересно.
Конечно можно. Программа получает через параметр командной строки название текстового файла в котором содержится зашифрованная шифром Цезаря строка. Необходимо вывести на экран исходную строку на литературном английском.

АПД.: nikola166, ты не использовал STL. Для CQG это критично. Они даже очень хорошие решения без STL забраковывали.
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
12.10.2011, 10:35 16
accept, http://liveworkspace.org/code/... 93dee77dc3
Хотя по стандарту действительно не поддерживаются.
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
12.10.2011, 10:41 17
Цитата Сообщение от ForEveR Посмотреть сообщение
Хотя по стандарту действительно не поддерживаются.
Даже не знаю, хорошо это или нет. Есть стойкое предубеждение против такого оператора.)
0
10 / 10 / 1
Регистрация: 18.03.2010
Сообщений: 142
12.10.2011, 10:57  [ТС] 18
из Самары
0
12.10.2011, 10:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2011, 10:57
Помогаю со студенческими работами здесь

Хочу услышать мнения опытных людей по SEO 2018-2019 года
Вопрос назрел потому, что я уже как полгода запустил сайт, перечитал кучу статей про SЕО , которые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru