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

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

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

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

Цитата:
Сообщение от 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')

__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Старый 14.01.2018, 21:58   #12
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,136
Репутация: 2042

icq: 100500
skype: kick-ass
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
ch >= '0' && ch <= '9'
Код:

if ((ch & 15) < 10) {...}

__________________
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума   Ответить с цитированием
Старый 15.01.2018, 05:57   #13
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 216
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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, 07:30   #14
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,241
Репутация: 1578
По умолчанию

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

Цитата:
Сообщение от 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++;
				}

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

Цитата:
Сообщение от 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 Кб, 2 просмотров)
KAMLS вне форума   Ответить с цитированием
Старый 15.01.2018, 19:42   #17
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 216
Репутация: 10
По умолчанию

И вот такой код тоже не работает. Всё время твердит про исключения.
Код:

#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, 19:49   #18
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 15,313
Репутация: 3001

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

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

И что вы пытаетесь сделать этим?
Цитата:
Сообщение от KAMLS Посмотреть сообщение
Код:

word.at(j);

Alex11223 на форуме   Ответить с цитированием
Старый 15.01.2018, 19:57   #19
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 216
Репутация: 10
По умолчанию

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

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
word.at(j); - это поэлементный вывод строки.
Не вывод. Вы не выводите никуда.
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




12:11.


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

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


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