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

Перевод натурального числа из десятичной системы счисления в систему счисления по основанию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Даны действительные числа http://www.cyberforum.ru/cpp-beginners/thread563829.html
Даны действительные числа a_1,…,a_n. Получить попарно различные целые j_1,…,j_n, такие, что 1≤k_j≤n,k=1,…,n, и a_j1≥a_j2≥⋯≥a_jn. Воспользоваться методом: А)Сортировки прямым выбором; Б) «шейкерной» сортировки.
C++ Построить векторы В и С по правилу: bi - наибольшее значение i-й строки, ci - квадрат наименьшего числа строки. 48. Задана вещественная матрица А. Построить векторы В и С по правилу: bi - наибольшее значение i-й строки, ci - квадрат наименьшего числа строки. http://www.cyberforum.ru/cpp-beginners/thread563801.html
Построить вектор C++
Задана вещественная матрица А. Построить векторы В и С по правилу: bi - наибольшее значение i-й строки, ci - квадрат наименьшего числа строки.
C++ строки на с++
вводятся слова ,если слова можно построить по условию:последняя буква слова совпадает с первой буквой следущ слова ,то условие выпол-ся(рассмотреть все перестановки слов).если переставляя слова условие вып-ся то вывести упорядоченное предложение,иначе сообщение условие не вып-ся.если там хоть одно слово останется лишним то уже условие не вып-ся.
C++ Функция которая формирует массив из двух заданных http://www.cyberforum.ru/cpp-beginners/thread563791.html
Всем доброго времени и суток. прошу объяснить мне механизм объединения массива задание таковое: Написать функцию которая принимает два одномерных массива одинаковой длинны, которая затем формирует и возвращает массив составленный из элементов первого и второго массивов, попеременно чередующихся. Массивы генерировать умею, подсчитывать средние значения и прочую арифметику тоже) В данном...
C++ Ребята,помогите пожалуйста начинающему!! Задание 1. Тема: Подпрограммы. Процедуры и функции. Даны действительные a,b,c. Определить (рис.1) http://www.cyberforum.ru/attachment.php?attachmentid=147923&stc=1&d=1335969262 Задание 2 Тема: Матрицы. Дан двумерный массив размером n*m, заполненный случайными числами. Сформировать и вывести новый одномерный массив: из всех отрицательных элементов исходного, возведенных в квадрат.... подробнее

Показать сообщение отдельно
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
03.05.2012, 02:33     Перевод натурального числа из десятичной системы счисления в систему счисления по основанию
Только из хорошего настроения помогу за корректность программ не ручаюсь, практически ничего не тестировал, но по идее всё должно работать
main1.cpp

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <cstdlib>
#include <clocale>
#include <map>
#include <list>
#include <string>
 
typedef std::list<int> IntList;
 
int main()
{
   setlocale( LC_ALL, NULL );
   long N; // число с десятичным основанием
   long k; // основание системы в которую надо перевести
   IntList numberK;
   std::string numberKStr;
   const int MAX_BASE = 36;
   std::map< int, char > numberDic;
 
   for ( char i = '0'; i <= '9'; ++i )
   {
      numberDic[ i - '0' ] = i;
   }
   for ( char i = 'A'; i <= 'Z'; ++i )
   {
      numberDic[ i - 'A' + 10 ] = i;
   }
 
   std::cout << "Введите натуральное число в десятичной системе: ";
   std::cin >> N;
 
   if ( N < 1 )
   {
      std::cout << "Ошибка, введено не натуральное число. Выход" << std::endl;
      exit( EXIT_SUCCESS );
   }
 
   std::cout << "Введите основание системы для перевода: ";
   std::cin >> k;
 
   if ( k < 2 || k > MAX_BASE )
   {
      std::cout << "Неверное основание системы. Выход" << std::endl;
      exit( EXIT_SUCCESS );
   }
 
 
   long Ncopy = N;
   while ( true )
   {
      numberK.push_front( Ncopy % k );
      if ( Ncopy < k )
         break;
 
      Ncopy /= k;
   }
 
   for ( IntList::iterator i = numberK.begin(); i != numberK.end(); ++i )
   {
      numberKStr += numberDic[ *i ];
   }
 
   std::cout << "Результат: " << numberKStr << std::endl;
 
   return 0;
}

main2.cpp

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <list>
#include <fstream>
#include <clocale>
#include <cctype>
#include <string>
#include <cstdlib>
 
typedef std::string::iterator strItr;
typedef std::list< char > CharList;
 
int main()
{
   setlocale( LC_ALL, NULL );
   std::string text;
   CharList punctList;
   std::ifstream fin("input.txt");
   std::ofstream fout("output.txt");
 
   if ( !fin )
   {
      std::cout << "Ошибка, не могу открыть файл для чтения. Выход" << std::endl;
      exit( EXIT_SUCCESS );
   }
   if ( !fout )
   {
      std::cout << "Ошибка, не могу открыть файл для записи. Выход" << std::endl;
      exit( EXIT_SUCCESS );
   }
 
   while ( !fin.eof() )
   {
      std::getline( fin, text );
      for ( strItr i = text.begin(); i != text.end(); ++i )
      {
         if ( ispunct(*i) )
            punctList.push_front( *i );
      }
   }
   fin.close();
 
   for ( CharList::iterator i = punctList.begin(); i != punctList.end(); ++i )
   {
      fout << *i;
   }
 
   fout.close();
 
   std::cout << "OK" << std::endl;
 
   return 0;
}

main3.cpp

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <cstdlib>
#include <locale>
#include <algorithm>
 
template < class T1 >
void shiftArray( T1 arr, size_t ARR_SIZE, long shiftValue );
 
int main()
{
   setlocale( LC_ALL, NULL );
   const size_t ARR_SIZE = 10;
   int arr[ ARR_SIZE ];
   int k = 4;
 
   for ( size_t i = 0; i < ARR_SIZE; ++i )
   {
      arr[i] = i + 1;
   }
 
   std::cout << "Array before:" << std::endl;
   for ( size_t i = 0; i < ARR_SIZE; ++i )
   {
      std::cout << arr[i] << ' ';
   }
   std::cout << std::endl;
 
   shiftArray<int *>( arr, ARR_SIZE, k );
 
   std::cout << "Array after:" << std::endl;
   for ( size_t i = 0; i < ARR_SIZE; ++i )
   {
      std::cout << arr[i] << ' ';
   }
   std::cout << std::endl;
 
   return 0;
}
 
template < class T1 >
void shiftArray( T1 arr, size_t ARR_SIZE, long shiftValue )
{
   if ( shiftValue == 0 )
      return;
 
   shiftValue = shiftValue % ARR_SIZE;
   std::rotate( arr, arr + ARR_SIZE - shiftValue ,arr + ARR_SIZE );
}
 
Текущее время: 14:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru