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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2010, 17:06   #1
In4ekk
Пользователь
 
Аватар для In4ekk
 
Регистрация: 19.10.2010
Сообщений: 13
По умолчанию Си..задача на строки

вот задача :"Удалить в предложении все слова, имеющие символы цифр и распечатать полученный результат"

Вот код(пока не рассматриваю поиск цифр,а просто разбиваю предложение)

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
char str[80];
char terms[]="'!;:,.?- ";
char *res=NULL;
int main()
{
puts("Vvedite predl");
gets(str);

res=strtok(str, terms);
while(res)
{
*res=strtok(NULL, terms);
}
puts(res);
}

и вот в чем суть...не могу понять разбилась ли у меня строка на слова или нет....помогите пожалуйста

Последний раз редактировалось In4ekk; 25.10.2010 в 19:04.
In4ekk вне форума Ответить с цитированием
Старый 25.10.2010, 19:31   #2
__Demon__
Пользователь
 
Аватар для __Demon__
 
Регистрация: 13.08.2009
Сообщений: 37
По умолчанию

В общем это выглядит так:

Код:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

void DelWords(char *input, int size) // Функция удаления слов с символами цифр
{
	// Как в Си динамически выделить память не знаю но это не суть
	char *output = new char[size]; // Динамически выделяем память под выходную строку
	memset((void*)output, 0, size); // Заполняем её нулями

	char *ptr_s = strtok(input, " "); // Получаем первую лексему

	while (ptr_s) // Цикл пока есть лексемы
	{
		if (!strpbrk(ptr_s, "1234567890")) // Проверяем наличие чисел в лексеме
		{
			// Если нет то копируем лексему в выходную строку
			strcat(output, ptr_s);
			strcat(output, " ");
		}

		ptr_s = strtok(NULL, " "); // Получаем следующую лекскму
	}

	printf("Result: %s\n", output); // Печатаем результат

	delete output; // Освобождаем динамическую память
}


int main()
{
	char buf[25] = {"Hello, my diar1 friend!\0"};

	printf("Source: %s\n", buf);
	
	DelWords(buf, 20);
	
	system("PAUSE");
	return 0;
}

Последний раз редактировалось __Demon__; 25.10.2010 в 20:39.
__Demon__ вне форума Ответить с цитированием
Старый 25.10.2010, 19:43   #3
In4ekk
Пользователь
 
Аватар для In4ekk
 
Регистрация: 19.10.2010
Сообщений: 13
По умолчанию

Спасибо Вам Большое,__Demon__!!!
пошла разбираться )
In4ekk вне форума Ответить с цитированием
Старый 09.12.2010, 22:00   #4
In4ekk
Пользователь
 
Аватар для In4ekk
 
Регистрация: 19.10.2010
Сообщений: 13
По умолчанию

а не подскажите как реализовать выше написанный код без Output ,new char и delete output.......
препод к сожаленью этого не оценил =(
а сама пробовала ,но чушь одна получается
In4ekk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на строки Jasper92 Общие вопросы C/C++ 7 16.12.2009 15:24
задача на строки BERT Паскаль, Turbo Pascal, PascalABC.NET 1 07.04.2009 10:07
Задача на строки Stiff Помощь студентам 6 26.03.2009 22:47
Задача на строки LaSeule Помощь студентам 2 31.01.2009 00:54