我有一个问题,我需要找到代码如何出现在一个文件中。问题是,在这个文件中,代码可能出现不止一次,而我只需要考虑一次。
我尝试编写一个函数来计算代码在文件中的位置(丢弃重复的代码):
int calcolo (struct sistema *sis,int l) {
char nome[l][6];
int i=2,a=1,h;
strcpy(nome[1],sis[1].codice);
h=1;
while(i<l) {
for(a=1;a<=h;a++) {
if(strcmp(nome[a],sis[i].codice)==0) {
i++;
break;
}
}
h++;
strcpy(nome[h],sis[i].codice);
i++;
}
return h;
}输入文件是:
2015-03-03 07:01 X100 8.1
2015-03-04 08:02 X100 15.2
2015-03-18 13:15 X100 31.9
2015-08-02 13:10 B209 32.0
2015-08-15 12:01 B209 35.4
2016-01-02 10:44 A101 8.1
2016-02-02 15:41 X100 13.2我不知道如何“绕过”第二部分的时间,如果我没有识别任何重复的字符串。结果是3表示树代码(X100 B209 A101),但我收到了5,为什么?
发布于 2017-08-29 07:45:50
我找到了一个答案,我知道这不是一个更好的使用goto的方法,但是我需要跳过代码的第二部分,我已经“解决了”它:
int calcolo (struct sistema *sis,int l) {
char nome[l][6];
int i=2,a=1,h;
strcpy(nome[1],sis[1].codice);
h=1;
BACK:
while(i<l) {
for(a=1;a<=h;a++) {
if(strcmp(nome[a],sis[i].codice)==0) {
i++;
goto BACK;
}
}
h++;
strcpy(nome[h],sis[i].codice);
i++;
}
return h;
}产出:已获得3-预期3
我宁愿不使用后藤,如果有人有其他解决办法,让我知道,谢谢大家。
发布于 2017-08-29 09:18:27
将每一个新字符串放入一组。然后你就这样用:
set<string, FOO>::iterator it = set.find("X100");
if(it != set.end()) // if "X100" was not found
...https://stackoverflow.com/questions/45920613
复制相似问题