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

Помогите перевести с PHP на С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Побитовые операции http://www.cyberforum.ru/cpp-beginners/thread13374.html
Здравствуйте уважаемые читатели форума! СОвсем не представляю как сделать простейшую програмку на С++. Нужно вычислить номер позиции первого значащего символа. Всё это сделать с двоичным...
C++ Узнать размер файла Мне нужно прочитать обычный текстовый файл. Я думаю это сделать с помощью одной из функций семейства get(). Для этого (и не только) мне нужно узнать длину файла (т.е. сколько считывать символов).... http://www.cyberforum.ru/cpp-beginners/thread13371.html
C++ задача C++
Вообщем имеется задача: Рассчитайте значение e в степени x, используя формулу: e^x = 1+x/1! +x^2/2!+x^3/3!+… Решить её можно так: не решать факториалы, а просто решения x, x/2, x/3 и т.д....
C++ Найти, какое значение встречается в данном массиве наибольшее число раз
я ток что в универ поступил)) раньше с си++ ничего общего не имел)) и попал в очень сильную группу по программированию.. учительница очень пожилая и сней работать очень тяжело)) мне на лабораторной...
C++ Зачем создавать новый проект http://www.cyberforum.ru/cpp-beginners/thread13352.html
Зачем создавать проект, если можно компилировать сам *.cpp с кодом? Что хранится в файлах проекта? Отличаются ли структуры проектов в разных компиляторах или проект созданный в одном так-же будет...
C++ Как к файлам в папке обратиться? Всем привет! Такая проблема у меня. Сначала преамбула. Есть видеокамера, она снимает "неважнокакое" явление. Она подключена к компьютеру. При остановке работы камеры, она выдает мне ... подробнее

Показать сообщение отдельно
Гость2
Сообщений: n/a
07.10.2008, 22:10
Совсем не проще, мне главное не получить "лишь бы работало", алгоритм хороший, поддерживает большие числа - 1, переводить из любой СС в любую СС (ограничения только на алфавит) - 2, работает довольно быстро (во всяком случае на PHP), поэтому и хочется его реализовать. Вот что у меня получилось с "переводом", только где то косяк ( может кто подскажет по коду что к чему?
Код
#include <string>
#include <conio.h>
#include <stdio.h>
#include <vector>

using namespace std;

static const char NumSet[]="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

class Rebase
	{
	private:
		vector<int> Buffer;
		int MaxBuf;
		int Error;
	public:
		Rebase()
			{
			MaxBuf = 0;
			Error = 0;
			}
		~Rebase()
			{
			}
		void ADD(int n)
			{
			int pos = 0;
			int buf = n;
			do
				{
				if (!Buffer.empty() && Buffer[pos])		buf += Buffer[pos];
				//Buffer[pos] = buf % MaxBuf;
				Buffer.push_back(buf % MaxBuf);
				buf /= MaxBuf;
				pos++;
				} while (buf>0);
			}
		void MUL(int n)
			{
			int BufSize = Buffer.size();
			if (!BufSize) return;
			vector<int> tmpBuffer; 
			int cur_pos=0;
			int buf=0;
			do{
				int a=0;
				if (cur_pos<BufSize)
					{
					a=Buffer[cur_pos]*n;
					}
				a+=buf;
				tmpBuffer.push_back(a % MaxBuf);
				buf=a / MaxBuf;
				cur_pos++;
				} while((BufSize>cur_pos) || (buf!=0));
			Buffer.clear();
			for (int k=0; k<tmpBuffer.size(); k++)
				Buffer.push_back(tmpBuffer[k]);
			}
		string * Do(char * input, int inset=0, int outset=0)
			{
			string InputSet="";
			string OutputSet="";
			for (int in=0; in<inset; in++) InputSet.push_back(NumSet[in]);
			for (int out=0; out<outset; out++) OutputSet.push_back(NumSet[out]);
			MaxBuf = outset;
			int base_in = InputSet.length();
			int count_in = strlen(input);
			for (int inc=0; inc < count_in; inc++)
				{
				char a = input[inc];
				if (inc) MUL(base_in);
				ADD((int)(strchr(InputSet.c_str(), a) - InputSet.c_str() + 1));				
				}
			string * res = new string();
			res->clear();
			int BufSize = Buffer.size();
			for (int j=0; j < BufSize; j++) 
				{
				res->push_back(OutputSet[Buffer[j]]);
				printf("%d ", Buffer[j]);
				}
			return res;
			}
	};
int main()
	{
	Rebase r = Rebase();

	//printf("%s\n", r.Do("0", 10, 3)->c_str());
	//printf("%s\n", r.Do("1", 10, 3)->c_str());
	//printf("%s\n", r.Do("2", 10, 3)->c_str());

	printf("\n%s", r.Do("35", 10, 36)->c_str());

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