Форум программистов, компьютерный форум CyberForum.ru

Оценити плизз!! - C++

Восстановить пароль Регистрация
 
Ilyawow
24 / 24 / 5
Регистрация: 18.11.2011
Сообщений: 266
21.11.2011, 13:46     Оценити плизз!! #1
Вот написал прого для научно иследовательской конференции прога шифрует слова
Оцените пожалуйста
ВОт для компиляторов с настроинным русским языком
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>
void vanword (char str[] ,int str_len)
{ 
     int i,count;
     char str2[123];
     str2[0]=str[0];
     count=1;
    
     for(i=0;i<str_len-1;i++)
     {
                           if(str[i]==' '&& str[i+1]!=' ')
                     {      
                          str2[count]=str[i+1];
                          count++;
                         
                     }
                     
}
str2[count]='\0';
 
 printf ("%s",str2);
}
int random(int N)
{
    return rand()%N;
}
 
void bukva (char str[],int str_len)
{
int i,c;
srand(time(NULL));
for(i=0;i<str_len;i++)
{
  c=random(10);
  if(c==0)
  printf("%ch7fu ",str[i]);
  if(c==1)
  printf("%cT·¦ ",str[i]);
  if(c==2)
  printf("%c#*jd ",str[i]);
  if(c==3)
  printf("%ch$@ ",str[i]);
  if(c==4)
  printf("%ch7fu ",str[i]);
  if(c==5)
  printf("%cy() ",str[i]);
  if(c==6)
  printf("%c8ek ",str[i]);
  if(c==7)
  printf("%c:;85 ",str[i]);
  if(c==8)
  printf("%cVєd ",str[i]);
  if(c==9)
  printf("%c&! ",str[i]);
  if(c==10)
  printf("%c*=+ ",str[i]);
}
}
void zikldo (char str[],int str_len)
{    int s,i;
     char n;
    
      
     if(str_len%2!=0)
{
     for(s=1;s<=(str_len/2)+1;s++)
              {  
              n=str[str_len-1];
              for(i=str_len-1;i>=0;i--)
              {str[i]=str[i-1];
              }
               str[0]=n;
              }
}
else
{
    for(s=1;s<=str_len/2;s++)
              {  n=str[str_len-1];
              for(i=str_len-1;i>=0;i--)
              {str[i]=str[i-1];
              }
               str[0]=n;
              }
              }
    printf("\nReversed: %s\n", str);
}
 
 
 
 
void invezikl (char str[],int str_len)
{
     int i,c,s,n;
      
      for (i = 0; i < (str_len / 2); i++) // метод инверсии
    {
        c = str[i];
        str[i] = str[str_len - 1 - i];
        str[str_len - 1 - i] = c;
    }
      for(s=1;s<=str_len/2;s++)
              {  n=str[str_len-1];
              for(i=str_len-1;i>=0;i--)
              {str[i]=str[i-1];
              }
               str[0]=n;
              }
              puts(str);
              }
              
              
              
              
              
              
              
void zikl (char str[],int str_len)
{
     int i,s,n;
    
     
      for(s=1;s<=str_len/2;s++)
              {  n=str[str_len-1];
              for(i=str_len-1;i>=0;i--)
              {str[i]=str[i-1];
              }
               str[0]=n;
               }
               puts(str);
               }
               
               
               
               
               
               
               
