Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 11.01.2018, 18:50   #1
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 216
Репутация: 10
По умолчанию Удаление символа из строки.

Здравствуйте!
Написал код, но не могу закончить. Надо удалить символ из строки во время работы цикла.
Задача: удалять все цифры после второй цифры идущие после точки. Ну типа создать программку по такому вот форматированию строки.
Код:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	setlocale(LC_ALL, "rus");
	string word;
	int c;
	cout << "Введите строку: \n";
	cin >> word;
	int wlen = word.size();
	for (int j = 0; j < wlen; j++)
	{
		word.at(j);
		if('.')
			while ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
			{
				j++;
				word.at(j);
				if ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
				{
					if (c >= 2)
						delete;
					c++;
				}
			}
	}
	return 0;
}

Выдаёт ошибку по delete. Что использовать вместо него? erase работает только с объектами стринг.
KAMLS вне форума   Ответить с цитированием
Старый 11.01.2018, 19:54   #2
Андрей Ш++
учу с++
Пользователь
 
Аватар для Андрей Ш++
 
Регистрация: 06.10.2017
Сообщений: 36
Репутация: 10
Радость

А что должна делать то программа??
Андрей Ш++ вне форума   Ответить с цитированием
Старый 12.01.2018, 17:01   #3
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 216
Репутация: 10
По умолчанию

Программа должна удалять все цифры после второй которые начинаются после точки. До следующего символа не цифры.
KAMLS вне форума   Ответить с цитированием
Старый 12.01.2018, 17:31   #4
pu4koff
Профессионал
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,570
Репутация: 3589
По умолчанию

так у вас и есть объект string, чем erase не подошел?
и условия неправильные.
Код:

if ('.' == word[j])
{
  ++j;
  while (word[j] == '0' || word[j] == '1' || ...)
 ...
  word.erase(j,1);
}

ну, там еще у цикла for границу поменять надо, т.к. точка не может быть последним символом
__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Старый 14.01.2018, 16:11   #5
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 216
Репутация: 10
По умолчанию

Сделал. Действительно криво было. Но вот какая штука. Стал компилятор требовать от меня знаки разные. Точку с запятой в конце условия цикла while. Сроду не ставил, а тут ему надо. И что интересно, ставишь, ошибку убирает.
Вот код
Код:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	setlocale(LC_ALL, "rus");
	string word;
	int c=1;
	cout << "Введите строку: \n";
	cin >> word;
	int wlen = word.size();
	for (int j = 0; j < wlen; j++)
	{
		word.at(j);
		if(word[j]=='.')
		{
			++j;
			while (word[j]=='0' || word[j]=='1' word[j]=='2' || word[j]=='3' || word[j]=='4' || word[j]=='5' || word[j]=='6' || word[j]=='7' || word[j]=='8' || word[j]=='9')
			{
				j++;
				word.at(j);
				if (word[j]=='0' || word[j]=='1' word[j]=='2' || word[j]=='3' || word[j]=='4' || word[j]=='5' || word[j]=='6' || word[j]=='7' || word[j]=='8' || word[j]=='9')
				{
					if (c >= 2)
						word.erase(j,1);
					c++;
				}
			}
		}
	}
	return 0;
}

Скриншот с ошибками прикреплён. Куда ставить скобки не пойму.
Изображения
Тип файла: jpg кадр.jpg (120.6 Кб, 3 просмотров)
KAMLS вне форума   Ответить с цитированием
Старый 14.01.2018, 16:44   #6
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 15,787
Репутация: 3110

icq: 512-765
skype: alexp.frl
По умолчанию

Посмотрите уже на ASCII таблицу и определение типа char и напишите нормальное короткое условие.
Alex11223 на форуме   Ответить с цитированием
Старый 14.01.2018, 18:10   #7
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 216
Репутация: 10
По умолчанию

Это так?
unsigned char a=48;
unsigned char b=57;
while(a:b)
{
Честно говоря пока не обучен этому делу. В учебнике было всего несколько строк про эту таблицу.
KAMLS вне форума   Ответить с цитированием
Старый 14.01.2018, 18:28   #8
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 15,787
Репутация: 3110

icq: 512-765
skype: alexp.frl
По умолчанию

ch >= '0' && ch <= '9'
Alex11223 на форуме   Ответить с цитированием
Старый 14.01.2018, 18:53   #9
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 216
Репутация: 10
По умолчанию

ch определяется как char или unsigned char?
И инициализируется ли вообще предварительно?
Или просто определяется?
Правда, стыдно иногда делается, чую, что вроде бы это знать надо как дважды два, но если информации пока нет, то возьмётся только откуда то.
Раньше я так пользовался таблицей ASCII
Код:

#include<iostream>
using namespace std;
#include<conio.h>
int main()
{
	
	const unsigned char WHITE=219;
	const unsigned char GRAY=176;
	unsigned char ch;
	for(int count=0; count<80*25-1; count++)
	{
		ch=WHITE;
		for(int j=2; j<count; j++)
			if(count%j==0)
			{
				ch=GRAY;
				break;
			}
			cout<<ch;
	}
	getch();
	return 0;
}

KAMLS вне форума   Ответить с цитированием
Старый 14.01.2018, 19:23   #10
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 15,787
Репутация: 3110

icq: 512-765
skype: alexp.frl
По умолчанию

char, у вас же символы.
unsigned char обычно для хранения байтов используют (в новых стандартах есть более удобный uint8_t).
Alex11223 на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi удаление символа из строки! sokolik-117845 Помощь студентам 1 09.04.2012 14:32
Удаление строки до определенного символа glebast Помощь студентам 25 02.03.2012 01:30
Удаление символа из строки Alex1991 Assembler 2 23.11.2010 21:58
Удаление символа из строки forsaken66 Общие вопросы C/C++ 4 06.11.2009 12:33
удаление символа окончания строки Xozer SQL, базы данных 1 07.02.2008 13:19


01:47.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru