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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2009, 13:12   #1
Maruff
 
Аватар для Maruff
 
Регистрация: 12.05.2009
Сообщений: 9
Вопрос С++ : Как разбить целое число на составляющие?

Доброе время суток граждане Программисты!
Являюсь начинающим "программистом" на С++. Мои познания очень малы, но настрой познать примудрости языков программирования очень велик.
Начал свой самостоятельный путь познания с популярного учебного пособия "Как программировать на С++" Дейтела. Материал изложен доступно и с пониманием пока проблемм не возникало. Но есть одно НО:
В силу того, что у меня еще не сложился специфический образ мышления, свойственный программистам, я столкнулся с проблеммой решения некоторых упражнений (в книги они не прорешены). Но в силу своей черты доводить все до конца, не как не могу начать читать дальше, пока не прорешаю данное упражнение.
Итак, суть вопроса:
Необходимо написать программу на С++, которая осуществляет ввод целого числа и разбивает его на составляющие. Т.е. вводим 123456, а выводится 1 2 3 4 5 6...интервал, к примеру, в три пробела.
У меня думалки не хватило. Прошу помощи.
Заранее благодарен, Maruff
Главная ошибка любого человека в том, что он думает что у него есть время.
тик-так тик-так ...
Maruff вне форума Ответить с цитированием
Старый 17.06.2009, 13:37   #2
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

123456%10 - это будет 6
123456/10 - это будет 12345
12345%10 - это 5
12345/10 - это будет 1234 (все это делаем в цикле)

Цифры, которые отделяются с помощью %10 записываем в какой-либо массив. А потом выводим его с конца.
Идея ясна?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 17.06.2009, 15:10   #3
Maruff
 
Аватар для Maruff
 
Регистрация: 12.05.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
123456%10 - это будет 6
123456/10 - это будет 12345
12345%10 - это 5
12345/10 - это будет 1234 (все это делаем в цикле)

Цифры, которые отделяются с помощью %10 записываем в какой-либо массив. А потом выводим его с конца.
Идея ясна?
Большое спасибо за отклик! Идея ясна, но не совсем ясна реализация. Не понял как делать в цикле? Лучше покажу, что я наворотил

#include<iostream>
using std::cout;
using std::cin;
using std::endl;

int main ()
{
int x, x1, x2, x3, x4, x5, x6;
cout << "Enter number: " << endl;
cin >> x;

x1 = x % 10;
x = x / 10;

x2 = x % 10;
x = x / 10;

x3 = x % 10;
x = x / 10;

x4 = x % 10;
x = x / 10;

x5 = x % 10;
x = x / 10;

x6 = x;

cout << x << " " << x5 << " " << x4 << " "
<< x3 << " " << x2 << " " << x1 << endl;

system("PAUSE");
return 0;
}

Работает только с целыми шестизначными цифрами или меньше.
Наверное есть более оациональное решение?
Открыт для критики
Главная ошибка любого человека в том, что он думает что у него есть время.
тик-так тик-так ...
Maruff вне форума Ответить с цитированием
Старый 17.06.2009, 15:15   #4
bullvinkle
Временно — юрист.
Форумчанин
 
Аватар для bullvinkle
 
Регистрация: 31.03.2008
Сообщений: 204
По умолчанию

Вот так я "первел")) с паскаля вчерашнюю программу))
Не обращай внимание на кучу инклудов, их у меня напостой много.
Код:
#include "stdafx.h"
#include <iostream>
#include <ostream>
#include <string>
using namespace std;

int main(int argc, char* argv[])
{
	cout << "Input number: ";
	int n;
	cin >> n;
	int m=0, i=0;
	int mas[20];
	while (n >10)
	{
		m=n%10;
		n=n/10;
		mas[i]=m;
		i++;
	}
	mas[i]=n;
	for (int j = i; j>=0; --j)
		cout << '\t' << mas[j];
}
bullvinkle вне форума Ответить с цитированием
Старый 17.06.2009, 15:41   #5
Maruff
 
Аватар для Maruff
 
Регистрация: 12.05.2009
Сообщений: 9
По умолчанию

ACE Valery спасибо большое за то что направила в верную сторону.
bullvinkle спасибо за представление иного варианта решения. Но над ним мне еще предстоит подумать и почитать.
Главная ошибка любого человека в том, что он думает что у него есть время.
тик-так тик-так ...
Maruff вне форума Ответить с цитированием
Старый 17.06.2009, 15:47   #6
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Что-то вроде того...
Код:
#include<iostream>
using std::cout;
using std::cin;
using std::endl;

int main ()
{
const int n = 10; 
int mas[n]; //массив для хранения отделенных чисел
int x, k = 0;
cout << "Enter number: " << endl;
cin >> x;
for(int i = 0; i < n; i++)
{
	/*почему -1? массив состоит из 10 ячеек. Допустим, у нас 6-значное число. То есть 4 ячейки массива
	будут пустыми. Чтоб отделить как-то нужные нам цифры от пустых, как-то обозначаем пустые. Их-то выводить не надо*/
	mas[i] = -1;
}

while(x > 0)
{
	mas[k] = x%10; //в массив записываем отделенную последнюю цифру
	x = x/10; //введенное число уменьшаем 
	k++;
}
for(int i = n-1; i >= 0; i--)
{
	if(mas[i] > -1)
		cout<<mas[i]<<"   ";
}
cout<<endl;
system("PAUSE");
return 0;
}
Что не понятно, спрашивайте. Правда, объяснятель из меня плохой ^__^

P.S. Мне, наверное, и правда пора научиться обновлять страницы )))
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 17.06.2009 в 15:50.
ACE Valery вне форума Ответить с цитированием
Старый 17.06.2009, 16:00   #7
Maruff
 
Аватар для Maruff
 
Регистрация: 12.05.2009
Сообщений: 9
По умолчанию

Пошел читать и чесать репу
Главная ошибка любого человека в том, что он думает что у него есть время.
тик-так тик-так ...
Maruff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверить корректно ли введено целое число slips Общие вопросы C/C++ 3 22.04.2009 09:23
Как разбить число на массив? recond Общие вопросы C/C++ 15 03.02.2009 00:36
Перевести целое положительное десятичное число в шестнадцатеричное счисление Alfis Паскаль, Turbo Pascal, PascalABC.NET 3 28.12.2008 20:40
Как разбить число по числам? maxim_ov Microsoft Office Excel 3 04.08.2008 16:23
Сколь угодно большое целое число 1nd1g0k1d Общие вопросы C/C++ 3 29.02.2008 18:15