void morza(char str[],int str_len)
{
     int i;
  
     
       for(i=0;i<str_len;i++)
   {
   switch(str[i])
   {
                  case 'а':printf(".-\n"); break;
                  case 'б':printf("-...\n");break;
                  case 'в':printf(".--\n");break;
                  case 'г':printf("--.\n");break;
                  case 'д':printf("-..\n");break;
                  case 'е':printf(".\n");break;
                  case 'ж':printf("...-\n");break;
                  case 'з':printf("--..\n");break;
                  case 'и':printf("..\n");break;
                  case 'й':printf(".---\n");break;
                  case 'к':printf("-.-\n");break;
                  case 'л':printf(".-..\n");break;
                  case 'м':printf("--\n");break;
                  case 'н':printf("-.\n");break;
                  case 'о':printf("---\n");break;
                  case 'п':printf(".--.\n");break;
                  case 'р':printf(".-.\n");break;
                  case 'с':printf("...\n");break;
                  case 'т':printf("-\n");break;
                  case 'у':printf("..-\n");break;
                  case 'ф':printf("..-.\n");break;
                  case 'х':printf("....\n");break;
                  case 'ц':printf("-.-.\n");break;
                  case 'ч':printf("---.\n");break;
                  case 'ш':printf("----\n");break;
                  case 'щ':printf("--.-\n");break;
                  case 'ъ':printf(\n");break;
                  case 'ь':printf("-..-\n");break;
                  case 'ы':printf("-.--\n");break;
                  case 'э':printf("..--..\n");break;
                  case 'ю':printf("..--\n");break;
                  case 'я':printf(".-.-\n");break;
                  }
                  }}
                  
                  
                  
                  
                  
                  
                  
   void inversiya (char str[],int str_len)
 
{ int c,i,d;
 
     
         str_len=strlen(str);
 
      for (i = 0; i < (str_len / 2); i++) // метод инверсии
    {
        c = str[i];
        str[i] = str[str_len - 1 - i];
        str[str_len - 1 - i] = c;
        
    }
     printf("Reversed:%s\n",str);
    }
    
    
    
    
    
    
    
    main()
    {
         int str_max_len = 20, str_len, i,b,d,g,f,l;
         char str[str_max_len], c;
         printf ("Для начала нажмите Enter\n");
          while(1){
         while(1)
      {
               switch(getch())
               {
                              case 13:g=13;break;
                              case 49:d=59;break;
                              case 27:return 1;
                              }
 
if(d==59||g==13)break;
} 
if(d==59)system("cls");
printf("1.Инверсия\n2.Цикличиский сдвиг\n3.Инверсия + Цикличиский сдвиг\n4.Азбука Морза\n5.Считывание 1 буквы\n");
         scanf("%d",&b);
         if(b==5){
         printf("1.Шифрование \n2.Дошифрование\n");
         scanf("%d",&l);}
         if(b==2)
         {
         printf("1.Шифрование\n2.Дошифрование\n");
         scanf("%d",&f);
         }
          printf("String:");
      fflush(stdin);//Дело в том, что после работы ф-ции scanf() в буфере ввода остается символ '\n', а ф-ция gets() считывает данные до этого символа. Т.к. она сразу на него натыкается, то создается впечатление, что она не работает, но это не так. Ф-ция fflush() как раз удаляет этот символ из буфера.
          gets(str);  
          str_len=strlen(str);
        
         if(b==1)
         inversiya(str,str_len);
         
         if(f==1)
         zikl(str,str_len);
         if(f==2)
         zikldo(str,str_len);
         
         if(b==3)
         invezikl(str,str_len);
         if(b==4)
         morza(str,str_len);
         if(l==1){
                 bukva(str,str_len);
                 printf("\n");}
                 if(l==2){
                         vanword(str,str_len);
                         printf("\n");}
         
        
         printf("Для выхода - Esc\nДля продолжение - Enter\nДля продолжения и обновления - 1\n");
         }
         }
Вот обычная Версия Примичание:Морзянка не пашет в этой версии.
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>
void vanword (char str[] ,int str_len)
{ 
     int i,count;
     char str2[123];
     str2[0]=str[0];
     count=1;
    
     for(i=0;i<str_len-1;i++)
     {
                           if(str[i]==' '&& str[i+1]!=' ')
                     {      
                          str2[count]=str[i+1];
                          count++;
                         
                     }
                     
}
str2[count]='\0';
 
 printf ("%s",str2);
}
int random(int N)
{
    return rand()%N;
}
 
void bukva (char str[],int str_len)
{
int i,c;
srand(time(NULL));
for(i=0;i<str_len;i++)
{
  c=random(10);
  if(c==0)
  printf("%ch7fu ",str[i]);
  if(c==1)
  printf("%cT·¦ ",str[i]);
  if(c==2)
  printf("%c#*jd ",str[i]);
  if(c==3)
  printf("%ch$@ ",str[i]);
  if(c==4)
  printf("%ch7fu ",str[i]);
  if(c==5)
  printf("%cy() ",str[i]);
  if(c==6)
  printf("%c8ek ",str[i]);
  if(c==7)
  printf("%c:;85 ",str[i]);
  if(c==8)
  printf("%cVєd ",str[i]);
  if(c==9)
  printf("%c&! ",str[i]);
  if(c==10)
  printf("%c*=+ ",str[i]);
}
}
void zikldo (char str[],int str_len)
{    int s,i;
     char n;
    
      
     if(str_len%2!=0)
{
     for(s=1;s<=(str_len/2)+1;s++)
              {  
              n=str[str_len-1];
              for(i=str_len-1;i>=0;i--)
              {str[i]=str[i-1];
              }
               str[0]=n;
              }
}
else
{
    for(s=1;s<=str_len/2;s++)
              {  n=str[str_len-1];
              for(i=str_len-1;i>=0;i--)
              {str[i]=str[i-1];
              }
               str[0]=n;
              }
              }
    printf("\nReversed: %s\n", str);
}
 
 
 
 
void invezikl (char str[],int str_len)
{
     int i,c,s,n;
      
      for (i = 0; i < (str_len / 2); i++) // метод инверсии
    {
        c = str[i];
        str[i] = str[str_len - 1 - i];
        str[str_len - 1 - i] = c;
    }
      for(s=1;s<=str_len/2;s++)
              {  n=str[str_len-1];
              for(i=str_len-1;i>=0;i--)
              {str[i]=str[i-1];
              }
               str[0]=n;
              }
              puts(str);
              }
              
              
              
              
              
              
              
void zikl (char str[],int str_len)
{
     int i,s,n;
    
     
      for(s=1;s<=str_len/2;s++)
              {  n=str[str_len-1];
              for(i=str_len-1;i>=0;i--)
              {str[i]=str[i-1];
              }
               str[0]=n;
               }
               puts(str);
               }
               
               
               
               
               
               
               
void morza(char str[],int str_len)
{
     int i;
  
     
       for(i=0;i<str_len;i++)
   {
   switch(str[i])
   {
                  case 'а':printf(".-\n"); break;
                  case 'б':printf("-...\n");break;
                  case 'в':printf(".--\n");break;
                  case 'г':printf("--.\n");break;
                  case 'д':printf("-..\n");break;
                  case 'е':printf(".\n");break;
                  case 'ж':printf("...-\n");break;
                  case 'з':printf("--..\n");break;
                  case 'и':printf("..\n");break;
                  case 'й':printf(".---\n");break;
                  case 'к':printf("-.-\n");break;
                  case 'л':printf(".-..\n");break;
                  case 'м':printf("--\n");break;
                  case 'н':printf("-.\n");break;
                  case 'о':printf("---\n");break;
                  case 'п':printf(".--.\n");break;
                  case 'р':printf(".-.\n");break;
                  case 'с':printf("...\n");break;
                  case 'т':printf("-\n");break;
                  case 'у':printf("..-\n");break;
                  case 'ф':printf("..-.\n");break;
                  case 'х':printf("....\n");break;
                  case 'ц':printf("-.-.\n");break;
                  case 'ч':printf("---.\n");break;
                  case 'ш':printf("----\n");break;
                  case 'щ':printf("--.-\n");break;
                  case 'ъ':printf(\n");break;
                  case 'ь':printf("-..-\n");break;
                  case 'ы':printf("-.--\n");break;
                  case 'э':printf("..--..\n");break;
                  case 'ю':printf("..--\n");break;
                  case 'я':printf(".-.-\n");break;
                  }
                  }}
                  
                  
                  
                  
                  
                  
                  
   void inversiya (char str[],int str_len)
 
{ int c,i,d;
 
     
         str_len=strlen(str);
 
      for (i = 0; i < (str_len / 2); i++) // метод инверсии
    {
        c = str[i];
        str[i] = str[str_len - 1 - i];
        str[str_len - 1 - i] = c;
        
    }
     printf("Reversed:%s\n",str);
    }
    
    
    
    
    
    
    
    main()
    {
         int str_max_len = 20, str_len, i,b,d,g,f,l;
         char str[str_max_len], c;
         printf ("dlya nacala nazmite Enter\n");
          while(1){
         while(1)
      {
               switch(getch())
               {
                              case 13:g=13;break;
                              case 49:d=59;break;
                              case 27:return 1;
                              }
 
if(d==59||g==13)break;
} 
if(d==59)system("cls");
printf("1.inversiya\n2.zikl\n3.inversiya+zikl\n4.morzyanka\n5.1 bukva\n");
         scanf("%d",&b);
         if(b==5){
         printf("1.hifr\n2.dohifr\n");
         scanf("%d",&l);}
         if(b==2)
         {
         printf("1.ziklhifr\n2.Zikl dohifr\n");
         scanf("%d",&f);
         }
          printf("String:");
      fflush(stdin);//Дело в том, что после работы ф-ции scanf() в буфере ввода остается символ '\n', а ф-ция gets() считывает данные до этого символа. Т.к. она сразу на него натыкается, то создается впечатление, что она не работает, но это не так. Ф-ция fflush() как раз удаляет этот символ из буфера.
          gets(str);  
          str_len=strlen(str);
        
         if(b==1)
         inversiya(str,str_len);
         
         if(f==1)
         zikl(str,str_len);
         if(f==2)
         zikldo(str,str_len);
         
         if(b==3)
         invezikl(str,str_len);
         if(b==4)
         morza(str,str_len);
         if(l==1){
                 bukva(str,str_len);
                 printf("\n");}
                 if(l==2){
                         vanword(str,str_len);
                         printf("\n");}
         
        
         printf("Dlya vihoda - Esc\nDlya prodolzenie - Enter\nDlya prodolzenie i obnovleniya - 1\n");
         }
         }
Жду объективных оценок!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
21.11.2011, 14:21     Оценити плизз!! #2
посчитал кол-во ошибок в сообщении.
смотреть код просто страшно стало.

с наилучшими пожеланиями, собак.
KATbIK
 Аватар для KATbIK
86 / 81 / 10
Регистрация: 02.08.2011
Сообщений: 335
21.11.2011, 14:22     Оценити плизз!! #3
Могу только чисто внешне сказать : Прочитай технологию создания программ (у Павловской например). Пробелы, отступы. У тебя практически нет комментариев(через неделю забудешь как она работает ).
Ilyawow
24 / 24 / 5
Регистрация: 18.11.2011
Сообщений: 266
21.11.2011, 14:30  [ТС]     Оценити плизз!! #4
Я незабуду ) я ее долго писал темболее она мне нужна для конференции ) и я все откладываю в своей памяти знаю что делает та или иная функция зачем тут нужен это оператор и тд

