2016-02-02 48 views
-1

我得到了一串字符,我必須按字母順序排除最大的字符。規則是我有三個字母L1,L2,L3.L2僅在字母大於L1和L2時被消除,並且只有第一個L2被消除,並且我想插入一個消除字符的空格。如何比較3個字符的ASCII碼?

這將是我試圖讓

cin.get(s,100); 
n=strlen(s); 
while(i<=n) 
{ 
    if(((int)s[i]<(int)s[i-1]) && ((int)s[i]<(int)s[i+1])) 
     strcpy(s+i,s+i+1); 
     i++; 
} 

輸入cadgfacbda 輸出的代碼cad facbda

我preety肯定,我需要使用一個做... while語法

+1

另一方面:您想在使用之前定義並初始化'i'。就目前而言,這些代碼甚至不會編譯,更不用說有意義的工作了。 –

+0

你可能想要一個for for循環 – AntiHeadshot

+0

我得到了一切初始化,唯一的問題是,我不知道如何比較ASCII字符串 –

回答

0

用這個替換你的循環如何:

char *biggest = NULL; 
char cBiggest = 0; 
for(int i=0; i < s.length(); i++) 
{ 
     if(s[i] > cBiggest) 
     { 
     cBiggest = s[i]; 
     biggest = s+i; 
     } 
} 
*biggest = ' '; 

這使用一個指針來跟蹤找到的最大ASCII值。按字母順序,最大的ASCII值將是最大的字符。它使用第二個變量cBiggest跟蹤到目前爲止遇到的最大字符。

迭代整個字符串後,它會使用指針將該字符設置爲空格。

請注意我還沒有測試過這個代碼。你可能需要調整它。

+0

您正在使用容器? –

+1

和變量「c」是? –

+0

哎呀。 :)更正/見,我告訴過你,我沒有測試它。 :) –