Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
Lineta
0 / 0 / 0
Регистрация: 29.04.2012
Сообщений: 1
1

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

02.05.2012, 19:23. Просмотров 4157. Ответов 2
Метки нет (Все метки)

Здравствуйте. Я хотела бы попросить у вас помощи. Я понимаю, что это не очень красиво, но вдруг кто-нибудь откликнется. Я не очень соображаю в с++, да и вообще в информатике, но зачет очень нужен. А времени сидеть и учить язык нет. Ребенок, учеба, работа. Поэтому если у кого-нибудь будет время и настроение помогите пожалуйста. Я буду очень благодарна. А если нет, то нет, поищу другой форум. Заранее спасибо

Вот задачи:
1. Написать программу для перевода натурального числа N из десятичной системы счисления в систему счисления по основанию K (K>10).

2. Дан текстовый файл. Создать файл, содержащий все знаки препинания, встретившиеся в текстовом файле в обратном порядке.

3. Дан массив размера N и число k (0<k<5, k<N). Осуществить циклический сдвиг элементов массива вправо на k позиций.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2012, 19:23
Ответы с готовыми решениями:

Рекурсия: перевод целого числа из десятичной системы счисления в 9 систему счисления
Написать рекурсивную функцию перевода целого числа из десятичной системы...

Перевод числа из восьмеричной системы счисления в шестнадцатеричную систему счисления
Вот пример числа: 754 = 1EC 1000 = 200

Написать программу, которая переводит число из десятичной системы счисления в позиционную систему счисления
Помогите написать программу, которая переводит число из десятичной системы...

Перевод числа из десятичной в шестнадцатеричную систему счисления
Здраавствуйте, помогите найти ошибку в этом коде. Непонимаю почему при переводе...

Рекурсивная функция перевода натурального числа из десятичной системы счисления
Хелпаните с задачей! Написать рекурсивную процедуру перевода натурального...

2
Buckstabue
177 / 126 / 24
Регистрация: 12.01.2012
Сообщений: 624
03.05.2012, 02:33 2
Лучший ответ Сообщение было отмечено как решение

Решение

Только из хорошего настроения помогу за корректность программ не ручаюсь, практически ничего не тестировал, но по идее всё должно работать
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 );
}
1
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 173
27.12.2012, 01:20 3
Извините, а не совсем разобрался в программах. А можно написать программу перевода чисел с 8сс в 4сс, если несложно?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2012, 01:20

Перевод натурального числа в р-ичную систему счисления
Составить программу для перевода данного натурального числа в р-ичную систему...

Перевод числа из десятичной системы счисления в шестнадцатеричную
Выскажите вашу точку зрения по этому коду Задача: Напишите функцию, которая...

Перевод числа из десятичной системы счисления в двоичную
Ребят, помогите пожалуйста, не разу не сталкивался с переводом систем счисления...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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