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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2010, 13:43   #1
WESTnik
 
Регистрация: 18.03.2010
Сообщений: 6
По умолчанию Проблемы со строкой

Доброго времени суток! Задача следующая:
Дана последовательность слов. Напечатать в алфавитном порядке все глухие согласные буквы а это (к , п , с , т , ф , х , ч , ш , щ), которые не входят хотя бы в одно слово.

Если я правильно понял - то искать нужно отдельно стоящие символы + проверка на 1-ый и последний символ...Тогда вопрос - если искать в цикле посимвольно
Код:
char ss[]={'к','п','с','т','ф','ч','ш','щ'};// строка с глухими а s[] - исходная введенная строка 
        int i;
for(i=0;s[i]!='\0';i++){
for(int j=0;ss[j]!='\0';j++){
        if((((s[i]==ss[j])&&(s[i-1]==' ')&&(s[i+1]==' ')&&(s[i]!='\0')))) //
то делать что-то...
А собственно говоря что?
Может все глухие символы встречающиеся в строке загнать в массив и потом отсортировать????
Направьте плз на путь истинный......Подкиньте идею!
Заранее благодарен.

Последний раз редактировалось Stilet; 18.03.2010 в 13:53.
WESTnik вне форума Ответить с цитированием
Старый 19.03.2010, 18:41   #2
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию

Теперь все по условию
Код:
#include "stdafx.h"
#include <iostream>
#include <string.h> 
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL, "Russian");
	char string[] = "кпстфчшщ кпстфчшщ кпстфчшщ кпстфчшщ кпстфчшщ кпстфчшщ";  // Проверяемая строка (при таком наборе букв программа ничего не выводит)
	char ss[]={'к','п','с','т','ф','ч','ш','щ'};
	char string1[100];  //Промежуточный массив в который заносятся буквы не найденные в каждом слове(большой потому, что буквы повторяются)
	char string2[9];  // Итоговый массив глухих согласных
	char *tokenPtr[100];  // Массив указателей на лексемы (в данном случае слова)
	int i=0, j, k, r=0, n, p;  // Всякая фигня лень было нормальные названия давать

	cout<<string<<"\n";

	tokenPtr[i]=strtok(string, " ");  //Разбиваем предложение на лексемы (слова)
	i++;

	while (tokenPtr[i-1] != NULL)  // Заносим слова в массив указателей (каждый элемент массива указывает на слово)
	{ 
		tokenPtr[i] = strtok(NULL, " ");
		i++;		
	} 
	
	for (j=0; j<i-1; j++) // Просматривает каждое слово предложения если нужная буква не найдена она заносится в промежуточный массив string1 (буквы могут повторяться)
		for (n=0; n<8; n++)
		{
			p=0;
			for (k=0;*(tokenPtr[j]+k)!='\0'; k++)
			{
				if (*(tokenPtr[j]+k)==ss[n])
				{
					p=1;
				}
			}
			if (p==0)
			{
				string1[r]=ss[n]; r++;
			}
		}
		string1[r]='\0'; // Окончание массива
							 
		cout<<"\n";
		r=0;

		for (i=0; i<8; i++)// Удаляет повторяющиеся буквы, и сортирует по алфавиту (помойму самое простое решение)
		{
			p=0;
			for (j=0; string1[j]!=0; j++)
				{
					if(ss[i]==string1[j])
						p=1;
				}

			
			if (p==1)
				{
					string2[r]=ss[i]; r++;
				}
		}

		string2[r]='\0';
		cout<<string2<<"\n";
	return 0;
}
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол

Последний раз редактировалось atenon; 20.03.2010 в 05:27.
atenon вне форума Ответить с цитированием
Старый 19.03.2010, 19:31   #3
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Сдаётся мне, что здесь чуть позапутаннее условие...

char string[]="отдельно стоящие";

Глухая согласная 'щ' не входит хотя бы в одно слово (в первое) и поэтому должна быть напечатана (хоть вообще в строке она и есть). А вот 'т' - входит в оба, и поэтому напечатана быть не должна. Я правильно понял?
Vago вне форума Ответить с цитированием
Старый 19.03.2010, 20:04   #4
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию

Гмм.. Поторопился условие не прочитал внимательно
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
atenon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мучения со строкой Кипящий чайник Общие вопросы C/C++ 7 18.03.2010 13:17
работа со строкой Андрей.12 Помощь студентам 1 15.02.2010 09:14
Программа со строкой. XaMeJleoH Паскаль, Turbo Pascal, PascalABC.NET 0 26.05.2009 21:48
Задача со строкой XaMeJleoH Паскаль, Turbo Pascal, PascalABC.NET 2 12.04.2009 19:07
Проблемы со строкой и подсказкой bill Помощь студентам 1 29.04.2007 16:03