1. 程式人生 > >每天一個小題目——計算器的新功能

每天一個小題目——計算器的新功能

題目描述

當你學一些視覺化程式設計語言時,老師經常會讓你設計並且程式設計做出一個計算器,這時也許你會仿照windows系統自帶的計算器外觀和功能去設計,但是現在老師要你多做出一個有新功能的計算器,實現當輸入一個數時,能夠將這個數分解成一個或多個素因子乘積的形式,並按素因子的大小排列顯示出來。大家對計算器中數的表示應該很清楚的。下面顯示出了0 — 9這十個數字的表示形式。每個數字都佔據5 * 3大小的字元區域
這裡寫圖片描述
你能實現這個新功能嗎?試試看吧!

程式碼如下:(程式碼是拷過來的)

#include <iostream>
#include <cstdio>
using namespace std; char arr[5][1000]; int pos = 0; // 列標 void printMultiSign() { if (pos != 0) { arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = '*'; arr[3][pos] = ' '; arr[4][pos++] = ' '; } } void printNumToArray(int num) { int
tmp = 1; while (num / tmp / 10 != 0) { // 確定 num 即每一個 素因子的位數 tmp *= 10; }; printMultiSign(); // 新增 * 連線 兩個素因子 while (tmp != 0) { int t = num / tmp % 10; tmp = tmp / 10; switch (t) { // 顯示每個數字 case 0 : arr[0][pos] = ' '
; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = '-'; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 1 : arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 2 : arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = '-'; arr[3][pos] = ' '; arr[4][pos++] = '-'; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; break; case 3 : arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = '-'; arr[3][pos] = ' '; arr[4][pos++] = '-'; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 4 : arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = '-'; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 5 : arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = '-'; arr[3][pos] = ' '; arr[4][pos++] = '-'; arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 6 : arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = '-'; arr[3][pos] = ' '; arr[4][pos++] = '-'; arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 7 : arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 8 : arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = '-'; arr[3][pos] = ' '; arr[4][pos++] = '-'; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 9 : arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = '-'; arr[3][pos] = ' '; arr[4][pos++] = '-'; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; } } } void printArray() { // 設定結束符 arr[0][pos] = '\0'; arr[1][pos] = '\0'; arr[2][pos] = '\0'; arr[3][pos] = '\0'; arr[4][pos] = '\0'; pos = 0; cout << arr[0] << endl; cout << arr[1] << endl; cout << arr[2] << endl; cout << arr[3] << endl; cout << arr[4] << endl; } void generate(int num) { for (int i = 2; i <= num;) { if (num % i == 0) { printNumToArray(i); num = num / i; i = 2; } else { ++i; } } } int main() { int num = 0; while (scanf("%d", &num) != EOF) { generate(num); printArray(); } return 0; }