Ejemplo n.º 1
0
void main(){
	scanf("%d", size);
	int matr[size][size];
	int* arr = &matr[0][0]; 
	fillMatrSimple(arr, size);
	printMatr(arr, size);
	int x;
	x = sumDiagEdge(arr, size);
	printf("%d", &x);
}
Ejemplo n.º 2
0
int main(void)
{
    int length = 0, height = 0, i, k, lowVal = -1000, highVal = -1000;
    char entred[100] = "";

    do{
        drawField(COLS/4, ROWS/4, COLS/2, ROWS/2);
        k = setText(COLS/4 + 2, 3*ROWS/8, "Enter matrix length [1..9]\n& height [1..9]\nparting values with coma:", FIELD_COLOR);
        getText(COLS/4 + 2, 3*ROWS/8 + k + 1, entred, FIELD_BACKGROUND, FORE_BLACK);
        getPartiedInts(entred, &length, &height);
        if((length > 9 || length < 1) || (height > 9 || height< 1)){
            setTextLine(COLS/4 + 2, 3*ROWS/8 + k + 4, "Invalid input!", FIELD_BACKGROUND | FOREGROUND_RED);
            Sleep(1500);
        }
    }while((length > 9 || length < 1) || (height > 9 || height< 1));

    do{
        drawField(COLS/4, ROWS/4, COLS/2, ROWS/2);
        k = setText(COLS/4 + 2, 3*ROWS/8, "Enter matrix random values diapason\nparting left & right bounds with coma:", FIELD_COLOR);
        getText(COLS/4 + 2, 3*ROWS/8 + k + 1, entred, FIELD_BACKGROUND, FORE_BLACK);
        getPartiedInts(entred, &lowVal, &highVal);
        if((lowVal > highVal) || (highVal > 999) || (lowVal < -999)){
            setTextLine(COLS/4 + 2, 3*ROWS/8 + k + 4, "Invalid input!", FIELD_BACKGROUND | FOREGROUND_RED);
            Sleep(1500);
        }
    }while((lowVal > highVal) || (highVal > 999) || (lowVal < -999));


    int matr[height][length], mcpy[length][height], isTurned = 0, toSwitch = 0, firstToSwap, secondToSwap;
    int cX, cY, val, row;
    fillRand(length, height, matr, lowVal, highVal);

    int y = 2 + height*2;

    short color = FIELD_COLOR, toClean = 0, isSwaped = 0, help = 0, toPickOutCols = 0, toYellow = 0, toPickOutRow = 0;
    char * g, cpy[100];
    COORD swaped[2];
    clearScr();
    drawField(0, 0, COLS - 1, y);

    while(1){
        y = isTurned ? (2 + length*2) : (2 + height*2);
        if(toClean){
            toClean = 0;
            clean(y);
        }
        printMatr(length, height, matr, isTurned, toSwitch, color);
        color = FIELD_COLOR;

        if(isSwaped){
            pickOut(length, height, matr, isTurned, swaped[0], BACKGROUND_GREEN);
            pickOut(length, height, matr, isTurned, swaped[1], BACKGROUND_RED);
            isSwaped = 0;
        } else if(toYellow){
            printEl(length, height, matr, isTurned, cX - 1, cY - 1, FORE_YELLOW | FIELD_BACKGROUND | FOREGROUND_INTENSITY);
            toYellow = 0;
        } else if(toPickOutRow){
            pickOutRow(length, height, matr, isTurned, row - 1, BACKGROUND_GREEN);
            toPickOutRow = 0;
        } else if(toPickOutCols){
            pickOutCol(length, height, matr, isTurned, firstToSwap - 1, BACKGROUND_GREEN);
            pickOutCol(length, height, matr, isTurned, secondToSwap - 1, BACKGROUND_RED);
            toPickOutCols = 0;
        }

        toSwitch = 0;
        setTextLine(1, y + 2, "Enter your command:",  FORE_WHITE);
        do{
            getText(1, y + 3, entred, BACK_BLACK, FOREGROUND_GREEN);
        }while(entred[0] == '\0');

        strcpy(cpy, entred);
        g = strtok(cpy, " ");
        if(!g)
            g = "\n";
        for(i = 2; i < COLS; i++){
            moveCursor(i, y + 3);
            putchar(' ');
        }
        if(!strcmp(entred, "help")){
            helpComm(y + 5);
            help = 1;
        }else if(!strcmp(entred, "clear all")){
            clearMatr(length, height, matr);
            color = FIELD_BACKGROUND | FORE_YELLOW | FOREGROUND_INTENSITY;
        }else if(!strcmp(g, "random")){
            lowVal = -1000;
            highVal = -1000;
            char cpy1[100];
            for(i = 0; cpy[i + 7] != '\0'; i++){
                cpy1[i] = cpy[i + 7];
            }
            cpy1[i] = '\0';
            getPartiedInts(cpy1, &lowVal, &highVal);

            if((lowVal > highVal) || (highVal > 999) || (lowVal < -999)){
                invalidInput(y);
            }else{
                fillRand(length, height, matr, lowVal, highVal);
                color = FIELD_BACKGROUND | FORE_YELLOW | FOREGROUND_INTENSITY;
            }
        }else if(!strcmp(g, "set")){
            cX = -1;
            cY = -1;
            val = -1000;
            char cpy1[100], *l;
            for(i = 0; cpy[i + 4] != '\0'; i++){
                cpy1[i] = cpy[i + 4];
            }
            cpy1[i] = '\0';
            getPartiedInts(cpy1, &cX, &cY);
            l = strtok(cpy1, ":");
            l = strtok(NULL, ":");
            if(l != NULL){
                val = atoi(l);
            }

            if(!isTurned){
                if(cX > length || cX <= 0 || cY > height || cY <= 0 || val > 999 || val < -999){
                    invalidInput(y);
                }else{
                    matr[cY -  1][cX - 1] = val;
                    toYellow = 1;
                }
            }else{
                if(cX > height || cX <= 0 || cY > length || cY <= 0 || val > 999 || val < -999){
                    invalidInput(y);
                }else{
                    matr[cX - 1][cY - 1] = val;
                    toYellow = 1;
                }
            }
        }else if(!strcmp(entred, "print upright")){
            isTurned = !isTurned;
            toSwitch = 1;
        }else if(!strcmp(entred, "middle value")){
            double mid = countMiddle(length, height, matr);
            setTextColor(FORE_WHITE);
            moveCursor(5, y + 4);
            printf("middle value: ");
            setTextColor(FORE_YELLOW);
            moveCursor(22, y + 4);
            printf("%f                         ", mid);
            help = 1;
        }else if(!strcmp(g, "sum")){
            int sum;
            row = -1;
            g = strtok(NULL, " ");
            if(g != NULL && !strcmp(g, "in")){
                g = strtok(NULL, " ");
                if(g != NULL && !strcmp(g, "row")){
                    g = strtok(NULL, " ");
                    if(g != NULL)
                        row = atoi(g);
                }
            }
            if(row < 0 || row > (isTurned ? length : height))
                invalidInput(y);
            else{
                sum = sumInRow(length, height, matr, isTurned, row -1);
                toPickOutRow = 1;
                setTextColor(FORE_WHITE);
                moveCursor(5, y + 4);
                printf("sum in %dth row: ", row);
                setTextColor(FORE_YELLOW);
                moveCursor(22, y + 4);
                printf("%d                         ", sum);
                help = 1;
            }
        }else if(!strcmp(entred, "swap 1")){
            swapMinMax(length, height, matr, isTurned, 1, swaped);
            isSwaped = 1;
        }else if(!strcmp(entred, "swap 2")){
            swapMinMax(length, height, matr, isTurned, 0, swaped);
            isSwaped = 1;
        }else if(!strcmp(entred, "swap cols")){
            swapCols(length, height, matr, isTurned, &firstToSwap, &secondToSwap);
            toPickOutCols = 1;
        }else if(!strcmp(entred, "clean workspace") && help){
            toClean = 1;
            help = 0;
        }else if(!strcmp(entred, "f**k you")){
            clearScr();
            setTextLine(0, 0, "GO F**K YOURSELF!", FOREGROUND_RED | FOREGROUND_INTENSITY);
            setTextColor(FORE_WHITE);
            return EXIT_FAILURE;
        }else if(!strcmp(entred, "exit")){
            clearScr();
            setTextColor(FORE_WHITE);
            return EXIT_SUCCESS;
        }else{
            invalidInput(y);
        }
    }
    return EXIT_SUCCESS;
}