fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. void removefibas(int* arr, int* size, int index) {
  6. if (index >= 0 && index < *size) {
  7. for (int i = index; i < *size - 1; ++i) {
  8. arr[i] = arr[i + 1];
  9. }
  10. (*size)--;
  11. }
  12. }
  13.  
  14. int main() {
  15. int n = 0, m = 0;
  16. printf("enter long and width of the matrix: \n");
  17. scanf("%d %d", &n, &m);
  18. int** mat = malloc(sizeof(int*) * m);
  19. for (int i = 0; i < n; i++) {
  20. mat[i] = malloc(sizeof(int) * n);
  21. }
  22.  
  23. // Динамическое выделение памяти для массива fiba
  24. int* fiba = malloc(sizeof(int) * 100); // Выделяем достаточно памяти
  25. fiba[0] = 0;
  26. fiba[1] = 1;
  27. int fiba_count = 2;
  28.  
  29. while (fiba[fiba_count - 1] < 320000) {
  30. fiba[fiba_count] = fiba[fiba_count - 1] + fiba[fiba_count - 2];
  31. fiba_count++;
  32. }
  33.  
  34. srand(time(NULL));
  35.  
  36. int ran = 0;
  37. fiba_count -= 1;
  38.  
  39. for (int i = 0; i < n; i++) {
  40. for (int j = 0; j < m; j++) {
  41. ran = rand() % (fiba_count);
  42. mat[i][j] = fiba[ran];
  43. removefibas(fiba, &fiba_count, ran);
  44. fiba_count--;
  45. }
  46. if (fiba_count < 0) {
  47. printf("its too much numbers in matrix\n");
  48. return 0;
  49. }
  50. }
  51.  
  52. for (int i = 0; i < n; i++) {
  53. for (int j = 0; j < m; j++) {
  54. printf("%d ", mat[i][j]);
  55. }
  56. printf("\n");
  57. }
  58.  
  59. // Освобождаем память
  60. free(fiba); // Освобождаем память для fiba
  61. for (int i = 0; i < n; i++) {
  62. free(mat[i]);
  63. }
  64. free(mat);
  65.  
  66. return 0;
  67. }
  68.  
  69.  
Success #stdin #stdout 0.01s 5284KB
stdin
3 4
stdout
enter long and width of the matrix: 
10946 21 144 1 
4181 34 1597 610 
3 987 5 13