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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2018, 20:46   #11
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
Сделал. Действительно криво было. Но вот какая штука. Стал компилятор требовать от меня знаки разные. Точку с запятой в конце условия цикла while. Сроду не ставил, а тут ему надо. И что интересно, ставишь, ошибку убирает.
Ошибки в плюсах строго с первой нужно смотреть. Чем ближе к концу, тем больше бреда в ошибках написано, т.к. код неправильно анализируется.
Внимательнее код пишем и всё будет нормально:
Код:
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')
pu4koff вне форума Ответить с цитированием
Старый 14.01.2018, 20:58   #12
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
ch >= '0' && ch <= '9'
Код:
if ((ch & 15) < 10) {...}
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 15.01.2018, 04:57   #13
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Ошибки в плюсах строго с первой нужно смотреть. Чем ближе к концу, тем больше бреда в ошибках написано, т.к. код неправильно анализируется.
Внимательнее код пишем и всё будет нормально:
Код:
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')
Да, действительно, спасибо.
После поправки кода компилятор ошибок не выдает.
Однако.
В процессе работы программы, после ввода строки, в которой есть цифры после точки и другие символы. Появляется оповещение о необработанном исключении. Что-то не так. А что не пойму. Программа то простенькая. Всю логику видно. Что не так-то?
KAMLS вне форума Ответить с цитированием
Старый 15.01.2018, 06:30   #14
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
Появляется оповещение о необработанном исключении
Мы должны догадаться что за исключение и где оно возникает?
waleri вне форума Ответить с цитированием
Старый 15.01.2018, 09:09   #15
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
Да, действительно, спасибо.
После поправки кода компилятор ошибок не выдает.
Однако.
В процессе работы программы, после ввода строки, в которой есть цифры после точки и другие символы. Появляется оповещение о необработанном исключении. Что-то не так. А что не пойму. Программа то простенькая. Всю логику видно. Что не так-то?
Код:
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);
					else ++j;
					c++;
				}
pu4koff вне форума Ответить с цитированием
Старый 15.01.2018, 16:04   #16
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Мы должны догадаться что за исключение и где оно возникает?
На скрине видно 21 строка. Если есть возможность скопируйте код и прогоните у себя в визуал. Что конкретно требует компилятор не пойму.
Код:
#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);
					else ++j;
					c++;
				}
			}
		}
	}
	return 0;
}
Изображения
Тип файла: jpg кадр_2.jpg (115.3 Кб, 136 просмотров)
KAMLS вне форума Ответить с цитированием
Старый 15.01.2018, 18:42   #17
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

И вот такой код тоже не работает. Всё время твердит про исключения.
Код:
#include<iostream>
#include<string>
using namespace std;
int main()
{
	setlocale(LC_ALL, "rus");
	string word;
	char ch('9');
	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 (ch>='0' && ch<='9')
			{
				j++;
				word.at(j);
				if (ch >= '0' && ch <= '9')
				{
					if (c >= 2)
						word.erase(j, 1);
					c++;
				}
			}
		}
	}
	return 0;
}
При построении ошибок нет. Поэтому трудно понять в чем дело. Тут с логикой программы что-то не то.
Подскажите пожалуйста в чем дело?
KAMLS вне форума Ответить с цитированием
Старый 15.01.2018, 18:49   #18
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что случится с длиной строки после удаления символа?

И что вы пытаетесь сделать этим?
Цитата:
Сообщение от KAMLS Посмотреть сообщение
Код:
word.at(j);
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.01.2018, 18:57   #19
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Что случится с длиной? Она станет меньше.
word.at(j); - это поэлементный вывод строки.
wlen надо уменьшать?
wlen--?
Дак исключения возникают до уменьшения строки..
KAMLS вне форума Ответить с цитированием
Старый 15.01.2018, 18:59   #20
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
word.at(j); - это поэлементный вывод строки.
Не вывод. Вы не выводите никуда.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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