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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2014, 17:19   #1
rolex_
Новичок
Джуниор
 
Регистрация: 18.11.2014
Сообщений: 1
По умолчанию С++ Перевод систем счисения

Решил написать программу для перевода систем счисления, решил пойти более тяжелым путем.
Начал делать перевод из 2 в 8.
Сделал проверку на принадлежность введенного числа именно двоичной сис-ме счисления. и еще пару проверок.

Но остановился на самом главном, сам перевод из 2 в 8, сам процесс перевода я понимаю, но как реализовать это путем программирования, не могу додумать.

Короче в конечном итоге у меня двоичное число записанное в массив, каким образом мне перевести его в 8 сис-му.

Просто, помогите обьяснить, как двоичное число, записанное в массив, перевести в 8-е


Код:
	
// C_N_2
#include <iostream>  
#include <cstdlib>
using namespace std;
int C_N_2 (int n);
int main()
{
	setlocale(LC_ALL, "Russian"); // Русский язык в  консоли.
	cout << "Выберите первоначальную сис-му счисления :\n ";
	cout << "1. Двоичная \n ";
	cout << "2. Восьмеричная \n ";
	cout << "3. Десятичная \n ";
	cout << "4. Шестнадцатеричная \n ";
	int S_1;
	do{	
	cin >> S_1;
 	if (S_1 > 4 || S_1 < 1)// Проверка на правильноть выбранного варианта переводимой степени сис-мы счисление
		{
			cout << "\n\t\tОшибка! Введите еще раз : \n"; 
		}
	}while(S_1 > 4 || S_1 < 1);

	cout << "\n\n\n Выберите конечную сис-му счисления :\n ";
	cout << "1. Двоичная \n ";
	cout << "2. Восьмеричная \n ";
	cout << "3. Десятичная \n ";
	cout << "4. Шестнадцатеричная \n ";
	
    int S_2;
	
	do{	
		cin >> S_2;
		if (S_2 > 4 || S_2 < 1 )
		{
		cout << "\n\t\t Ошибка! Введите еще раз : \n"; // Проверка на правильноть выбранного варианта конечной степени сис-мы счисления
		}
			if( S_2 == S_1)
		{
			cout << "\n\t\t Ошибка! Одинаковые основания степени! Введите еще раз :\n";  // проверка на различие выбранных сис-м счисления
		}
	}while(S_2 > 4 || S_2 < 1 || S_2 == S_1);
		int numb;
		int i,y;
		do{		
		cout << "\n\tВведите число :"; cin >> numb; cout << "\n"; // Ввод двоичного числа с клавиатуры
		
		if (S_1 = 1)
		{		
		if (C_N_2(numb) == 1) // Проверка числа на принадлежность двоичной сис-ме счисления
		{
			int ca = numb;
			int ca_1 = numb;
			for( i = 0; numb != 0; i++) // Определения кол-ва разрядов
			{
				numb = numb/10;		
			}
			
			
			int nb[i];
						
			
			for (y = i; y != 0 ; y -- ) // Забиваем число поразрядно в массив
			{
				nb[y-1] = ca % 10;
				ca = ca / 10; 
			}
			
			
			
			int ii = i;
			int gr;
			int ad; // счетчик добавления разряда
			if((ii )%3 == 0 ) // Если добавлять разряды не нужно
			
			{
			for (gr = 0; gr < ii; gr++)
			{
				cout << nb[gr];
			}
			 	
			}
			if((ii + 1 )%3 == 0 ) // Если нужно добавить 1 разряд
			
			{
			cout << 0;	
			for (gr = 0; gr < ii; gr++)
			{
				cout << nb[gr];
			}
			
			}
			if((ii + 2 )%3 == 0 ) // Если нужно добавить 2 разряда
			{
			
					cout << "00";	
			for (gr = 0; gr < ii; gr++)
			{
				cout << nb[gr];
			}
			}
			
			
			/*for ( ii = i - i; ii <i; ii++)
			{
				cout << nb[ii] ;
			}*/
			
			
			
			
			
		}
		if (C_N_2(numb) == 0) 
		{
			cout << "\tОшибка! Число не является двоичным!\n"; // Проверка числа на принадлежность двоичной сис-ме счисления
		}		
		}
	}while (C_N_2(numb) == 0);	
	system("PAUSE");
	return 0;
}

int C_N_2 (int n) // Проверка числа на принадлежность двоичной сис-ме счисления
{
	int f, x;
	do
	{
		f = n % 10;	
		n = n/10;	
	}
		while(f<2 && n != 0);
	if(f = 1 && n  < 1)
		{
			x = 1;
		}
			else
		{
			x = 0;
		}						
return x  ; 	
}

Последний раз редактировалось Stilet; 18.11.2014 в 21:14.
rolex_ вне форума Ответить с цитированием
Старый 18.11.2014, 19:12   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
решил пойти более тяжелым путем.
Начал делать перевод из 2 в 8.
не надо так!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод Систем Счисления diekster Помощь студентам 10 10.02.2012 19:56
перевод из разных систем счисления mego4el Помощь студентам 0 29.10.2010 21:20
перевод чисел из разных систем исчисления Anty_F[R]eez Общие вопросы C/C++ 2 08.06.2010 08:31
Перевод систем счисления 16=>10 Alex Cones Общие вопросы Delphi 3 16.05.2009 21:02