Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <stdio.h>
- #include <stdbool.h>
- #include <stdlib.h>
- #include <malloc.h>
- #define themeMessage "Тема: Дана матрица А порядка n. Подсчитать \nколичество строк матрицы, \\nэлементы которых представляют перестановки \nчисел от 1 до n.\\n"
- #define dottedLine "--------------------------------------------------------------------\n"
- #define mistakeNotOpenMessage "Ошибка! Невозможно открыть данный файл. Пожалуйста, проверьте файл и повторите попытку.\n"
- enum typeOfInput {
- CHOOSEKEYBOARD, CHOOSEFILE
- };
- enum typeOfOutput {
- YES, NO
- };
- enum typeOfInput chooseInput(){
- enum typeOfInput answer = (enum typeOfInput) NULL;
- bool isNotCorrect;
- do {
- printf("Если желаете заполнять массив с клавиатуры, пожалуйста, введите K,\nесли желаете считать массив из файла, пожалуйста, введите F:\n");
- char symbol;
- fseek(stdin, 0, SEEK_END);
- scanf("%c", &symbol);
- symbol = toupper(symbol);
- isNotCorrect = false;
- if ((symbol != 'K') && (symbol != 'F')) {
- printf("Внимание, при вводе произошла ошибка. Пожалуйста, повторите попытку.\n");
- isNotCorrect = true;
- }
- else if (symbol == 'K') {
- answer = CHOOSEKEYBOARD;
- }
- else if (symbol == 'F'){
- answer = CHOOSEFILE;
- }
- }
- while (isNotCorrect);
- return answer;
- }
- int** inputMatrixFromFile(int *lengthOfMatrix) {
- bool isInvalidInput;
- int **methodMatrix;
- do {
- isInvalidInput = false;
- printf("Пожалуйста, введите имя файла, из которого будут считываться данные.\nНапример, \"C:\\Users\\lenovo\\Desktop\\Name.txt\".\n");
- char fileName[260];
- scanf("%s", fileName);
- FILE *inFile;
- inFile = fopen(fileName, "rt");
- if (inFile == NULL) {
- printf("Ошибка! Невозможно открыть данный файл. Пожалуйста, проверьте файл и повторите попытку.\n");
- isInvalidInput = true;
- } else {
- fscanf_s(inFile, "%d", lengthOfMatrix);
- if ((*lengthOfMatrix < 1) || (*lengthOfMatrix > 10)){
- printf("Ошибка! Число, находящееся в файле, не является натуральным. Пожалуйста, проверьте файл и повторите попытку.\n");
- isInvalidInput = true;
- }
- else {
- methodMatrix = (int **) malloc(*lengthOfMatrix * sizeof(int));
- for (int i = 0; i < *lengthOfMatrix; i++){
- methodMatrix[i] = (int*) malloc(*lengthOfMatrix * sizeof(int));
- for (int j = 0; j < *lengthOfMatrix; j++){
- fscanf_s(inFile, "%d", &methodMatrix[i][j]);
- }
- }
- }
- fclose(inFile);
- for (int i = 0; i < *lengthOfMatrix; i++){
- for (int j = 0; j < *lengthOfMatrix; j++) {
- printf("A[%d, %d] = %d\n", i, j, methodMatrix[i][j]);
- }
- }
- }
- } while (isInvalidInput);
- return methodMatrix;
- }
- int main() {
- SetConsoleOutputCP(CP_UTF8);
- printf(themeMessage);
- printf(dottedLine);
- int matrixLength = 0;
- int **matrix;
- enum typeOfInput input = chooseInput();
- switch (input){
- case CHOOSEKEYBOARD:
- /*matrixLength = inputMatrixLength();
- matrix = (int *) calloc(matrixLength * matrixLength * sizeof(int));
- for (int i = 0; i < arrLength; i++) {
- myArr[i] = fillArrKeyboard(i);
- }*/
- break;
- case CHOOSEFILE:
- matrix = inputMatrixFromFile(&matrixLength);
- break;
- }
- getchar();
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement