2012-03-15 12 views
0

ある行の大文字と小文字の数を数えなければなりません。この割り当てでは、\ 0で終了する文字の配列を使用する必要があります。これは私が行うことです。私はasciiコードを使って小文字か大文字を識別します。しかし、出力は時にはきれいであり、場合によってはきれいではない場合もある。どんな助けもありがとう。 Dev-C++のコードはここにあります。この行で密接に感謝私の関数はゴミを表示し、それ以外の時はクリーンな結果を表示します

#include <iostream> 
#include<conio.h> 
#include<cstring> 


using namespace std; 

int getline(); 
int isupper(char line[]); 
int islower(char line[]); 


int main() 
{ 
    int Month, last_digit;  //initialize variables and char array 
    char temp[255]; 
    getline(); 

    getch(); 
    return 0; 
} 

int getline() 
{ 
    char line[255]; 
    cout << "Enter a sentence: "; 
    cin.getline (line, 255); 
    isupper(line); 
    islower(line); 
    getch(); 
    return 0; 
} 

int isupper(char line[]) 
{ 
    int y, i=0, k=0; int count_uppercase=0; char Uppercase_array[80]; 

    cout<<endl<<"from isupper function"<<endl; 
    do 
    { 
    y=line[i++]; // Convert to int 
    if(y>64 && y<91)  //if it is a Uppercase letter... 
    { 
     Uppercase_array[k]=line[i-1]; 
     k++;   
     count_uppercase++;  //increment the counter... 
    } 
    } 
    while(y); 
    cout<<"Uppercase letter = " <<Uppercase_array; 
    cout<<" number of uppercase = "<<count_uppercase<<endl; 
    cout<<"----------"<<endl; 

    return 0; 

} 

int islower(char line[]) 
{ 
    int z, i=0, count_lowercase=0; 
    cout<<"from lowercase function"<<endl; 
    do 
    { 
    z=line[i++]; // Convert to int 
    if(z>96 && z<123)  //if it is a Lowercase letter... 
    count_lowercase++;  ////increment the counter... 
    } 
    while(z); 
    cout<<"number of lowercase = "<<count_lowercase<<endl;  

    getch(); 
    return 0; 
} 

*******example1 of output***** 
Enter a sentence: Good morning Dad, how ARE u? 

from isupper function 
Uppercase found in that line = GDARE√" number of uppercase = 5 
---------- 
from lowercase function 
number of lowercase = 16 

************example2 of output********* 
Enter a sentence: Good morning Dad how are u? 

from isupper function 
Uppercase letter = GD number of uppercase = 2 
---------- 
from lowercase function 
number of lowercase = 19 
+1

私が最初に出てくることは、あなたのUppercase_arrayがnullで終了していないことです。 – Corbin

答えて

1

あなたが参照している「ごみは、」GDARE√"√"であれば、答えはUppercase_arrayの最後の文字にヌル・ターミネータを\0追加することです。つまり、do/whileループの後に、Uppercase_array[k] = '\0'を追加します。

+0

クリア!今私には非常に明確です。私は今それを念頭に置いておきます。再度、感謝します!! – T4000

3

はルック:

cout<<"Uppercase letter = " <<Uppercase_array; 

どのようにそれが出力にどのように多くの文字を知っているのですか?実際にはstd::stringまたはstd::vector<char>を使用してください。

最も簡単な修正が必要な場合は、印刷前にこれを実行してください:Uppercase_array[k]=0;。 Cスタイルの文字列の終端には、その大きさを処理する関数に指示する終了ナル(0バイト)が付きます。

+0

偉大な、それは今うまく動作します!あなたはなぜUppercase_array [k] = 0が問題を解決したのかをもう少し説明できますか?私は本当にこのligne自体が問題を解決する理由を理解したい。ありがとう – T4000

+0

単に '0 'ではなく' \ 0'を書いたほうがはっきりしているかもしれません。文字列の終わりを示すヌル文字です。 (ASCII値が0になっているので、0を書くことができます) – Wyzard

+0

今すぐクリア!私は文字列を終了する '\ 0'を忘れる傾向があります。あなたよりもずっと! – T4000

関連する問題