gpt4 book ai didi

c++ - 字符比较错误

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

在 switch 语句之后,程序会比较字符。在这个阶段,我进行了调试,发现字符串的第一个字符是 111 'o',而不仅仅是 'o',这导致我的程序失败。我该如何解决或问题出在哪里?

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <cmath>

using namespace std;


int main(){

char sentence1[50];
char sentence2[50];
int m,n,k,l;
int i,j,substitution;
cout<<"Enter the first word:"<<endl;
cin>>sentence1;
cout<<"Enter the second word:"<<endl;
cin>>sentence2;
m = strlen(sentence1);
n = strlen(sentence2);
int cost[m+1][n+1];
bool a1,a2;
cost[0][0]=0;

for(i=1;i<m+1;i++){
cost[i][0]=cost[i-1][0]+2;

}
for(j=1;j<n+1;j++){
cost[0][j]=cost[0][j-1]+2;

}




for(i=1;i<m+1;i++){
for(j=1;j<n+1;j++){

switch (sentence1[i-1]){
case 'a':a1=true;
case 'u':a1=true;
case 'e':a1=true;
case 'o':a1=true;
case 'i':a1=true;
default:a1=false;
}
switch (sentence2[j-1]){
case 'a':a2=true;
case 'u':a2=true;
case 'e':a2=true;
case 'o':a2=true;
case 'i':a2=true;
default:a2=false;

}
if(sentence1[i-1]==sentence2[j-1]){substitution=0;

}
else if(a1==true && a2==false){substitution=4;}
else if(a1==false && a2==true){substitution=4;}
else if(a1==true && a2==true){substitution=3;}
else if(a1==false && a2==false){substitution=3;}




cost[i][j]=min(min(cost[i-1][j]+2,cost[i][j-1]+2),cost[i-1][j-1]+substitution);
}
}





for(i=0;i<m+1;i++){
for(j=0;j<n+1;j++){

cout<<cost[i][j]<<" ";
}
cout<<endl;
}



return 0;
}

最佳答案

switch statements "fallthrough"没有中断

switch (sentence1[i-1]){
case 'a':a1=true; break;
case 'u':a1=true; break;
case 'e':a1=true; break;
case 'o':a1=true; break;
case 'i':a1=true; break;
default:a1=false; break;
}

既然这个逻辑一直在重复,考虑提升为自己的功能。

bool is_a_vowel( char c )
{
switch (c){
case 'a':
case 'u':
case 'e':
case 'o':
case 'i':
return true;
default:
return false;
}

现在您可以拥有更具可读性和一致性的代码。

a1 = is_a_vowel( sentence1[i-1] );
a2 = is_a_vowel( sentence2[j-1] );

关于c++ - 字符比较错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16196100/

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