посчитал кол-во ошибок в сообщении.
смотреть код просто страшно стало.

с наилучшими пожеланиями, собак.
у мя порусскому слабая 4 ((
soon
21.11.2011, 14:48
  #5

Не по теме:

Я то думаю, отправлять или нет свою game of life(Qt) на конкурс(даже не научная конференция, а так краевая(дай бог) олимпиада, и прочее бла-бла-бла в этом роде), а тут шифратор на 300 строк, большинство из которых просто переводы на другую строчку, либо if/case. Я даже не знаю, о чем это говорит, раз на конференции такое всерьез рассматривают. Нет, конечно же молодежь нужно поддерживать и все такое, но не до такой же степени. Хотя, если алгоритм шифрования действительно нов и крут...

Ilyawow
24 / 24 / 5
Регистрация: 18.11.2011
Сообщений: 266
21.11.2011, 14:53  [ТС]     Оценити плизз!! #6
Да не я то не на краевую я то на городскую всего -то
Сыроежка
Заблокирован
21.11.2011, 15:04     Оценити плизз!! #7
Посмотрел первую функцию

C++
1
void vanword (char str[] ,int str_len)
и разу же возникли вопросы.

Во-первых, что это за слово такое
C++
1
vanword
? Что оно означает и на каком языке его следует читать?!
Во-вторых, совершенно не понятно, что делает эта функция. Например, если исходный массив имеет содержание " ABC", то распечатывается " A". В чем смысл этого вывода на экран данного значения?!
В-третьих, почему первый параметр не объявлен как указатель на константный массив?!

Ваш код - это пример того, как не надо писать программы!
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.11.2011, 15:13     Оценити плизз!! #8
Хм. Скомпилил я ваш первый код.
1) Вы уверены, что у приемной коммиссии будет windows? Или, если будете компилить на месте, то conio.h?
2) Ругнулся на функцию random(int).
3) С кучей варнингов запустил. Приветливо мигнула строчка, приглашая нажать Enter. И я, дурачок, повелся. Нажал. Еще раз. Ну, в общем отсутствие getch сказалось. Так что думайте, каким образом сделать код переносимым.
4) В общем, профита так никто и не добился.
Ilyawow
24 / 24 / 5
Регистрация: 18.11.2011
Сообщений: 266
21.11.2011, 15:40  [ТС]     Оценити плизз!! #9
если что на конференцию я приду со своим компилятором Dev C++ приграмма работает норм ( и вобще я всего в 7 классе ) что так негативно ?

