Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <stdbool.h>
  4. #include <stdlib.h>
  5. #include <malloc.h>
  6.  
  7. #define themeMessage "Тема: Дана матрица А порядка n. Подсчитать \nколичество строк матрицы, \\nэлементы которых представляют перестановки \nчисел от 1 до n.\\n"
  8. #define dottedLine "--------------------------------------------------------------------\n"
  9. #define mistakeNotOpenMessage "Ошибка! Невозможно открыть данный файл. Пожалуйста, проверьте файл и повторите попытку.\n"
  10.  
  11. enum typeOfInput {
  12. CHOOSEKEYBOARD, CHOOSEFILE
  13. };
  14. enum typeOfOutput {
  15. YES, NO
  16. };
  17.  
  18. enum typeOfInput chooseInput(){
  19. enum typeOfInput answer = (enum typeOfInput) NULL;
  20. bool isNotCorrect;
  21.  
  22. do {
  23. printf("Если желаете заполнять массив с клавиатуры, пожалуйста, введите K,\nесли желаете считать массив из файла, пожалуйста, введите F:\n");
  24. char symbol;
  25. fseek(stdin, 0, SEEK_END);
  26. scanf("%c", &symbol);
  27. symbol = toupper(symbol);
  28. isNotCorrect = false;
  29. if ((symbol != 'K') && (symbol != 'F')) {
  30. printf("Внимание, при вводе произошла ошибка. Пожалуйста, повторите попытку.\n");
  31. isNotCorrect = true;
  32. }
  33. else if (symbol == 'K') {
  34. answer = CHOOSEKEYBOARD;
  35. }
  36. else if (symbol == 'F'){
  37. answer = CHOOSEFILE;
  38. }
  39. }
  40. while (isNotCorrect);
  41. return answer;
  42. }
  43.  
  44. int** inputMatrixFromFile(int *lengthOfMatrix) {
  45. bool isInvalidInput;
  46. int **methodMatrix;
  47.  
  48. do {
  49. isInvalidInput = false;
  50. printf("Пожалуйста, введите имя файла, из которого будут считываться данные.\nНапример, \"C:\\Users\\lenovo\\Desktop\\Name.txt\".\n");
  51. char fileName[260];
  52. scanf("%s", fileName);
  53. FILE *inFile;
  54. inFile = fopen(fileName, "rt");
  55. if (inFile == NULL) {
  56. printf("Ошибка! Невозможно открыть данный файл. Пожалуйста, проверьте файл и повторите попытку.\n");
  57. isInvalidInput = true;
  58. } else {
  59. fscanf_s(inFile, "%d", lengthOfMatrix);
  60. if ((*lengthOfMatrix < 1) || (*lengthOfMatrix > 10)){
  61. printf("Ошибка! Число, находящееся в файле, не является натуральным. Пожалуйста, проверьте файл и повторите попытку.\n");
  62. isInvalidInput = true;
  63. }
  64. else {
  65. methodMatrix = (int **) malloc(*lengthOfMatrix * sizeof(int));
  66. for (int i = 0; i < *lengthOfMatrix; i++){
  67. methodMatrix[i] = (int*) malloc(*lengthOfMatrix * sizeof(int));
  68. for (int j = 0; j < *lengthOfMatrix; j++){
  69. fscanf_s(inFile, "%d", &methodMatrix[i][j]);
  70. }
  71. }
  72. }
  73. fclose(inFile);
  74. for (int i = 0; i < *lengthOfMatrix; i++){
  75. for (int j = 0; j < *lengthOfMatrix; j++) {
  76. printf("A[%d, %d] = %d\n", i, j, methodMatrix[i][j]);
  77. }
  78. }
  79. }
  80. } while (isInvalidInput);
  81. return methodMatrix;
  82. }
  83.  
  84. int main() {
  85. SetConsoleOutputCP(CP_UTF8);
  86. printf(themeMessage);
  87. printf(dottedLine);
  88. int matrixLength = 0;
  89. int **matrix;
  90. enum typeOfInput input = chooseInput();
  91. switch (input){
  92. case CHOOSEKEYBOARD:
  93. /*matrixLength = inputMatrixLength();
  94. matrix = (int *) calloc(matrixLength * matrixLength * sizeof(int));
  95. for (int i = 0; i < arrLength; i++) {
  96. myArr[i] = fillArrKeyboard(i);
  97. }*/
  98. break;
  99. case CHOOSEFILE:
  100. matrix = inputMatrixFromFile(&matrixLength);
  101. break;
  102. }
  103. getchar();
  104. getchar();
  105. return 0;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement