Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

好无聊的题

Posted by KatrineYang at 2016-11-15 12:18:18 on Problem 1578
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <cstdlib>
#include <string>
#include <vector>

using namespace std;

string fmt;
vector<string> vs;


void print(){
	//cout << fmt << " " << vs.size() << endl;
	string data[32][233];
	int width = fmt.length();
	int kuan[233] = {0};
	int height = vs.size();
	for(int i = 0; i < height; i++){
		string tar = vs[i];
		tar += '&';
		int numOfAnd = 0;
		int offset = 0;
		while(numOfAnd < width){
			int j = offset;
			for(; ; j++){
				if(tar[j] == '&') break;
			}
			data[i][numOfAnd] = tar.substr(offset, j-offset);
			numOfAnd ++;
			offset = j+1;
		}
	}
	for(int i = 0; i < width; i++){
		for(int j = 0; j < height; j++){
			int ll = data[j][i].length();
			if(ll > kuan[i]) kuan[i] = ll;
		}
		kuan[i] += 2;
	}
	cout << "@";
	for(int i = 0; i < width; i++){
		for(int j = 0; j < kuan[i]; j++) cout << "-";
		if(i != width-1) cout << "-";
		else cout << "@" << endl;
	}
	for(int i = 0; i < height; i++){
		cout << "|";
		for(int j = 0; j < width; j++){
			int zuo, you;
			int ll = data[i][j].length();
			if(fmt[j] == '<'){
				zuo = 1;
				you = kuan[j] - 1 - ll;
			}
			else if(fmt[j] == '>'){
				you = 1;
				zuo = kuan[j] - 1 - ll;
			}
			else{
				zuo = (kuan[j] - ll) / 2;
				you = kuan[j] - ll - zuo;
			}
			for(int k = 0; k < zuo; k++) cout << " ";
			cout << data[i][j];
			for(int k = 0; k < you; k++) cout << " ";
			cout << "|";
		}
		cout << endl;
		if(!i){
			cout << "|";
			for(int t = 0; t < width; t++){
				for(int j = 0; j < kuan[t]; j++) cout << "-";
				if(t != width-1) cout << "+";
				else cout << "|" << endl;
			}
		}
	}
	cout << "@";
	for(int i = 0; i < width; i++){
		for(int j = 0; j < kuan[i]; j++) cout << "-";
		if(i != width-1) cout << "-";
		else cout << "@" << endl;
	}
}

int main(int argc, char **argv){
	
	while(1){
		string s;
		while(1){
			getline(cin, s);
			if(s[0] == '<' || s[0] == '>' || s[0] == '=' || s[0] == '*') break;
			vs.push_back(s);
		}
		if(fmt.length() > 0){
			print();
		}
		fmt = s;
		if(fmt[0] == '*') break;
		vs.clear();
	}	
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator