社区讨论
求调
灌水区参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m5rsnp3b
- 此快照首次捕获于
- 2025/01/11 14:17 去年
- 此快照最后确认于
- 2025/01/11 19:40 去年
功能:每个方块的数据储存在data中,通过输入来筛选用户想的方块
问题:无法正确匹配方块
CPP问题:无法正确匹配方块
#include <iostream>
#include <cstdio>
#include <limits>
#include <string>
#include <fstream>
#include <conio.h>
#include <windows.h>
using namespace std;
string que[1010],block[1010],data[1010],verb;
int ans[1010],que_num=0,data_num=0,max_ans;
void readdata(){
verb="V0.1.0";
que[1]="是否自然生成?";
que[2]="是否在主世界生成?";
que[3]="是否在下界生成?";
que[4]="是否在末地生成?";
que_num=4;
block[1]="史蒂夫头颅",data[1]="0000";
block[2]="草方块",data[2]="1100";
block[3]="下界岩",data[3]="1010";
block[4]="末地石",data[4]="1001";
block[5]="基岩",data[5]="1111";
data_num=5;
}
char rd(){
while(true){
char ch=_getch();
if(ch=='0'||ch=='1') {
return ch;
}
else{
cout<<"输入不合法,请重试!"<< endl;
}
}
}
char getn(string s,int n){return s[n-1];}
int main(){
readdata();
cout<<"猜方块 "<<verb<<"\n";
printf("目前加入的方块个数为 : %d\n目前总问题个数为 : %d\n\n",data_num,que_num);
system("pause");
int i=0;
bool f=0;
max_ans=data_num;
for(int j=1;j<=max_ans;j++){
ans[j]=j;
}
while(1){
i++;
if(i>=que_num){
f=0;
break;
}
system("cls");
if(max_ans<=1){
cout<<"你想的方块是:\n"<<block[ans[1]]<<"\n\n";
system("pause");
f=1;
break;
}
char tt;
bool flag=0;
for(int j=1;j<=max_ans;j++){
char cht=getn(data[j],i);
if(j==1) tt=cht;
if(cht!=tt) flag=1;
}
if(flag==0){
cout<<"continue "; //测试,需要删除
continue;
}
cout<<que[i];
char c=rd();
int t=0,;
for(int j=1;j<=max_ans;j++){
if(getn(data[ans[j]],i)==c){
t++;
ans[t]=j;
cout<<ans[t]<<" "; //测试,需要删除
}
}
max_ans=t;
cout<<max_ans; //测试,需要删除
Sleep(3000); //测试,需要删除
}
if(f==0){
cout<<"数据库中没有匹配的方块";
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...