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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2010, 13:44   #1
Serge93
Новичок
Джуниор
 
Регистрация: 19.12.2010
Сообщений: 4
По умолчанию Строки С++

Дана строка, состоящая из букв, цифр, запятых, точек, знаков «+» и «–». Выделить подстроку, которая соответствует записи целого числа.


Код:
#include <iostream.h>
#include <string.h>

int main()
{
	char st[100],st2;
	int i,j;
	cout << "Vvedite stroku";
	cin >> st;
	int n=strlen(st);
	for (i=0; i<n; i++)
	{

		if (st[i] == '+' || st[i] == '-')
		{
			st2=st[i];
		    for (j=i+1; j<n; j++);
			{
			if (st[j]<'0' || st[j]>'9') break; 
			st2=st2+st[j];
			}

		}

	}
	cout << st2;
	

	return 0;
}

Не подскажете, где ошибка?
Serge93 вне форума Ответить с цитированием
Старый 19.12.2010, 13:51   #2
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Такого сравнения вообще не делают

Код:
if (st[j]<'0' || st[j]>'9')
Надо работать с кодом ASCII
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 19.12.2010, 14:05   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Надо работать с кодом ASCII
Кто сказал? Такие сравнения гораздо удобнее чем по коду.

Цитата:
Serge93
Можно пример строки глянуть?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.12.2010, 14:06   #4
Serge93
Новичок
Джуниор
 
Регистрация: 19.12.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Можно пример строки глянуть?
Как я понял, вводишь:
qwerty+3456fqitf
и должно вывести +3456

PS программа ошибки не выдаёт, просто не выводит правильно

Последний раз редактировалось Stilet; 19.12.2010 в 15:22.
Serge93 вне форума Ответить с цитированием
Старый 19.12.2010, 14:23   #5
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от Serge93 Посмотреть сообщение
PS программа ошибки не выдаёт, просто не выводит правильно
А что именно выводит ?
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 19.12.2010, 14:27   #6
Serge93
Новичок
Джуниор
 
Регистрация: 19.12.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от andrewpalkin Посмотреть сообщение
А что именно выводит ?
+ или - и сразу Press any key...
Serge93 вне форума Ответить с цитированием
Старый 19.12.2010, 14:33   #7
Serge93
Новичок
Джуниор
 
Регистрация: 19.12.2010
Сообщений: 4
По умолчанию

Код:
	st2=st2+st[j];
мне больше не нравится эта строчка
Serge93 вне форума Ответить с цитированием
Старый 19.12.2010, 14:53   #8
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Вот именно , что у тебя проблема с st2 , так как это только один символ . А тебе надо последовательность .
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 19.12.2010, 15:29   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Всего-то...
Код:
	char s[]="qwerty+3456fqitf\0",s2[255];
	int j=0;
	for(int i=0;s[i]!='\0';i++){
		for(;(s[i]!='\0')&&(s[i]<'0'||s[i]>'9');i++);
		for(;(s[i]!='\0')&&(s[i]>='0'&&s[i]<='9');i++) s2[j++]=s[i];
		s2[j]='\0';j=0;
		printf("%s",s2);
	}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Дбавление новой строки, после строки с подходящими параметрами RailOS Microsoft Office Excel 5 18.08.2010 10:12
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10