poj:垂直直方图

最近在做《程序设计引导及在线实践》上的题。按说上面的习题和poj上应该是对应的。

但是不知道是书太久还是怎么……题号不对应。

poj上也找不到那些题。就这样写写算了吧,不oj了。

垂直直方图:读取文本,解析并画出字母出现次数的垂直直方图。

#include<stdio.h>

int main(void) {
	FILE *fp = fopen("t2.6.txt","r");
	char str[100];
	int characters[26];
	for(int i=0;i<26;i++) {
		characters[i] = 0;
	}
	while(fgets(str,100,fp)) {
		for(int i=0;str[i]!='\0';i++) {
			if(str[i]>='A' && str[i]<='Z') {
				characters[str[i]-'A']++;
			}
		}
	}
	fclose(fp);
	int max = 0;
	printf("\n");
	for(int i=0;i<26;i++) {
		if(characters[i]>max) max = characters[i];
	}
	bool *pic;
	pic = new bool[max*26];
	for(int i=0;i<max*26;i++) {
		pic[i] = false;
	}
	for(int i=max*26-1;i>=0;i--) {
		if(characters[i%26]>0) {
			pic[i] = true;
			characters[i%26]--;
		} else {
			pic[i] = false;
		}
	}
	
	for(int i=0;i<max;i++) {
		for(int j=0;j<26;j++) {
			if(pic[i*26+j]==true) {
				printf("* ");
			} else {
				printf("  ");
			}
		}
		printf("\n");
	}
}

点赞