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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2013, 20:24   #1
dragodar
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 51
По умолчанию Разбивание числа на цифры

всем добрый вечер! я пока только начинаю изучать с++ и столкнулся с такой проблемой. Мне поставили задачу что мне надо вывести все числа в возрастающей децимальной последовотельности типа для 130 это будет 123 124 125 126 127 128 129. но вот я немогу разделить числа на цифры когда известно число это просто и есть готовый код для этого но препод заставил переделать пока что из готового и подтвержденого им осталось только
Код:
#include<iostream>
#include<math.h>
#include<conio.h>
using std::cin; 
using std::cout;
int main(int argc, char* argv[])

{
	int i=100,N;
	cout<<"input number higher than 100  N= ";
	cin>>N;
	int a=i;
	if (N<i) 
	{
		cout<<"illegal number input		"<<"\n";
	}

}
пишу на Visual studio 2012 вот то что я попробовал сделать но пока что безрезультатно
Код:
#include<iostream>
#include<math.h>
#include<conio.h>
using std::cin; 
using std::cout;

int main(int argc, char* argv[])

{
	int i=100,N;
	cout<<"input number N higher than 100  N= ";
	cin>>N;
	int a=i;
	if (N<i) 
	{
		cout<<"illegal number input		";
	}
	/*int f1,f2x,f2,f3,f3x,f4x,f4,f5x,f5,f6x,f6;/*,f7x,f7,f8x,f8;*/
	int f;
	int f1=a%10;
	int q=2;
	for(a; a<=N; a++)
	{
		cout<<a<<"	";
		for(f1;a;q++)
		{
			int sq=pow(10,q); 
			int sq1=pow(10,q-1);
			f=(a%sq)/(sq1);
				cout<<f<<"	";
		}

			
	}
	return 0;
}
заранее спасибо за помошь!

Последний раз редактировалось dragodar; 14.10.2013 в 20:30.
dragodar вне форума Ответить с цитированием
Старый 14.10.2013, 20:31   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

я не понял задания, гугл не помог. Примеры кода тоже не помогли (их я вообще не понял).
Что ты пытаешься делать? поясни на примерах.
rrrFer вне форума Ответить с цитированием
Старый 14.10.2013, 21:02   #3
dragodar
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 51
По умолчанию

мне нужно к примеру число 13254932156615 (ЭТО ПРИМЕР) разбить на числа 1 3 2 5 4 9 3 2 1 5 6 6 1 5 . дальше думаю сам разберусь со сравнением
возрастающая децимальная последовательность жто когда следуюшее число больше предыдущего типа 123456789 такое а 123457689 нет
dragodar вне форума Ответить с цитированием
Старый 14.10.2013, 22:00   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
std::stringstream sstr;

sstr << myNumber;
sstr >> myString;

for (auto t : myString) 
  cout << t << " ";
не?
rrrFer вне форума Ответить с цитированием
Старый 14.10.2013, 22:15   #5
dragodar
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 51
По умолчанию

ну 1) для цикла for нужно начало и конец (компилятор жалуется)
2)нужно использовать sstr << myNumber;
sstr >> myString;
т.и как я понял это моё число и моя строка (вектор)? если так то как потом будет подсчитыватся сравнение т.и от 1 симбола(цифры) до последней цифры?
dragodar вне форума Ответить с цитированием
Старый 15.10.2013, 10:23   #6
Prince730
 
Регистрация: 03.06.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от dragodar Посмотреть сообщение
мне нужно к примеру число 13254932156615 (ЭТО ПРИМЕР) разбить на числа 1 3 2 5 4 9 3 2 1 5 6 6 1 5 . дальше думаю сам разберусь со сравнением
возрастающая децимальная последовательность жто когда следуюшее число больше предыдущего типа 123456789 такое а 123457689 нет
В общем, есть один вариант без использования строк. Вот такой пример:
Код:
int x = 1251;
cout << x/1000 << endl; //Получаем 1
cout << x/100%10 << endl; //Получаем 2
cout << x/10%10 << endl; //Получаем 5
cout << x%10 << endl; //Получаем 1
Мне кажется, препод ждёт от тебя разбиения по разрядам именно таким образом - подобные задачи часто встречаются в книжках.
Prince730 вне форума Ответить с цитированием
Старый 15.10.2013, 14:14   #7
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
ну 1) для цикла for нужно начало и конец (компилятор жалуется)
обнови компилятор
Цитата:
если так то как потом будет подсчитыватся сравнение т.и от 1 симбола(цифры) до последней цифры?
откуда я знаю как там что потом будет подсчитываться? - я тебя по человечески спрашивал:
>> Что ты пытаешься делать? поясни на примерах.
<< ...дальше думаю сам разберусь со сравнением
Сказал что разберешься - разбирайся.

