c++ - 如何在不使用循环的情况下回到我的代码顶部?
问题描述
我正在尝试制作一个“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
解决方案
您可以使用如下的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
推荐阅读
- python - python Speech_recognition模块占用麦克风
- swift - 在 NSTableView (Swift) 中选择一行
- html - IDX Broker 中代理 bios 的自定义 CSS
- python-3.x - 死内核:每当我打开基于 python3 内核的 .ipynb 文件时,python3 内核就会崩溃
- java - 在 Java 中,为什么线程从 .wait() 唤醒后必须竞争资源?
- sql - SQL 选择查询中的日期范围
- react-native - 当我将在 ios 中运行应用程序时出现错误,有人可以帮助我吗?
- php - 如何在 php 中将多个内容添加到变量中
- javascript - 摩卡跳过了一些测试
- wso2 - WSO2 - 多租户环境中的 SaaS 服务提供商权限