首页 > 解决方案 > 如何在不使用循环的情况下回到我的代码顶部?

问题描述

我正在尝试制作一个“Flames”程序,我的问题是在用户输入他/她的姓名以及合作伙伴姓名并获得结果后,我想问用户他们是否想在不使用循环的情况下输入另一个名称。

我尝试使用 goto,但随后在用户无法输入初始名称的地方发生错误。

#include <iostream>
#include <string>

  using namespace std;

  int main()
  {
  start:
  system("cls");
  char t;
  string fname1,fname2;
  int i,x,z,y,name1len=0,name2len=0,b,total,name1spc=0,name2spc=0;

  cout<<"Enter your full name: ";
  getline(cin,fname1);
  cout<<"Enter partners name: ";
  getline(cin,fname2);
  cout<<endl;

    for(i=0;i<=fname1.length();i++ )
        {

        fname1[i]=toupper(fname1[i]);

        }    
    for(i=0;i<=fname2.length();i++)    
        {

        fname2[i]=toupper(fname2[i]);
        }


 x=fname1.length();
 y=fname2.length();



//============check for spaces=========


        for(i=0;i<x;i++)
        {
            if(fname1[i]==' ')
                {
                name1spc++;
                }

        }
        for(i=0;i<y;i++)
        {
            if(fname2[i]==' ')
                {
                name2spc++;
                }

        }

//=========for 1st name compare=========
  for(i=0;i<fname1.length();i++)
    {
        for(b=0;b<fname2.length();b++)
            {
            //cout<<fname1[i]<<endl;
                if(fname1[i]==fname2[b])
                    {
                    name1len++;
                    break;

                    }

            }

    }
 //============2nd name compare================
 for(i=0;i<fname2.length();i++)
    {
        for(b=0;b<fname1.length();b++)
            {
            //cout<<fname1[i]<<endl;
                if(fname2[i]==fname1[b])
                    {
                    name2len++;
                    break;

                    }

            }

    }





  name1len=name1len-name1spc;
  name2len=name2len-name2spc;
  cout<<name1len<<endl<<name2len;


  total=name1len+name2len;

  if(total>6)
  {
  total=total%6;
  }

  switch(total)
  {

 case 1:
 cout<<fname1<<" and "<<fname2<<" are Friends"<<endl;
 break;
 case 2:
 cout<<fname1<<" and "<<fname2<<" are Lovers"<<endl;
 break;
 case 3:
 cout<<fname1<<" and "<<fname2<<" are Aquaintance"<<endl;
 break;
 case 4:
 cout<<fname1<<" and "<<fname2<<" are Married"<<endl;
 break;
 case 5:
 cout<<fname1<<" and "<<fname2<<" are Enemies"<<endl;
 break;
 case 6:
 cout<<fname1<<" and "<<fname2<<" are Sweethearts"<<endl;
 break;
 default:
 cout<<"No name entered"<<endl;
 } 

  cout<<"Would you like to enter another name? Y/N?";
  cin>>t;

     if(t=='Y' || t=='y')
       {
        goto start;
        }
     else if(t=='N' || t=='n')
       {
        cout<<"THANKS"<<endl;
        system("pause");
       }
      else{
       return 0;
          }









   }//ending for int main

标签: c++

解决方案


您可以使用如下的while循环:

  using namespace std;

  int main()
  {
  while(true){
  system("cls");
  char t;
  string fname1,fname2;
  int i,x,z,y,name1len=0,name2len=0,b,total,name1spc=0,name2spc=0;

  cout<<"Enter your full name: ";
  cin.ignore();
  getline(cin,fname1);
  cout<<"Enter partners name: ";
  getline(cin,fname2);
  cout<<endl;

    for(i=0;i<=fname1.length();i++ )
        {

        fname1[i]=toupper(fname1[i]);

        }    
    for(i=0;i<=fname2.length();i++)    
        {

        fname2[i]=toupper(fname2[i]);
        }


 x=fname1.length();
 y=fname2.length();



//============check for spaces=========


        for(i=0;i<x;i++)
        {
            if(fname1[i]==' ')
                {
                name1spc++;
                }

        }
        for(i=0;i<y;i++)
        {
            if(fname2[i]==' ')
                {
                name2spc++;
                }

        }

//=========for 1st name compare=========
  for(i=0;i<fname1.length();i++)
    {
        for(b=0;b<fname2.length();b++)
            {
            //cout<<fname1[i]<<endl;
                if(fname1[i]==fname2[b])
                    {
                    name1len++;
                    break;

                    }

            }

    }
 //============2nd name compare================
 for(i=0;i<fname2.length();i++)
    {
        for(b=0;b<fname1.length();b++)
            {
            //cout<<fname1[i]<<endl;
                if(fname2[i]==fname1[b])
                    {
                    name2len++;
                    break;

                    }

            }

    }





  name1len=name1len-name1spc;
  name2len=name2len-name2spc;
  cout<<name1len<<endl<<name2len;


  total=name1len+name2len;

  if(total>6)
  {
  total=total%6;
  }

  switch(total)
  {

 case 1:
 cout<<fname1<<" and "<<fname2<<" are Friends"<<endl;
 break;
 case 2:
 cout<<fname1<<" and "<<fname2<<" are Lovers"<<endl;
 break;
 case 3:
 cout<<fname1<<" and "<<fname2<<" are Aquaintance"<<endl;
 break;
 case 4:
 cout<<fname1<<" and "<<fname2<<" are Married"<<endl;
 break;
 case 5:
 cout<<fname1<<" and "<<fname2<<" are Enemies"<<endl;
 break;
 case 6:
 cout<<fname1<<" and "<<fname2<<" are Sweethearts"<<endl;
 break;
 default:
 cout<<"No name entered"<<endl;
 } 

  cout<<"Would you like to enter another name? Y/N?";
  cin>>t;

     if(t=='Y' || t=='y')
       {
        continue;
        }
     else if(t=='N' || t=='n')
       {
        cout<<"THANKS"<<endl;
        break;
       }
      else{
       return 0;
          }
   } //while end









   }//ending for int main

推荐阅读