Алгоритм работы с форумом для студента должен быть такой:
1. сформулировать вопрос (у тебя в первом посте вопроса вообще не было);
2. оформить примеры с описанием (мне в корне не понятно это "для 130 это будет 123 124 125 126 127 128 129" - откуда эти цифры взялись, и почему именно эти);
3. дать все это прочитать соседу-гуманитарию;
4. если у соседа есть вопросы - идешь на п.1;
5. выложить на форум.

Последний раз редактировалось rrrFer; 15.10.2013 в 14:18.
rrrFer вне форума Ответить с цитированием
Старый 16.10.2013, 00:16   #8
dragodar
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 51
По умолчанию

всем спасибо за помощь вот что я пока что сделал для чисел до 1000 осталось только закончить проверки на нули в массивах
Код:
	int i=100,N;
	cout<<"input number N that higher than 100  N= ";
	cin>>N;
	int a=i;
	if ((N<i)||(N>123456790)) 
	{
		cout<<"illegal number input		"<<"\n";
	}
	for(;a<=N;a++)
		{

			int b=a;
			int mas[9]={0};
			 for(i=0; i<9; i++)
				{
					if(i==0)
						{
							mas[i]=b%10;
							b/=10;
						}
					else
						{
							mas[i]=b%10;
							b=b/10;
						 }
					//if (!b) break;
				}
			 
			for(int hz=8;hz>=0;hz--)
			{
				if(mas[hz]>0)
				{
					int k=hz;  hz=0;
					for(; k>=0; k--)
					{
						
						if((mas[0]>mas[1])&&(mas[1]>mas[2])) printf("%i",mas[k]);
						
					}
					if((mas[0]>mas[1])&&(mas[1]>mas[2])) printf("   ");
				}

			}
			
		}

	return 0;
}
может есть какие нибудь советы относительно этого?
dragodar вне форума Ответить с цитированием
Старый 16.10.2013, 00:18   #9
dragodar
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 51
По умолчанию

ну и ещё всё таки проверки на величину чисел надо доделать)
dragodar вне форума Ответить с цитированием
Старый 16.10.2013, 00:28   #10
dragodar
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 51
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
А
2. оформить примеры с описанием (мне в корне не понятно это "для 130 это будет 123 124 125 126 127 128 129" - откуда эти цифры взялись, и почему именно эти);

5. выложить на форум.
пожалуйста условие задачи.Вывести все числа которые больше 100 таким образом чтобы их децимальная запись была бы в возрастающем порядке.
Поясню с примером
Допустим есть число 128
проверяются все числа начиная со 100 т.и 100 101 102 103 104... до 128
потом проверяется каждая цифра в числе т.и 100 -> 1 0 0 1 потом 0 числа уменьшаются значит число неидёт и так далее... до числа 122 -> 1 потом 2 (норм) после 2 идёт 2 значит число неидёт. потом 123 -> 1 потом 2 потом 3 т.и числа увеличиваются значит число идёт и выводится на экран. по моим подсчетам максимальное число 123456789 в связи с этим можно использовать массив из 9 элементов. Теперь я надеюсь всё стало понятно
dragodar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить произведение разности первых двух цифр трехзначного числа и младшей цифры этого числа. Hoginat Паскаль, Turbo Pascal, PascalABC.NET 3 24.12.2012 22:13
задача - найти произведение первой цифры целой части и третей цифры дробной части вещественного числа. LAZARUS maks22 Lazarus, Free Pascal, CodeTyphon 2 30.01.2012 19:53
VisualBasic.Исключить из числа цифры, стоящие между первой и последней цифрой числа. ride013 Помощь студентам 0 03.05.2011 21:20
Цифры числа... Mr.Qwerty Паскаль, Turbo Pascal, PascalABC.NET 1 08.09.2009 18:44
удаление цифры из числа Elm0 Паскаль, Turbo Pascal, PascalABC.NET 2 15.03.2008 01:51