Добавлено через 8 минут
у меня прога компилируется без варнингов и все нормально и ненравится функция rаndom убирите ее у вас прога не с кампилится
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,694
21.11.2011, 15:50     Оценити плизз!! #10
Цитата Сообщение от Ilyawow Посмотреть сообщение
если что на конференцию я приду со своим компилятором Dev C++ приграмма работает норм ( и вобще я всего в 7 классе ) что так негативно ?
Потому, что сразу надо в себе гасить индусские направления. Для примера:
C++
1
if(c==0)   printf("%ch7fu ",str[i]);   if(c==1)   printf("%cT·¦ ",str[i]);   if(c==2)   printf("%c#*jd ",str[i]);   if(c==3)
Вот какого лешего вам переменную проверять десять раз если она, например, равна 1? Вы не знакомы с конструкцией if ... else ?
Такое не в одном месте. Кроме того почему не switch?

Ну и форматирование тоже ни какое - толком не хочется въезжать чего там написано.

Добавлено через 3 минуты
Ну и еще я не в курсе, что за "компилятор с настроиным русским языком". Но есть такое понятие как условная компиляция, что дало бы вам возможность иметь в одном файле исходников оба варианта.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
21.11.2011, 15:53     Оценити плизз!! #11
Цитата Сообщение от voral Посмотреть сообщение
Кроме того почему не switch?
На самом деле, форматная строка должна браться из массива.
Ilyawow
24 / 24 / 5
Регистрация: 18.11.2011
Сообщений: 266
21.11.2011, 15:55  [ТС]     Оценити плизз!! #12
Вот какого лешего вам переменную проверять десять раз если она, например, равна 1?
эта переменная заполняется рендомным числом да можнобыло через switch.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2011, 15:57     Оценити плизз!!
Еще ссылки по теме:

плизз подскажите водяное охлождение
Java Подскажите,что делать дальше с JDK,плизз
Создать 2 потока. Плизз. Простая задача! C++ Linux

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

Или воспользуйтесь поиском по форуму:
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.11.2011, 15:57     Оценити плизз!! #13
Негативно? Это критика. Чем меньше ее, тем медленнее человек развивается. Ничего лично против вас не имею.
Начал придираться - продолжу. Dev-cpp - IDE. Отличия IDE от компилятора можете найти на википедии. А представьте, как упало бы впечатление о вас у комиссии, скажи вы, что Dev-cpp - компилятор? Не дай бог, еще доказывать свою правоту начали бы.
Повторю: уверены, что там будет windows? Не факт, но не исключено, что там будет линух. А в нем ваш код уже работать без поправок не будет.
7 класс. Объективно оценивайте свои возможности. Когда я учился в 7 классе, я не бегал с каждым удачным(по своему мнению) кодом к приемной коммисии. Нет, я ни в коем случае не хочу стеснять вас в вашем выборе своими рассуждениями. Хотите - идите. Опыт тоже важная штука
Yandex
Объявления
21.11.2011, 15:57     Оценити плизз!!
Ответ Создать тему
Опции темы

Текущее время: 05:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru