2017-10-16 63 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