---
# System prepended metadata

title: 13372 - Pointer Magic

---

# 13372 - Pointer Magic

## Brief
Make functions to change values of 2 malloced arrays. The functions he made are:

Swap, which takes in 2 characters and 2 integers and uses them for coordinates for the integers that needs to be swapped. (A B 1 2 means to swap the values of A[1] and B[2])  

Switch, swaps all the values of array A and array B

Replace, which takes in 1 character and 2 integers, the first 2 are used for coordinates whereas the last integer is used for the new value.(A 1 100 means replace the value of A[1] to 100)

Stop, which stops the program and prints out the contents of both arrays.
## Input
integer M, the size of both arrays

M*2 number of integers which are the values of both arrays

A number of Commands:

Swap (2 characters and 2 integers)

Switch

Replace (1 character and 2 integers)

Stop (Stop the program and print the arrays)
## Output
The contents of both arrays followed by a newline
## Solution
```c=
//by Keith
#include<stdio.h>
#include <stdlib.h>

void Switch(int** X, int** Y){
    int* C;
    C = *X;
    *X = *Y;
    *Y = C;
    return;
}

void Swap(int *X, int*Y){
    int pos1, pos2, temp;
    char temp1, temp2;
    scanf(" %c %c %d %d", &temp1, &temp2, &pos1, &pos2);

    int *C, *D;
    
    if(temp1 == 'A') C = X;
    else C = Y; 

    if(temp2 == 'A') D = X;
    else D = Y;

    temp = *(C + pos1);
    *(C + pos1) = *(D + pos2);
    *(D + pos2) = temp;
    return;
}

void Replace(int *X, int*Y){
    int pos, num;
    char temp;
    scanf(" %c %d %d", &temp, &pos, &num);

    int *C;

    if(temp == 'A') C = X;
    else C = Y; 

    *(C + pos) = num;
    return;
}
```