2017-10-16 65 views
-2
int main(){ 
char text[500]; 
int j,h,op; 
char b[]=" abcdefghijklmnopqrstuvwxyz"; 
char a[]=" ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
cout<<"insert text:";fflush(stdin);gets(texto); 
     system("cls"); 
      cout<<"1-Minus to Mayus"<<endl; 
      cout<<"2-Mayus to Minus"<<endl; 
     cin>>op; 
    system("cls"); 
    if (op==1) 
        { 
           j=0; 
           h=0; 
           while(j<28){ 

            if(text[h]==b[j]){ 
             text[h]=a[j]; 
             h++; 
             j=0; 
            } 
            j++; 
           } 
           cout<<text<<endl; 
           system("pause"); 
        } 
        else if (op==2) 
        { 
           j=0; 
           h=0; 
           while(j<28){ 

            if(text[h]==a[j]){ 
             text[h]=b[j]; 
             h++; 
             j=0; 
            } 
            j++;   
           } 
           cout<<text<<endl; 
           system("pause"); 
       } 
      } 

此代碼的工作只是一個單一的世界(直到第一個空格),我希望它有一個完整的句子運行,甚至一個paragraph.I希望你能理解的較低的邏輯在功能上主()C++:如何將小寫轉換爲upercase並反向轉換爲ctype函數?

+0

你的代碼看起來多少過於複雜才達到這個簡單的任務。在這裏看看[ASCII字符值](http://en.cppreference.com/w/cpp/language/ascii)是如何關聯的 – user0042

+0

是的,他們沒有教過關於ASCII的問題,在「Intro To Programming 101」還有嗎? –

+0

@ user0042 - 問題陳述不限於ASCII,因此可能不是一個選項。 –

回答

2

如果你不想要這個代碼依賴於一個ASCII表的值(雖然這可以使你的生活變得更輕鬆)的情況下,下面的你有趣的老式代碼的精神,函數將字母轉換爲小寫字母可以這樣實現:

const char LOWERCASES[] = " abcdefghijklmnopqrstuvwxyz"; 
const char CAPITALS[] = " ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

void toLowerCase(string &s) { 
    for (unsigned int i = 0; i < s.size(); ++i) { 
     for (unsigned int l = 0; l < 27; ++i) { 
      if (s[i] == CAPITALS[l]) { 
       s[i] = LOWERCASES[i]; 
       break; 
      } 
     } 
    }  
} 
+0

是的,而不是ASCII,這將使用通過'-execution-charset'又名'-fexec-charset'來告訴編譯器。 –

0

試試這個

int main(){ 

int ss,T; 

char text[100]; 

cout<<"Insert text ";gets(text); 
T=tam(texto); 
    cout<<"1)Menu "<<endl; 
    cout<<"2)Upercase "<<endl; 
    cout<<"3)LowerCase "<<endl; 
    cout<<"4)Random"<<endl;cin>>ss; 

switch(ss){ 

    case 2: 
      for(int i=0 ; i<T ; i++){ 
       if(text[i]>=97 && text[i]<=122) 
        text[i]=int(text[i])-32; 
      } 
      cout<<text<<endl; 

    break; 

    case 3: 
      for(int i=0 ; i<T ; i++){ 
       if(text[i]>=65 && text[i]<=90) 
        text[i]=int(text[i])+32; 
      } 
      cout<<text<<endl; 

    break; 


    case 4: 
      for(int i=0 ; i<T ; i++){ 
       if(text[i]>=97 && text[i]<=122) 
        text[i]=int(text[i])-32; 
       else 
        text[i]=int(text[i])+32;  
      } 

      cout<<text<<endl; 

    break; 
} 

}

+0

什麼是'tam()'? – user673679