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

Шифровать методом Магического квадрата (размер квадрата 9х9) С++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.85
yes_asian
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 5
17.10.2012, 22:58     Шифровать методом Магического квадрата (размер квадрата 9х9) С++ #1
Шифровать методом Магического квадрата (размер квадрата 9х9) С++
Дана таблица 9х9. Надо реализовать программу на С++ шифрующий/дешифрующий вводимый текст методом Магического квадрата.
Откликнитесь...

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
#include <iostream>
#include <conio.h>
#include "string.h"
using namespace std;
 
int main(){
setlocale(0,"RUS");
 
//int m,j;
char t[82],t2[82];
//string t2;
 
int a[81]={
          37,78,29,70,21,62,13,54,5,
          6,38,79,30,71,22,63,14,16,
          47,7,39,80,31,72,23,55,15,
          16,48,8,40,81,32,54,24,56,
          57,17,49,9,41,73,33,65,25,
          26,58,18,50,1,42,74,34,66,
          67,27,59,10,51,2,43,75,35,
          36,68,19,60,11,52,3,44,76,
          77,28,69,20,61,12,53,4,45};
    
cout<<"text: ";
cin>>t;
 
//if (strlen(t)<82) { for(int i=strlen(t);i<82;i++) t=t+'*'; }
 
int i,k;
for (i=0; i<81; i++)
{   
for (k=0; k<t[i]!='\0'; k++)
    {
    if (k==a[i]){
    t2[k]=t[k];}
    else { t2[k]='*'; } 
    } 
}
 
cout<<"text2: "<<t2;
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2012, 22:58     Шифровать методом Магического квадрата (размер квадрата 9х9) С++
Посмотрите здесь:

C++ Построение магического квадрата
C++ Доработать код для магического квадрата
C++ Генерация магического квадрата
C++ Сравнить площадь круга и площадь квадрата , которые заданы сответствено радиусом r и стороной квадрата a
Массивы. Заполнить, разбить на квадраты размером 3х3. В центре каждого квадрата поместить сумму остальных элементов квадрата C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yes_asian
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 5
22.10.2012, 10:52  [ТС]     Шифровать методом Магического квадрата (размер квадрата 9х9) С++ #2
?????
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
22.10.2012, 11:20     Шифровать методом Магического квадрата (размер квадрата 9х9) С++ #3
Добавлено через 1 минуту
если что непоянтно могу схемотично пояснить

Добавлено через 1 минуту

Не по теме:

пля чтото какуюто хрень сделаи с редактированием



Добавлено через 1 минуту
Собственно вам бы не помешало бы сначала алгоритм почитать =)
я думаю следует написать одномерный массив из структуры. в самой структуре будет содержаться значение из вашего квадрата и положение его в вашем квадрате. Далее следует отсортировать этот массив по значению. И потом когда вы шифруете, находите значение символа находящимся на i,j и ставите его на место i,j уже следующей ячейки массива структуры. соответственно при дешифровании следует ставить координаты из предыдущей ячейки массива
Добавлено через 1 минуту
если что непоянтно могу схемотично пояснить

Добавлено через 6 минут
чепуху написал!!!
при считывании iго элемента из строки, смотрите в вашем весторе а значение которое соответствует iму элементу и вставляете iй элемент из строки на "векторную" позицию в новую строку

при дешифрации наоборот смотрите какому iму значению соответствует векторное значение и вставляете в iю позицию
yes_asian
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 5
22.10.2012, 12:07  [ТС]     Шифровать методом Магического квадрата (размер квадрата 9х9) С++ #4
Цитата Сообщение от MrGrig Посмотреть сообщение
если что непоянтно могу схемотично пояснить
да хочу ))

а алгоритм прочитал. Исходный текст индексируется по символно, если индекс символа равен значению iий ячейки матрицы, то символ пишется в эту ячейку новой матрицы, пустые ячейки заполняются '*'.
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
22.10.2012, 12:57     Шифровать методом Магического квадрата (размер квадрата 9х9) С++ #5
допустим есть вектор нашего волшебного квадрата, повторяю, допустим он такой
kv=[2,4,1,3]
у нас есть слово СЛОН
соовтветственно в векторе он выглядит так
2 4 1 3
с л о н
теперь меняем значения чтобы сортировка была через вектор
1 2 3 4
о с н л
далее у нас есть зашифрованое слово
хмау
в дешифрованом векторе это слово выглядит так
1 2 3 4
х м а у
меняем местами значения вектора чтобы они подходили под наш квадрат
2 4 1 3
м у х а

Добавлено через 21 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string shifr(int vektor[], string str){
    char* str1 = new char[82];
    for(int i=0;i<str.size();i++)
        str1[i]=str[vektor[i-1]];
    str1[str.size()]='\n';
    return str1;
}
string deshifr(int devektor[], string str){
    char* str1 = new char[82];
    for(int i=0;i<str.size();i++)
        str1[i]=str[devektor[i-1]];
    str1[str.size()]='\n';
    return str1;
}
Добавлено через 17 секунд
как-то так наверное
yes_asian
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 5
23.10.2012, 20:42  [ТС]     Шифровать методом Магического квадрата (размер квадрата 9х9) С++ #6
Не совсем так.

Пример:
Текст: СЛОН
матрица:
37,78,29,70,21,62,13,54,5,
6,38,79,30,71,22,63,14,16,
47,7,39,80,31,72,23,55,15,
16,48,8,40,81,32,54,24,56,
57,17,49,9,41,73,33,65,25,
26,58,18,50,1,42,74,34,66,
67,27,59,10,51,2,43,75,35,
36,68,19,60,11,52,3,44,76,
77,28,69,20,61,12,53,4,45

индексируем С=1, Л=2, О=3, Н=4.
находим 1 из матрицы:
матрица[6][5]=1 и т.д. вместо значение м[6][5] вcтавляем букву 'С'.
после расставления всех букв по матрице пишем матрицу с первого элемента до последнего.
где нет букв заполняем звездочкей '*'.

матрица после расстановки:
*********
*********
*********
*********
*********
****C****
*****Л***
******О**
*******Н*

шифрованный текст: *************************************************C*********Л*********О*********Н*

Вот это я пытаюсь сделать..!!!

Добавлено через 32 секунды
Не совсем так.

Пример:
Текст: СЛОН
матрица:
37,78,29,70,21,62,13,54,5,
6,38,79,30,71,22,63,14,16,
47,7,39,80,31,72,23,55,15,
16,48,8,40,81,32,54,24,56,
57,17,49,9,41,73,33,65,25,
26,58,18,50,1,42,74,34,66,
67,27,59,10,51,2,43,75,35,
36,68,19,60,11,52,3,44,76,
77,28,69,20,61,12,53,4,45

индексируем С=1, Л=2, О=3, Н=4.
находим 1 из матрицы:
матрица[6][5]=1 и т.д. вместо значение м[6][5] вcтавляем букву 'С'.
после расставления всех букв по матрице пишем матрицу с первого элемента до последнего.
где нет букв заполняем звездочкей '*'.

матрица после расстановки:
*********
*********
*********
*********
*********
****C****
*****Л***
******О**
*******Н*

шифрованный текст: *************************************************C*********Л*********О*********Н*

Вот это я пытаюсь сделать..!!!
Yandex
Объявления
23.10.2012, 20:42     Шифровать методом Магического квадрата (размер квадрата 9х9) С++
Ответ Создать тему
Опции темы

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