[C / C++] 基本図形を変更することにより、シミュレーションアルゴリズム

アルゴリズムについてあなたがオンラインで見ることができます番号を変更します, プログラムは、システムの変更後に実施されるが 10 問い合わせへ 2, 8, 16 そして、私たちは右下のフォームをプリントアウト.
DEV-Cで実行
基数変換

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <windows.h>
#define d 179//186
#define ng 196//205
#define gi 197//206
#define swap(type, a, b) {type temp = a; a= b; b =temp;}
void gotoxy(int x, int y)	// chuyen con tro toi (x,y)
{
	static HANDLE h = NULL; 
	if(!h)
		h = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD c = { x, y }; 
	SetConsoleCursorPosition(h,c);
}

void reverse(char s[])		// dao nguoc xau
{
	int i;
	for (i=0; i<strlen(s)/2; i++)
		swap(char, s[i], s[strlen(s)-i - 1]);
}

int main()
{
	int a, n;
	int x, y = 3, sys, i, l1, l2, count;
	char s1[100], s2[100], s[100], result[1000];
	char again;	
	char *syschar = (char*) malloc(20*sizeof(char));
	begin:
	x = 4, sys = 2, i, l1 = 0, l2 = 0, count =0;
	printf("Enter number want convert : ");
	scanf("%d", &n);
	a = n;
	do
	{
		printf("Enter number system (2,8,16): ");
		scanf("%d", &sys);
	}while (sys != 2 && sys != 8 && sys != 16);
	if (sys == 2) strcpy(syschar, "01"); //syschar = "01";
	else if (sys == 8) strcpy(syschar, "01234567");
	else if (sys == 16) strcpy(syschar, "0123456789ABCDEF");

	gotoxy(x, y);
	printf("%d",n);
	while (n>0)
	{
		sprintf(s1,"%-2d", n);				// chuyen n sang xau s1
		sprintf(s2,"%-2d",n/sys);			// chuyen n/sys sang xau s2
		result[count] = syschar[n%sys];	// cong phan du vao kq
		l1 = strlen(s1);					
		l2 = strlen(s2);
		gotoxy(x + l1, y);		
		printf(" %c %d",d, sys);		// in | va co so
		gotoxy(2, ++y);	
		if (count>0) printf("%c", d);	// in mu ten
		gotoxy(x, y);
		for (i=0; i<l1 + 3 + l2; i++)	// in -------
			if (i==l1+1) printf("%c", gi);
			else printf("%c", ng);
		gotoxy(2, ++y);	
		if (count==0) printf("%c",30);	// in duong thang dung cua mui ten
		else printf("%c", d);
		gotoxy(x, y);
		for (i = 0; i<l1-2; i++)		// in khoang trong truoc so du
			printf(" ");
		sprintf(s,"%-2d %c %s", n%sys, d, s2);	// in so du va thuong
		printf("%-2d %c %s", n%sys, d, s2);
		x += l1-2 + strlen(s) - l2; 			// tang x den vi tri moi
		n /=sys;
		count++;
	}
	y+=7;
	result[count] = '\0';
	reverse(result);
	printf("nn%d(10) = %s(%d)",a, result, sys);
	printf("nDo you want continue? (y/n)");
	fflush(stdin);
	again = getchar();
	again = toupper(again);
	if (again == 'Y') goto begin;
	free(syschar);
	return 0;
}

Linuxの端末での実装
基数変換

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define d 124//179//186
#define ng 45//196//205
#define gi 124//197//206
#define gotoxy(type, x, y) printf("%c[%d;%df",0x1B,x, y)
#define swap(type, a, b) {type temp = a; a= b; b =temp;}
void reverse(char s[])		// dao nguoc xau
{
	int i, l = strlen(s)/2;
	for (i=0; i<l; i++)
		swap(char, s[i], s[strlen(s)-i - 1]);
}

int main()
{
	int a, n;
	int x = 4, y, sys, i, l1, l2, count;
	char s1[100], s2[100], s[100], result[1000];
	char again;	
	char *syschar = (char*) malloc(20*sizeof(char));
	do
	{
		y = 5; sys = 2; l1 = 0; l2 = 0; count =0;
		printf("Enter number want convert : ");
		scanf("%d", &n);
		a = n;
		do
		{
			printf("Enter number system (2,8,16): ");
			scanf("%d", &sys);
		}while (sys != 2 && sys != 8 && sys != 16);
		if (sys == 2) strcpy(syschar, "01"); //syschar = "01";
		else if (sys == 8) strcpy(syschar, "01234567");
		else if (sys == 16) strcpy(syschar, "0123456789ABCDEF");
		
		gotoxy(int, x, y);
		printf("%d",n);
		while (n>0)
		{
			sprintf(s1,"%-2d", n);				// chuyen n sang xau s1
			sprintf(s2,"%-2d",n/sys);			// chuyen n/sys sang xau s2
			result[count] = syschar[n%sys];	// cong phan du vao kq
			l1 = strlen(s1);					
			l2 = strlen(s2);
			gotoxy(int, x , y + l1);		
			printf(" %c %d",d, sys);		// in | va co so
			gotoxy(int, ++x, 2);	
			if (count>0) printf("%c", d);	// in mu ten
			gotoxy(int, x, y);
			for (i=0; i<l1 + 3 + l2; i++)	// in -------
				if (i==l1+1) printf("%c", gi);
				else printf("%c", ng);
			gotoxy(int, ++x, 2);	
			if (count==0) printf("%c",'^');	// in duong thang dung cua mui ten
			else printf("%c", d);
			gotoxy(int, x, y);
			for (i = 0; i<l1-2; i++)		// in khoang trong truoc so du
				printf(" ");
			sprintf(s,"%-2d %c %s", n%sys, d, s2);	// in so du va thuong
			printf("%-2d %c %s", n%sys, d, s2);
			y += l1-2 + strlen(s) - l2; 			// tang x den vi tri moi
			n /=sys;
			count++;
		}
		x += 7;
		result[count] = '\0';
		reverse(result);
		printf("nn%d(10) = %s(%d)",a, result, sys);
		printf("nDo you want continue? (y/n)");
		fgets (s,256,stdin);
		scanf("%c", &again);
		again = toupper(again);
	}while (again == 'Y');// goto begin;
	return 0;
}

続きを読む:
ベースシステムの切り替えのためのガイドライン
私たちにいくつかを表示 2, コンタクト 8, コンタクト 16 小数の