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

подскажите как доделать программу - C++

Восстановить пароль Регистрация
 
SKORPION13
7 / 7 / 0
Регистрация: 05.06.2011
Сообщений: 133
09.06.2011, 21:51     подскажите как доделать программу #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
#include<iostream.h>
#include<conio.h>
#include<string.h>
using namespace std ;
 
 
 main()
{
int i=0,j=0;
string s1,s2;
char 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 ;
 
cout << "vvedite text   \n";
 cin>>s1;
transform(s1.begin(), s1.end(), s1.begin(), ::toupper);
 
i=s1[0];
int len=s1.size() ;
cout <<"vvedite key \n";
 cin>>s2;
 
transform(s2.begin(), s2.end(), s2.begin(), ::toupper);
 
while(s2.size() < s1.size())
{               s2=s2+s2;                          }
 
cout << s2<<endl<<endl;
 
j=s2[0];
 
 
 
 for( int i=s1[0];i<len;i++)
 for( int j=s2[0];j<len;j++)
{
      if (s1[i]=='D' && s2[j]=='W' ) s1[i]='Y'; 
}
 for( int i=s1[0];i<len;i++)
 for( int j=s2[0];j<len;j++)
 {
      if (s1[i]=='Z' && s2[j]=='E' ) s1[i]='D';
}
cout<<"LLIac"<<endl<<endl<<s1<<endl<<endl;
 
getch();
}

суть программы проверять введенные текст с ключем и при определенных комбинациях букв будет выводить какуюто букву .Попытался создать Шифр Виженера

проблема такая как мне цикл впихнуть в отдельную вызываемую подпрограмму чтоб не прописывать такой цикл для каждого подобного IFа
C++
1
2
3
4
 for( int i=s1[0];i<len;i++)
 for( int j=s2[0];j<len;j++)
{
      if (s1[i]=='D' && s2[j]=='W' ) s1[i]='Y'; }
Добавлено через 3 часа 24 минуты
неужели никто не знает???
хоть ссылку дайте где подобное разбиралось
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2011, 21:51     подскажите как доделать программу
Посмотрите здесь:

C++ Доделать программу
Застрял.Подскажите как доделать. C++
C++ доделать программу
C++ Объясните как доделать программу
Доделать программу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
10.06.2011, 00:20     подскажите как доделать программу #2
Цитата Сообщение от SKORPION13 Посмотреть сообщение
неужели никто не знает???
Да знают все, знают. Но всем как всегда.

Цитата Сообщение от SKORPION13 Посмотреть сообщение
хоть ссылку дайте где подобное разбиралось
Да хоть в википедии. Гуглить.

Вот это надо? Аккуратно, без проверки на регистр символов.
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
#include <iostream>
#include <iterator>
#include <string>
 
std::string Encrypt(const std::string &source, const std::string &key) {
  std::string result;
  std::string::const_iterator key_symbol = key.begin();
  for (std::string::const_iterator source_symbol = source.begin();
    source_symbol != source.end(); ++source_symbol) {
    result.push_back(((*source_symbol + *key_symbol - 2 * 'A')
      % 26) + 'A');
    if (++key_symbol == key.end()) key_symbol = key.begin();
  }
  return result;
}
 
std::string Decrypt(const std::string &source, const std::string &key) {
  std::string result;
  std::string::const_iterator key_symbol = key.begin();
  for (std::string::const_iterator source_symbol = source.begin();
    source_symbol != source.end(); ++source_symbol) {
    result.push_back(((*source_symbol - *key_symbol + 26)
      % 26) + 'A');
    if (++key_symbol == key.end()) key_symbol = key.begin();
  }
  return result;
}
 
int main(int argc, char *argv[]) {
  std::string source = "ATTACKATDAWN";
  std::string key = "LEMON";
  
  std::cout << Encrypt(source, key) << std::endl
    << Decrypt(Encrypt(source, key), key);
  
  return 0;
}
SKORPION13
7 / 7 / 0
Регистрация: 05.06.2011
Сообщений: 133
10.06.2011, 00:30  [ТС]     подскажите как доделать программу #3
ну по идеи да , только тут заранее известен текст а я хотел просто чтоб текст с клавиатуры вводился и ключ тоже с клавиатуры .Да и у вас все очень круто написано я бы до такого не додумался т.к. новичек в этом деле , для меня было через условия как то попроще . но и на этом спасибо

точней я просто хотел чтоб пояснили как написать функцию
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
10.06.2011, 00:44     подскажите как доделать программу #4
Цитата Сообщение от SKORPION13 Посмотреть сообщение
только тут заранее известен текст а я хотел просто чтоб текст с клавиатуры вводился и ключ тоже с клавиатуры
Ну и вводите их с клавиатуры. Никтож не запрещает.

Цитата Сообщение от SKORPION13 Посмотреть сообщение
Да и у вас все очень круто написано я бы до такого не додумался т.к. новичек в этом деле , для меня было через условия как то попроще
Не знаю, что такое "через условия", но вот вариант по-примитивней.
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
#include <stdio.h>
#include <string.h>
 
char *Encrypt(const char *source, const char *key, char *destination) {
  size_t source_length = strlen(source), key_length = strlen(key);
  size_t source_index, key_index = 0;
  for (source_index = 0; source_index < source_length; ++source_index) {
    destination[source_index] = ((source[source_index] + key[key_index] - 2 * 'A') % 26) + 'A';
    if (++key_index >= key_length) key_index = 0;
  }
  return destination;
}
 
char *Decrypt(const char *source, const char *key, char *destination) {
  size_t source_length = strlen(source), key_length = strlen(key);
  size_t source_index, key_index = 0;
  for (source_index = 0; source_index < source_length; ++source_index) {
    destination[source_index] = ((source[source_index] - key[key_index] + 26) % 26) + 'A';
    if (++key_index >= key_length) key_index = 0;
  }
  return destination;
}
 
int main(int argc, char *argv[]) {
  char string[] = "ATTACKATDAWN";
  char key[] = "LEMON";
  printf("%s\n", Encrypt(string, key, string));
  printf("%s\n", Decrypt(string, key, string));
  return 0;
}

Цитата Сообщение от SKORPION13 Посмотреть сообщение
точней я просто хотел чтоб пояснили как написать функцию
Эээ, а вот это к учебникам и справочным руководствам. На худой конец к преподу.
Yandex
Объявления
10.06.2011, 00:44     подскажите как доделать программу
Ответ Создать тему
Опции темы

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