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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2019, 22:00   #1
Nstd
Новичок
Джуниор
 
Регистрация: 18.11.2018
Сообщений: 1
По умолчанию [C++] Удаление четных слов из строки. код не работает

Необходимо в таком виде удалить четные слова из строки, помогите пожалуйста
Этот код не работает си
Код:
#include <stdio.h>
#define YES 1
#define NO 0
#define MAXLINE 1000
void process_line(char buffer[]);
int main(void)
{
	char line[MAXLINE];
	gets(line);
	process_line(line);
	puts(line);
	return 0;
}
void process_line(char buffer[])
{
	char c; // текущий символ
	int prev_c; // предыдущий символ
	int flag; // признак слова
	int found; // индикатор того, что искомый признак
			   // в слове обнаружен
	int i,cnt; // позиция текущего символа исходной
		   // cтроки
	
		int pos; // позиция текущего символа
				 // результирующей строки
	int start; // позиция начала слова
	int j;
	// начальные присваивания (инициализация)
	flag = NO;
	found = NO;
	prev_c = ' ';
	start = 0;
	i = 0;
	pos = 0;
	cnt = 0;
	// цикл чтения символов из строки
	do
	{
		c = buffer[i]; // взять текущий символ из
					   // буфера
		if (c == ' ' || c == '.' || c == ',' ||
			c == '\n' || c == '\0')
		{
			// найден разделитель
			if (flag == YES)
			{
				// это первый разделить после слова
				// проверить, обнаружен ли в слове
				// искомый признак
				if (found == NO)
					
				{
					// слово не подлежит удалению
					// оно копируется в результирующую
					// строку
					for (j = start; j < i; j++)
						buffer[pos++] = buffer[j];
				}
			}
			flag = NO;
			buffer[pos++] = c;
		}
		else
		{
			// найдена буква
			if (flag == NO)
				start = i; 

			if (start % 2==0)
				found = YES;
			else
				found = NO;
			flag = YES;
			
		}
		
		i++;
		
	} while (c != '\0');

Последний раз редактировалось Nstd; 03.04.2019 в 22:19.
Nstd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление первых трех слов из строки The SCS Общие вопросы Delphi 2 29.03.2012 22:14
Удаление слов из строки Pritcher Паскаль, Turbo Pascal, PascalABC.NET 2 15.02.2012 17:16
Удаление длинных слов из строки Broken Angel Помощь студентам 3 16.01.2011 13:14
Удаление слов из строки. grave123 Общие вопросы C/C++ 2 20.12.2009 15:01
Удаление слов из строки С vivo89 Помощь студентам 4 13.11.2009 22:13