Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2008, 21:31   #1
persalena
 
Регистрация: 06.12.2008
Сообщений: 8
По умолчанию Найти все слова встречающиеся более одного раза(Си).Использовать двумерный массив.

Сам текст задачи следующий:
Дана строка из не более чем 30 слов, в каждом слове не более 8 букв. Слова разделены запятой, за последним-точка. Вывести слова встречающиеся более одного раза( допусти если я ввожу : зщ,зщ,жд,зщ,жд,ор. То программа должна вывести зщ зд). Использовать двумерный массив

Вот что я написала. И почему-то не работает, помогите пожалуйста!Буду очень благодарна. Уже вторую неделю над ней парюсь...

#include <stdlib.h>
#include <conio.h>
#include<iostream>
int main()
{
char ch;
int i,j, k, n, m, l, c, f;
char str[30][8], b[15][8];
for(m=0; m<15; m++)
{for (j=0;j<8;j++) /* для каждого i присвоить a[i] = 0; */
b[m][j]=0;}m=0;
i=0;
ch='\0';
while(ch!='.')
{scanf("%c",&ch);
j=0;
while(ch!=','&&ch!='.')
{
str[i][j]=ch;
scanf("%c",&ch);
j++;
}
str[i][j]='\0';
i++;
}
i=n;


for(i=0;i<n;i++)
{f=0;

for(k=i+1;k<n&&f!='\0'&&f!=1;k++)
{

for(j=0;str[i][j]==str[k][j]&&f!='\0'&&f!=1;j++)
{

if(str[i][j]=='\0'&&str[k][j]=='\0')
{
for (l=0;l<=15&&f!=1;l++)
{
for(j=0;str[i][j]==b[l][j]&&f!=1;j++)
if(str[i][j]=='\0') f=1;


}
if (l==15&&f==0)
{
for(j=0;str[i][j]!='\0';j++)
b[m][j]=str[i][j];
m++;
}
}

}

}
}
for (m=0,j=0;m<=15&&b[m][j]!='0';m++)
{
for(j=0;b[m][j]!='\0';j++)
printf("%c ", b[m][j]);
}
getch();}
persalena вне форума Ответить с цитированием
Старый 07.12.2008, 00:46   #2
TIN
Пользователь
 
Регистрация: 04.12.2008
Сообщений: 18
По умолчанию

Не хватило терпения разобраться в вашем коде
Предлагаю следующий

Код:
#include <iostream>
using namespace std;
#include <cstring>
#include <cctype>

int main() {
	const int n = 30, m = 9;
	char str[n * m + 1]; // = "qw,er,qw,dft,ty,qw,dft,op";
	cout << "Vvedite stroku:\n";
	cin.getline(str, n * m  + 1);
	char arr[n][m];
	int i, j, k = 0;
	for(i = 0; i < n; i++) {
		for(j = 0; j < m; j++)
			if (str[k] && !ispunct(str[k])) { arr[i][j] = str[k]; k++; } 
			else break;
		if (str[k]) k++;
		arr[i][j] = '\0';
	}
	for(i = 0; arr[i][0]; i++) cout << arr[i] << endl;  // тестовая распечатка
	cout << endl; 
	for(i = 0; arr[i][0]; i++)
		for(j = i + 1; arr[j][0]; j++)
			if (!strcmp(arr[i],arr[j])) { cout << arr[i] << endl; break; } 
	return 0;
}
Дублирование при вводе трех и более одинаковых слов уберите сами.
TIN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти все числа из массива B(n), встречающиеся более чем в одной строке матрицы A(m,n). Alexander89 Паскаль, Turbo Pascal, PascalABC.NET 2 16.10.2008 12:41
Дан двумерный массив случайных чисел. Построить одномерный из исходного, выбрав из него все числа кратные ProWinD Паскаль, Turbo Pascal, PascalABC.NET 2 16.06.2008 20:12
Найти все слова, отличающиеся от заданного на 1 букву и имеющую ту же длинну. gred Помощь студентам 5 23.05.2008 08:32
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56
предложения, все слова в которых образованны повторением одного символа, и сформировать из них массив kluwa Общие вопросы C/C++ 4 08.12.2007 15:17