С помощью C у меня есть массив строк, некоторые из них дубликаты. Я пытаюсь подсчитать количество уникальных строк. Код:C, подсчет уникальных строк в массиве строк
for(i=0; i<size; i++){
flag=0;
if(strcmp(" ", tArr[i])!=0){
for(j=i; j<size; j++){
if(strcmp(tArr[i], tArr[j])==0){
if (flag<1){
flag=1;
k++;
}
strcpy(tArr[j], " ");
}
}
}
}
- Первый цикл проходит через весь массив
- Установить флаг в ноль для каждой итерации
- Использование заготовок в качестве другого флага, если индекс является пустым, это означает, что слово имеет уже подсчитано, перейти к следующему индексу
- Сравните этот показатель для каждого индекса после него, таким образом, у = я
- Если вторичный индекс совпадает с первым
- I е это слово еще не было найден
- Trigger флага
- Добавить к, подсчитывать уникальное слово
Установите весь оставшийся экземпляр этого слова в пустое пространство, чтобы соответствовать линии 3
Вместо от установки k до уникального количества слов, он устанавливается на общее количество слов. Используя напечатанные флаги, я смог сказать, что функция проделает весь путь, даже после строки
Я до сих пор не могу сказать, как она делает это на линии 8 на каждой итерации самого внешнего цикла.
Внутренний цикл должен быть 'for (j = i + 1; j
Segmented
Подумайте, что исправил его, спасибо. – thingy