Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.84
AndreyAndroid
1 / 1 / 0
Регистрация: 15.01.2011
Сообщений: 132
#1

как работать с каждой цифрой четырехзначного числа по отдельности. - C++

04.09.2011, 20:18. Просмотров 2393. Ответов 29
Метки нет (Все метки)

Вот есть задача на с++. Но не знаю с чего начать... как работать с каждой цифрой четырехзначного числа по отдельности.
Миниатюры
как работать с каждой цифрой четырехзначного числа по отдельности.  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2011, 20:18     как работать с каждой цифрой четырехзначного числа по отдельности.
Посмотрите здесь:
C++ Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми
Исключить из числа цифры, стоящие между первой и последней цифрой числа. Использовать классы C++
C++ Записать пятизначное число в строку, с отступом в 3 пробела между каждой цифрой
Инвертировать цифры четырехзначного числа C++
Найти произведение цифр заданного четырехзначного числа C++
Найти произведение цифр заданного четырехзначного числа C++
C++ Произведение цифр введенного с клавиатуры четырехзначного числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheAthlete
152 / 152 / 13
Регистрация: 31.08.2010
Сообщений: 535
04.09.2011, 21:16     как работать с каждой цифрой четырехзначного числа по отдельности. #2
просьба пользоваться поисковыми системами. Яндекс на запрос "получить все цифры числа" в первой строке выдал нужную информацию

http://ru.wikibooks.org/wiki/%D1%E8%...EB%E5%ED%E8%FF

раздел "преобразование чисел"

для примера:

исходное число 2573

2573 / 10 = 257, остаток 3
257 / 10 = 25, остаток 7
25 / 10 = 2, остаток 5
2 / 10 = 0, остаток 2

в результате в остатке сохраняется наше значение (число читается с конца)
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
04.09.2011, 21:52     как работать с каждой цифрой четырехзначного числа по отдельности. #3
C++
1
2
3
4
5
6
7
8
9
10
11
char s[5];
 
std::cin >> s;
 
for (char i = 0; i < 4; i++)
  s[i] = ((s[i] - '0') + 7) % 10;
 
std::swap(s[0], s[2]); // или он не в std?
std::swap(s[1], s[3]);
 
std::cout << s;
AndreyAndroid
1 / 1 / 0
Регистрация: 15.01.2011
Сообщений: 132
04.09.2011, 22:10  [ТС]     как работать с каждой цифрой четырехзначного числа по отдельности. #4
После 1 ответа всё стало ясно, и тут же была создана шивровалка. Расшифровку пока не делал... там всё ясно. Но код получился длинный и не такой как у iama. Не могли бы вы пояснить свой код?
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
04.09.2011, 22:12     как работать с каждой цифрой четырехзначного числа по отдельности. #5
AndreyAndroid, я просто считываю число в строковом формате, где можно легко выделить каждый разряд, соответствующим образом обрабатываю. Если что-то конкретно непонятно, спрашивайте
AndreyAndroid
1 / 1 / 0
Регистрация: 15.01.2011
Сообщений: 132
04.09.2011, 22:15  [ТС]     как работать с каждой цифрой четырехзначного числа по отдельности. #6
Я учу с++ по книге. И там я ещё не встречал STD, квадратные скобки и char. Там это задание после 2 главы.
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
04.09.2011, 22:18     как работать с каждой цифрой четырехзначного числа по отдельности. #7
AndreyAndroid, геморно это делать только одним числом.
AndreyAndroid
1 / 1 / 0
Регистрация: 15.01.2011
Сообщений: 132
04.09.2011, 22:23  [ТС]     как работать с каждой цифрой четырехзначного числа по отдельности. #8
Я объявил 5 переменных. После сделал считывание числа, а потом расчёты каждой из 4 цифр. Ну а там сложение и деление и вывод переменных в поредке задачи.
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
04.09.2011, 22:33     как работать с каждой цифрой четырехзначного числа по отдельности. #9
AndreyAndroid, так работает? Что же еще нужно?
AndreyAndroid
1 / 1 / 0
Регистрация: 15.01.2011
Сообщений: 132
04.09.2011, 22:49  [ТС]     как работать с каждой цифрой четырехзначного числа по отдельности. #10
Ваш код намного меньше, а следовательно мой нужно доработать и сократить. Но как видимо до вашего способа мне ещё долго учиться.
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
04.09.2011, 22:52     как работать с каждой цифрой четырехзначного числа по отдельности. #11
AndreyAndroid, если бы я писал числами - тоже вышло бы больше. Лучше сначала прочитать всю книгу, потом уже практиковаться, или найти лучшую книгу
AndreyAndroid
1 / 1 / 0
Регистрация: 15.01.2011
Сообщений: 132
04.09.2011, 23:10  [ТС]     как работать с каждой цифрой четырехзначного числа по отдельности. #12
Книга Дейтел и Дейтел - Как программировать на С++ в ней 1000 страниц и без практики думаю не освоить. Там задачи после каждой главы.
TheAthlete
152 / 152 / 13
Регистрация: 31.08.2010
Сообщений: 535
04.09.2011, 23:52     как работать с каждой цифрой четырехзначного числа по отдельности. #13
по-моему все просто

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
using std::cout; using std::cin;
using std::endl; using std::vector;
using std::copy; using std::ostream_iterator;
 
