Другие языки программирования и технологии

помогите с программой!!! (Си) Двумерный массив+строки

Вообщем дана последовательность слов. между словами запятая, за последним точка. Нужно напечатать все слова, встречающиеся более одного раза.

последовательность я в двумерный массив запихала. Теперь нужно посравнивать слова. Как это сделать? не получается ((
Если слова уже в массиве, то начиная с первого слова сравниваем его с последующими. Если есть хоть одно совпадение, то выводим это слово. Одинаковые слова в массиве лучше сразу заменять на пробел - что бы не было повторов. Таким образом должно быть два вложенных цикла.

p.s.: не совсем ясно зачем здесь двухмерный массив...
Николай Фетисов
Николай Фетисов
1 559
Лучший ответ
Функция сравнения строк: strcmp.
Функция быстрой сортировки: qsort.
после того, как слова загружены в массив, этот массив можно отсортировать. Тогда одинаковые слова встанут рядом.
Останется только пробежаться по этому массиву и посмотреть - равны ли текщее и предыдущее слово...
Igilik Stybai
Igilik Stybai
18 724
Пиши функцию
входные парам:
Функция Сравнение (Слово1,Слово2)
сравнивает по символьно (взяла первый символ проверила, если совпала пошла дальше на втрой символ в слове и ак до конца строки, если не совпали - вываливаешься из функции с 0)

Возвращает если равны 1, если нет 0
Алишер Сраилов
Алишер Сраилов
12 316
дома где то исходник был, если не забуду гляну
Сергей Михеев
Сергей Михеев
2 691
#include <cstdio>
#include <string>
#include <conio.h>

int count(int p, char *w[], int fl[], int n)
{
int cnt = 1, j = 0;

if (fl[p] == 0)
{
for (j = 0; j < n; ++j)
{
if (p != j && strcmp(w[j], w[p]) == 0)
{
cnt++;
fl[j] = 1;
}
}
}
return cnt;
}

int main()
{
char *words[] = {"one", "two", "three", "two", "one", "one"};
int ind[] = {0, 0, 0, 0, 0, 0};
int n = 6;
int j;
for (j = 0; j < n; ++j)
{
if (count(j, words, ind, n) > 1)
{
printf("%s\n", words[j]);
}
}
getch();
return 0;
}
ДР
Данил Рябов
1 446