0
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;
}
如何使用[strcmp](http://www.cplusplus.com/reference/cstring/strcmp/)檢查相等性?它並沒有真正的意義,因爲一個角色從來都不是「只是」。 – Kaiwa 2013-04-24 15:34:10
呃..你的命名約定和編碼風格有點偏離。\ – 2013-04-24 15:34:11
你可以編輯你的問題,只顯示幾行來證明問題嗎? – 2013-04-24 15:34:34