int main() {
  int number;
  cout << "Enter number: ";
  cin >> number;
 
  // объявляем вектор для хранения даннвх
  vector<int> vec;
  // объявляем цифру
  int chastnoe = 0, ostatok = 0;
 
  do {
    chastnoe = number / 10;
    ostatok = number % 10;
    number = chastnoe;
    vec.push_back(ostatok);
  } while(chastnoe); // != 0
 
  copy(vec.rbegin(), vec.rend(), ostream_iterator<int>(cout, " "));
 
  return 0;
}
в результате в векторе лежат наши цифры
AndreyAndroid
1 / 1 / 0
Регистрация: 15.01.2011
Сообщений: 132
05.09.2011, 00:03  [ТС]     как работать с каждой цифрой четырехзначного числа по отдельности. #14
Да я все это пока ещё не знаю... хотя тут уже можно понять что к чему.
TheAthlete
152 / 152 / 13
Регистрация: 31.08.2010
Сообщений: 535
05.09.2011, 10:05     как работать с каждой цифрой четырехзначного числа по отдельности. #15
Можно попроще через массивы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
 
using std::cout; 
using std::cin;
 
int main() {
  int number;
  cout << "Enter number: ";
  cin >> number;
 
  // объявляем вектор для хранения даннвх
  const size_t N = 4;
  int arr[N];
  // объявляем цифру
  int chastnoe = 0, ostatok = 0, i = 0;
 
  do {
    chastnoe = number / 10;
    ostatok = number % 10;
    number = chastnoe;
    arr[i] = ostatok;
    ++i;
  } while(chastnoe); // != 0
 
  for (size_t i = 0; i != N; ++i)
    cout << arr[i] << " ";
 
  return 0;
}
Хотя проще это на первый взгляд.
Здесь есть несколько недостатков по сравнению с прошлым вариантом:
1) здесь можно задать только четырехзначное число (значность числа определяется с помощью N)
2) не проверяется выход за пределы массива (вектор увеличивается автоматически)

Поэтому могу посоветовать почитать книги
1) Стенли Б. Липпман, Жози Лажойе, Барбара Му - Язык программирования С++. Вводный курс. Четвертое издание.
2) Э. Кёниг, Б. My Эффективное программирование на C++ Серия C++ In-Depth, т.2

С одной стороны они предназначены для начинающих, но с другой стороны объясняют современный С++, начиная с первых глав рассказывать о стандартной библиотеке, как использовать вектора, строки (std::string) и т.д.
AndreyAndroid
1 / 1 / 0
Регистрация: 15.01.2011
Сообщений: 132
05.09.2011, 12:50  [ТС]     как работать с каждой цифрой четырехзначного числа по отдельности. #16
Вы срветуете поменять книжку?
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
05.09.2011, 15:39     как работать с каждой цифрой четырехзначного числа по отдельности. #17
AndreyAndroid, идельный вариант - Дейтелы. Не найдете - могу скинуть.
AndreyAndroid
1 / 1 / 0
Регистрация: 15.01.2011
Сообщений: 132
05.09.2011, 15:45  [ТС]     как работать с каждой цифрой четырехзначного числа по отдельности. #18
Я по ней учу только она не устарела?
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
05.09.2011, 16:43     как работать с каждой цифрой четырехзначного числа по отдельности. #19
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <algorithm>
#include <iterator>
#include <iostream>
#include <vector>
 
std::vector<int> to_digits(int n, int base = 10) {
   std::vector<int> v;
   for(; n; n /= base)
      v.push_back(n % base);
 
   return v;
}
 
int main() {
   std::vector<int> v = to_digits(12345);
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, ", "));
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2011, 17:41     как работать с каждой цифрой четырехзначного числа по отдельности.
Еще ссылки по теме:
1.Все цифры данного четырехзначного числа N различны C++
C++ Вывод наибольшей и наименьшей цифры из четырехзначного числа
Найти произведение цифр заданного четырехзначного числа C++
C++ Найти сумму и произведение цифр четырехзначного числа

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
05.09.2011, 17:41     как работать с каждой цифрой четырехзначного числа по отдельности. #20
Цитата Сообщение от AndreyAndroid Посмотреть сообщение
Я по ней учу только она не устарела?
Такие книги не стареют. Это стандарты - новеют...
Yandex
Объявления
05.09.2011, 17:41     как работать с каждой цифрой четырехзначного числа по отдельности.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru