874 - I2P(I)2015_Lee_LAB_9 Scoreboard

Time

2015/12/03 13:25:00 2015/12/03 14:45:00

Clarification

# Problem Asker Description Reply Replier Reply Time For all team

# Problem Pass Rate (passed user / total user)
10842 Equivalent relation (Exchange)

10842 - Equivalent relation (Exchange)   

Description

There are N integer pointers, indexed from 0 to N-1 (N<100). Each pointer initially points to an integer of value 0.

There are two kinds of instructions.
The instruction S n k” is used to set the integer, which pointer n points to, to be k. For example, Set 1 10 means that the integer that pointer 1 points to is set to 10.
And the instruction E n m” means that pointer n and pointer m exchange the positions that they point to.

For example, pointer 1 points to 5 and pointer 2 points to 7. “E 1 2” means that pointer 1 points to pointer 2 points to and at the same time pointer 2 points to the pointer 1 points to. After “E 1 2”, pointer 1 points to 7 and pointer 2 points to 5.

Note that you don't have to change all the pointers if one pointer changes its target. The following table is an example.

instruction

Description

S 1 806

Pointer 1 points to the integer is set to 806

E 1 2

Pointer 1 points to the integer that pointer 2 points to, and at the same tome pointer 2 points to the integer that pointer 1 points to.

And you don’t have to change the target of pointer 1 and pointer 2.

Finally, output all the values that pointers 0 to N-1 point to in order.

 

Note that

1.      This problem involves three files.

  • function.h: Function definition of execInstruct.
  • function.c: Function describe of execInstruct.
  • main.c: A driver program to test your implementation.

You will be provided with main.c and function.h, and asked to implement function.c.

2.     For OJ submission:

       Step 1. Submit only your function.c into the submission block. (Please choose c compiler) 

       Step 2. Check the results and debug your program if necessary.

main.c

#include <stdio.h>
#include "function.h"

#define SIZE 100

int main() {
        int *ptrArr[SIZE];
        int dataArr[SIZE] = {0};
        char inst;
        int dataNum, instNum;
        int param1, param2;
        int i;

        /* input */
        scanf("%d %d", &dataNum, &instNum);

        /* initialize the ptrArr */
        for (i = 0; i < dataNum; i++)
                ptrArr[i] = &dataArr[i];

        for (i = 0; i < instNum; i++) {
                scanf(" %c %d %d", &inst, &param1, &param2);

                execInst(ptrArr, inst, param1, param2);
        }

        /* output */
        for (i = 0; i < dataNum - 1; i++) {
                printf("%d ", *ptrArr[i]);
        }
        printf("%d", *ptrArr[i]);

        return 0;
}

function.h

#ifndef FUNCTION_H
#define FUNCTION_H
void execInst(int *ptrArr[], char inst, int param1, int param2);
#endif

Input

The first line contains two positive X and Y. X indicates the number of parameters. Y indicates that there are Y instructions needed to be done.

The next Y lines contain the instructions.

Output

All the values that pointers 0 to pointer N-1 point to in order. Each value is seperated by a blank ' '.

# Note that there is no '\n' at the end of the output.

Sample Input  Download

Sample Output  Download

Partial Judge Code

10842.c

Partial Judge Header

10842.h

Tags

10401Contest



Discuss