读书人

POJ1028总是RE向大家请问一上

发布时间: 2012-08-15 16:57:17 作者: rapoo

POJ1028总是RE,向大家请教一下
我的代码如下:
[code=C/C++][/code]
/*1028 Web Navigation*/
#include<stdio.h>
#include<string.h>
void getcommand(char [][200]);/*函数用于获得命令*/
void run(char [][200]);/*执行的主要函数*/
char command[200][200];
int main(void)
{
getcommand(command);
run(command);
}
void getcommand(char command[][200])
{
int c,i,j;
for(i = 0;;i++){
for(j = 0;(c = getchar()) != 0 &&c != '\n';j++)
command[i][j] = c;
if(c == '\n'){
command[i][j] = c;
j++;
}
command[i][j] = '\0';
if(strcmp(command[i],"QUIT\n") == 0)
return;
}
}
char *back[200],*forward[200];
char *current = "http://www.acm.org/\n";
int bpp = 0,fpp = 0;
void backpush(void);
void forpush(void);
void forpop(void);
void backpop(void);
int isforempty(void);
int isbackempty(void);
void run(char command[][200])
{
int i;
for(i = 0;i < 200;i++){
if(strcmp(command[i],"QUIT\n") == 0)
break;
else if(strcmp(command[i],"FORWARD\n") == 0){
if(isforempty())
printf("Ignored\n");
else{
backpush();
forpop();
printf("%s",current);
}
}else if(strcmp(command[i],"BACK\n") == 0){
if(isbackempty())
printf("Ignored\n");
else{
forpush();
backpop();
printf("%s",current);
}
}else if(command[i][0] == 'V'){
backpush();
current = &command[i][6];
fpp = 0;
printf("%s",current);
}
}
}
void backpush(void)
{
back[bpp++] = current;
}
void forpush(void)
{
forward[fpp++] = current;
}
void backpop(void)
{
current = back[--bpp];
}
void forpop(void)
{
current = forward[--fpp];
}
int isforempty(void)
{
return (fpp == 0);
}
int isbackempty(void)
{
return (bpp == 0);
}


[解决办法]

C/C++ code
#include <stdio.h>#include <string.h>#define STACK_SIZE 100typedef struct {    char pages[100][71];    char (*top)[71];} Stack;/* Push element to the stack: */void Push(Stack* stack, const char* element){    strcpy(*stack->top++, element);}/* Pop the element from the stack: */char* Pop(Stack* stack){    return stack->top == stack->pages ? 0 : *--stack->top;}int main(void){    /* Initialize the current page at the first page: */    char currentPage[71] = "http://www.acm.org/";    char page[71];    char* popPage;    Stack backward, forward;    char command[8];    /* Initialize stacks: */    backward.top = backward.pages;    forward.top = forward.pages;    /* Read commands and URLs*/    for (scanf("%s", command);         strcmp(command, "QUIT");         scanf("%s", command))    {        if (!strcmp(command, "VISIT")) {            scanf("%s", page);            Push(&backward, currentPage);            puts(strcpy(currentPage, page));            forward.top = forward.pages;        } else if (!strcmp(command, "BACK")) {            if (popPage = Pop(&backward)) {                Push(&forward, currentPage);                puts(strcpy(currentPage, popPage));            } else                puts("Ignored");        } else { /* FORWARD: */            if (popPage = Pop(&forward)) {                Push(&backward, currentPage);                puts(strcpy(currentPage, popPage));            } else                puts("Ignored");        }    }    return 0;} 

读书人网 >C语言

热点推荐