gpt4 book ai didi

c - 加密字符串

转载 作者:太空宇宙 更新时间:2023-11-04 08:12:29 25 4
gpt4 key购买 nike

我正在编写一个以这种方式加密给定字符串的程序:

如果我们有一个整数 V 和一个仅包含元音的数组 v={a,e,i,o,u} 如果字符串的字母是元音,则将其替换为 V 位置之前的元音仅考虑元音数组(不是整个字母表!)。

要清楚:

String: "uuuu" and V:2 -----> String_out: "iiii"
String: "aaaa" and V:2 -----> String_out: "oooo"
String: "iiii" and V:2 -----> String_out: "aaaa"

为了解决我的问题,我写道:

    V=2;
char vow[5]={'a','e','i','o','u'};
for(i=0;i<strlen(s);i++){
flag=0;
for(j=0;j<5 && flag==0;j++){
if(*(s+i)==vow[j]){
flag=1;
}
if(flag)
*(s+i)=vow[j-V%5];
}

代码获取字符串的每个元素,验证它是否是元音,然后如果它是元音,则用 V 位置之前的元音替换所考虑的字符串元素。

如果字符串只有元音 i,o,u,此代码有效,但如果它有 a,e,输出将是错误的:问题

char vow[5]={'a','e','i','o','u'};
j=1 // it will happen if the string is "eeee" in fact corresponds to 'e' in vow
V=2
vow[j-V%5]=... // j-V%5 is a negative number!!!!

那么我如何解决字母 a 和 e 的问题,这样我就不会再在 vow[...] 中获得负数并正确遵守加密规则?如果有什么不清楚的地方请告诉我,提前谢谢你!

最佳答案

This code works if the string has only the vowels i,o,u but if it has a,e the output will be wrong :

  • 发生这种情况是因为当元音是 ae 时,j-V%5负数(因为,j 是 01) 正如您正确提到的

    //when j=0 i.e, vowel `a`
    j-V%5 = 0-(2%5) = -2 //`%` has more priority over `-`

    //when j=1 i.e, vowel `e`
    j-V%5 = 1-(2%5) = -1
  • 只需使用 (5 + j- (V % 5)) %5 来避免 vow[] 数组的负索引值

    //when j=0 i.e, vowel `a`
    (5+j- (V%5))%5 = (5+0-(2%5))%5 = 3

    //when j=1 i.e, vowel `e`
    (5+j- (V%5))%5 = (5+1-(2%5))%5 = 4

    //when j=2 i.e, vowel `i`
    (5+j- (V%5))%5 = (5+2-(2%5))%5 = 0

    //when j=3 i.e, vowel `o`
    (5+j- (V%5))%5 = (5+3-(2%5))%5 = 1

    //when j=4 i.e, vowel `u`
    (5+j- (V%5))%5 = (5+4-(2%5))%5 = 2

这将帮助您避免对 vow[] 数组进行负索引


另一种方法是,

  • 在为V赋值后使得V = (V % 5) + 5
  • 现在,您可以使用 (V -j)%5 作为索引

关于c - 加密字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38278988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com