创建和使用查找数组 [英] Creating and using a lookup array

查看:49
本文介绍了创建和使用查找数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你如何使用char *的查找表,我的意思是,你如何在D和E的交点处找到

?你怎么读两个

字符串,并解析每个字符。这是阵列:


const char * vigenereTable = new char [26] [26];

* vigenereTable =,Q

{

{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},

{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,A},

{C,D,E,F,G,H, I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B},

{ D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B, C},

{E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W, X,Y,Z,A,B,C,D},

{F,G,H,I,J,K,L,M,N,O,P,Q,R, S,T,U,V,W,X,Y,Z,A,B,C,D,E},

{G,H,I,J,K,L,M, N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F},

{H, I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G} ,

{I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B, C,D,E,F,G,H},

{J,K,L,M,N,O,P,Q,R,S,T,U,V,W, X,Y,Z,A,B,C,D,E,F,G,H,I},

{K,L,M,N,O,P,Q,R, S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J},

{L,M, N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K},

{M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G, H,I ,J,K,L},

{N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D ,E,F,G,H,I,J,K,L,M},

{O,P,Q,R,S,T,U,V,W,X,Y ,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N},

{P,Q,R,S,T ,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O},

{Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N ,O,P},

{R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I ,J,K,L,M,N,O,P,Q},

{S,T,U,V,W,X,Y,Z,A,B,C,D ,E,F,G,H,I,J,K,L,M,N,O,P,Q,R},

{T,U,V,W,X,Y ,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S},

{U,V,W,X,Y,Z,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,A,B,C,D,E,F,G,H,I,J,K,L,M,N ,O,P,Q,R,S,T,U},

{W,X,Y,Z,A,B,C,D,E,F,G,H,I ,J,K,L,M,N,O,P,Q,R,S,T,U,V},

{X,Y,Z,A,B,C,D ,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W},

{Y ,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X },

{Z,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},

};


你能帮助我吗,我想建立一个Vigenere密码程序。感谢

帮助!!!

How would you use a lookup table of char*, I mean, how would you find
out where the intersection of D and E is? And how would you read two
strings, and parse each character. Here''s the array:

const char* vigenereTable=new char[26][26];
*vigenereTable=,Q
{
{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},
{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 ,A},
{C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A ,B},
{D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B ,C},
{E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C ,D},
{F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D ,E},
{G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E ,F},
{H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F ,G},
{I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G ,H},
{J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H ,I},
{K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I ,J},
{L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J ,K},
{M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K ,L},
{N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L ,M},
{O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M ,N},
{P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N ,O},
{Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O ,P},
{R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P ,Q},
{S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q ,R},
{T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R ,S},
{U,V,W,X,Y,Z,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,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T ,U},
{W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U ,V},
{X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V ,W},
{Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W ,X},
{Z,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},
};

Can you help me, I want to build a Vigenere cipher program. Thanks for
the help!!!

推荐答案

Protoman写道:
Protoman wrote:
你如何使用char *的查找表,我的意思是,你如何找到D和E交叉点的位置?你会如何阅读两个字符串,并解析每个字符。这是阵列:

const char * vigenereTable = new char [26] [26];
* vigenereTable =,Q


如果你假设你的所有字母都是顺序整数

