Pascal转C语言网站——深蓝评测系统
时间:2010年10月13日作者:坏男孩查看次数:1,768 views评论次数:6
对于我们这些NOIP的选手有一个问题——有些题目不会做的时候,就会想“百度一下”或者“Google”一下搜索题解。但是,有些题目的题解只有Pascal版本,没有C语言版本。这让人很头疼。
不过,在一次意外的访问,发现了一个网站:http://oj.oiers.cn 。这是深蓝评测系统,本来我是想刷刷水题,后来我发现这个网站竟然支持Pascal转换成C语言。不过转换的结果有一点小问题。。。翻译网址:http://oj.oiers.cn/utility/p2c/
比如这一段NOIP2008第一题的Pascal题解:
var a : array [0..13] of char; procedure init; var i : longint; begin for i := 1 to 13 do read(a[i]); end; procedure main; var i , j , t : longint; begin t := 0; j := 0; for i := 1 to 12 do if a[i] <> '-' then begin inc(j); t := t + (ord(a[i]) - 48) * j; end; t := t mod 11; if ((a[13] = 'X') and (t = 10)) or (ord(a[13]) - 48 = t) then begin writeln('Right'); exit; end; for i := 1 to 12 do write(a[i]); if t = 10 then writeln('X') else writeln(t); end; begin init; main; end.
转换后的结果是:
#include <p2c/p2c.h> Static Char a[14]; Static void init(void) { long i; for (i = 1; i <= 13; i++) { a[i] = getchar(); if (a[i] == '\n') a[i] = ' '; } } Static void main_(void) { long i; long j = 0, t = 0; for (i = 1; i <= 12; i++) { if (a[i] != '-') { j++; t += (a[i] - 48) * j; } } t %= 11; if (a[13] == 'X' && t == 10 || a[13] - 48 == t) { printf("Right\n"); return; } for (i = 1; i <= 12; i++) putchar(a[i]); if (t == 10) printf("X\n"); else printf("%12ld\n", t); } main(int argc, Char *argv[]) { PASCAL_MAIN(argc, argv); init(); main_(); exit(EXIT_SUCCESS); }
而真正的转换后的程序应该是:
#include <iostream> using namespace std; char a[14]; void init(void) { long i; for (i = 1; i <= 13; i++) { a[i] = getchar(); if (a[i] == '\n') a[i] = ' '; } } void work(void) { long i; long j = 0, t = 0; for (i = 1; i <= 12; i++) { if (a[i] != '-') { j++; t += (a[i] - 48) * j; } } t %= 11; if (a[13] == 'X' && t == 10 || a[13] - 48 == t) { printf("Right\n"); return; } for (i = 1; i <= 12; i++) putchar(a[i]); if (t == 10) printf("X\n"); else printf("%d\n", t); } main() { init(); work(); return 0; }
仔细观察就可以看出端倪。每个程序也就改一点就行了。希望深蓝官方可以解决这些问题。
我想把这个代码弄到我的博客里来。。但不知道怎么移植。。唉~~希望有高人可以帮帮我!
声明: 本文采用 BY-NC-SA 协议进行授权 | 坏男孩的博客
转载请注明转自《Pascal转C语言网站——深蓝评测系统》
发表评论
来晚了,地板吧~~
看懂不?
我以为只有我一个人不懂这些,原来沙发和我一样。
这些给编程爱好者用的。。不懂得人很多,不必担心。不过会一门语言总是件好事。
来占个沙发
是不是看不懂,就占沙发。。