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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2010, 22:57   #1
S1av0k
Пользователь
 
Регистрация: 26.11.2009
Сообщений: 87
По умолчанию С++ Строки + указатели

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

Код:
char addWord(char *p, char res[SZ])							//добавление слова в результирующую строку
	{
		char *tmp = p;
		
		while (*tmp)
			{
				if (*tmp == ' ' || *tmp == '\t')
					break;
								
  				*res++ = *tmp++;					
			}

		*res = ' ';
			
		return *res;	
	}
char *p - указатель на нужное слово, char res[SZ] - результирующая строка.
функция работает некорректно, почему - не понимаю. Прошу помощи!
Помог - жми весы

Последний раз редактировалось S1av0k; 16.11.2010 в 23:01.
S1av0k вне форума Ответить с цитированием
Старый 17.11.2010, 08:14   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Работает.
В чем именно проблема?
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 17.11.2010, 16:42   #3
S1av0k
Пользователь
 
Регистрация: 26.11.2009
Сообщений: 87
По умолчанию

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

Каким-то образом нужно сохранять позицию конца заполняемой строки, а потом дописывать новое слово, начиная с этой позиции...

Форум программистов, которые не могут помочь. Знатоки собрались видать
Помог - жми весы

Последний раз редактировалось Stilet; 01.12.2010 в 20:56.
S1av0k вне форума Ответить с цитированием
Старый 02.12.2010, 10:08   #4
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Цитата:
Задачу в основном решил
Задачу ты не решил. Даже частично.

А это решение.

Код:
#include <stdio.h>
int main(int argc, char* argv[])
{
  char s[100],d[100],firstsym;
  int cnt = 0;
  int flag = 0;
  gets(s);
  for(int i=0;s[i]!=0;i++)
	  if (s[i]!=' '&&s[i]!='\t'){firstsym=s[i];flag=1;break;}
  for(;s[i]!=0;i++)		 
  {
	  if (s[i]!=' '&&s[i]!='\t')
	  {
		  if (flag==1){d[cnt++]=s[i];}
		  else if (flag==0)
		  {if (s[i]==firstsym){flag=1;d[cnt++]=s[i];}else{flag=2;}}
		  else if (flag==2) {}
	  }
	  else 
	  {
       if (flag==1){d[cnt++]=' ';}	  
	   flag = 0;
	  }		  
  }
  d[cnt] = 0;
  puts(d);
  getchar();
  return 0;
}
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 03.12.2010, 20:43   #5
S1av0k
Пользователь
 
Регистрация: 26.11.2009
Сообщений: 87
По умолчанию

Угу. Вот только вопрос мой был не как решить задачу, а как заставить работать функцию. Я спросил только то, что мне нужно, а замечания по поводу не решенной задачи вы оставили не к месту.
Помог - жми весы
S1av0k вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели, символьные строки и функции dimit4 Общие вопросы C/C++ 1 15.01.2010 05:31
задача на с. указатели функции строки(хз как переделать) нонфактор Помощь студентам 1 12.01.2010 16:46
Строки и указатели........ karazmik Общие вопросы C/C++ 1 26.12.2009 01:16
Помогите решить задачу ан тему: Указатели, строки, функции обработки строк Chel Общие вопросы C/C++ 3 11.10.2009 19:48
Указатели на строки koljakolja Общие вопросы C/C++ 2 17.10.2008 22:57