值(对于ASCII,但不是所有字符集都是如此,例如EBCDIC

有几个空白(在我和J和R以及

S出于古怪的历史原因),有更好的方法

来做这种密码。


其次,如果表格总是26x26,那么使用动态分配就没有意义了:


char vignereTable [26] [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},
{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,A},
How would you use a lookup table of char*, I mean, how would you find
out where the intersection of D and E is? And how would you read two
strings, and parse each character. Here''s the array:

const char* vigenereTable=new char[26][26];
*vigenereTable=,Q
If you assume that all your letters are sequential integral
values (true for ASCII, but not all character sets, EBCDIC
for example has a couple of gaps (betwee I and J and R and
S for quaint historical reasons), there are better ways
to do this sort of cipher.

Second, if the table is always going to be 26x26, there''s
no point in using dynamic allocation:

char vignereTable[26][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},
{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 ,A},



除非A没有定义,否则上述内容将起作用。如果你想要

来使用文字字符值你需要撇号

它:

''A'',''B'', ...


The above will work except A isn''t defined. If you want
to use literal character values you need apostrophes around
it:
''A'', ''B'', ...


好的,我cha这是怎么回事,但我怎么找到D和

F的交集?

OK, I changed that, but how do I find the intersection of, say, D and
F?


" Protoman"写道:
"Protoman" writes:
你如何使用char *的查找表,我的意思是,你如何找到D和E交叉点的位置?你会如何阅读两个字符串,并解析每个字符。这是阵列:

const char * vigenereTable = new char [26] [26];
* vigenereTable =,Q


逗号是什么?难道你的编译器不抱怨吗?

{
{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},


您希望如何将51个字符放入26个元素数组中?

{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,A},{C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R, S,T,U,V,W,X,Y,Z,A,B},{D,E,F,G,H,I,J,K,L,M,N,O, P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C},
{E,F,G,H,I,J,K,L, M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D},
{F,G,H,I, J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E},
{ G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E, F},
{H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B, C,D,E,F,G},{I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y, Z,A,B,C,D,E,F,G,H},{J,K,L,M,N,O,P,Q,R,S,T,U,V, W,X,Y,Z,A,B,C,D,E,F,G,H,I},
{K,L,M,N,O,P,Q,R,S, T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J},
{L,M,N,O,P, Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K},
{M, N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L} ,
{N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E, F,G,H,I,J,K,L,M},
{O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B, C,D,E,F,G,H,I,J,K,L,M,N},
{P,Q,R,S,T,U,V,W,X,Y, Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O},
{Q,R,S,T,U,V, W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P},
{R,S, T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q},< br,{S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O, P,Q,R},{T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L, M,N,O,P,Q,R,S},
{U,V,W,X,Y,Z,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,A,B,C,D,E,F, G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U},
{W,X,Y,Z,A,B,C, D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V},
{X,Y,Z, A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W}, {Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V, W,X},
{Z,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},
};

你能帮助我吗,我想建立一个Vigenere密码程序。感谢
帮助!!!
How would you use a lookup table of char*, I mean, how would you find
out where the intersection of D and E is? And how would you read two
strings, and parse each character. Here''s the array:

const char* vigenereTable=new char[26][26];
*vigenereTable=,Q
What''s the comma for? Doesn''t your compiler complain?
{
{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},
How do you expect to fit 51 characters into a 26 element array?
{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 ,A},
{C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A ,B},
{D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B ,C},
{E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C ,D},
{F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D ,E},
{G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E ,F},
{H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F ,G},
{I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G ,H},
{J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H ,I},
{K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I ,J},
{L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J ,K},
{M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K ,L},
{N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L ,M},
{O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M ,N},
{P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N ,O},
{Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O ,P},
{R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P ,Q},
{S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q ,R},
{T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R ,S},
{U,V,W,X,Y,Z,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,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T ,U},
{W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U ,V},
{X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V ,W},
{Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W ,X},
{Z,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},
};

Can you help me, I want to build a Vigenere cipher program. Thanks for
the help!!!




如果你能设法让你的意图进入编译的程序,D就是

字母表的第4个字母,E是第5个字母。调整

C ++数组从0开始的事实,*类似* table [3] [4];


正如已经指出的那样,对于大多数实际目的而言,你这样做是困难的。



If you can manage to get your intent into a program that compiles, D is the
4th letter of the alphabet and E is the 5th. Adjusting for the fact that
C++ arrays start at 0, *something like* table[3][4];

As has already been pointed out, you are doing this the hard way for most
practical purposes.


这篇关于创建和使用查找数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