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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2013, 18:29   #1
alexelev
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 26
По умолчанию Поиск символов в тексте. С++

Задачка: есть текстовый файл, необходимо создать массив, хранящий положения определенного символа - пробела - в этом текстовом файле. Количество символов файла и количество искомых символов (пробелов) нам известно.
Мой вариант реализации: посимвольно сравниваем текст с искомым символом (пробелом), при нахождении его в тексте в ячейку динамически выделенной памяти для хранения положений искомого символа в тесте записываем значение символа, на котором произошло совпадение.
Проблема: в динамический массив записывается только первое значение положения найденного символа, после запись не производится.
Пример реализации:
Код:
//выделяем память под хранения массива значений положения пробела в тексте
int *space=new int [sizeSymb]	
//счетчик пробелов
int j=0;						
//size - количество символов в тексте
for(int i=0; i<size; i++)		
{
//считываем символ текста и сравниваем его с искомым (fn - текст. файл)
	if((char)fgetc(fn)==' ')	
	{
//если считали пробел - записываем положение i в массив space[sizeSymb] в ячейку j
		space[j]=i;				
//перемещаемся в следующую ячейку массива space[sizeSymb]
		j++;					
	}
	else continue;
}
Никак не пойму, чего не хватает для нормальной работы.

Последний раз редактировалось alexelev; 24.03.2013 в 18:48.
alexelev вне форума Ответить с цитированием
Старый 24.03.2013, 18:49   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
int ch, i = 0;
vector space;
while((ch = fgetc(fn)) != EOF) {
    if (ch == ' ') space.push_back(i);
    ++i;
}
Попробуйте.
Да, как Вы определили, что запись больше не производится?

Режим экстрасенса (beta версия):
Вы используете переменную j, как счетчик цикла, при выводе массива space.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 24.03.2013 в 19:03.
BDA вне форума Ответить с цитированием
Старый 24.03.2013, 19:15   #3
alexelev
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 26
По умолчанию

не стоит переходить в режим экстрасенса, все гораздо проще - смотрю через дебаггер =)
Предложенный Вами вариант работоспособен, однако к сожалению я не могу им воспользоваться, т.к. это только кусок кода, на который завязан остальной код, а он написан без использования классов STL (честно говоря, на своем этапе обучения я не в курсе класса vector и его плюшек, не говоря уж обо всем остальном ). Было бы чудесно, если бы я смог понять в чем отличие Вашего варианта и моего
alexelev вне форума Ответить с цитированием
Старый 24.03.2013, 19:20   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Хм, попробуйте так:
Код:
for(int i = 0; i < size; ++i) {
    if (fgetc(fn) == ' ') space[j++] = i;								
}
UPD
Пожалуйста
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 24.03.2013 в 20:12.
BDA вне форума Ответить с цитированием
Старый 24.03.2013, 19:30   #5
alexelev
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 26
По умолчанию

Благодарю за помощь, таким образом все работает
alexelev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подсчет символов в тексте(С#) Vovchik123 Помощь студентам 2 13.04.2012 18:41
замена символов в тексте majikku Общие вопросы Delphi 1 31.01.2011 00:13
Замена символов в тексте Pasha_Sh Работа с сетью в Delphi 13 16.06.2010 00:29
Поиск символов в тексте ksu25 Паскаль, Turbo Pascal, PascalABC.NET 2 25.09.2009 19:23
Поиск и удаление символов в тексте (Delphi) ekzobyte Помощь студентам 2 04.04.2009 19:46