Решении системы линейных уравнений методом простой итерации - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задача состоит в решении системы линейных уравнений методом простой итерации. Просьба указать на ошибки в коде. Заранее спасибо.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void iter(double, int, int);
  4. int main (void)
  5. {
  6. int i, j, n, d;
  7. double a[n][n];
  8. double x[i];
  9. double b[i];
  10. double xk[i];
  11. double e=0.0001;
  12. {
  13. printf("Введите число уравнений системы\n");
  14. scanf("%d", &n);
  15. printf("Введите систему: \n");
  16. for (i=0; i<n; ++i)
  17. for (j=0; j<n; ++j)
  18. scanf("%lf, &a[i][j])
  19. printf("Введите столбец правых частей\n");
  20. scanf("%lf"; &b[i]);
  21. for (i=0; i<n; ++i)
  22. x[i]=b[i];
  23. for (i=0; i<n; ++i)
  24. for (j=0; j<n; ++j)
  25. {
  26. b[i]/=a[i][i];
  27. a[i][j]/=(-a[i][i]);
  28. }
  29. for (i=0; i<n; ++i)
  30. for (j=0; j<n; ++j)
  31. if (i==j)
  32. a[i][j]=0;
  33. for (i=0; i<n; ++i)
  34. {
  35. d=0;
  36. s=0;
  37. xk[i]=b[i];
  38. {
  39. for (j=0; j<n; ++J)
  40. s+=a[i][j]*x[i];
  41. x[i]=b[i]+s;
  42. if (fabs(x[i]-xk[i])<0.0001)
  43. d=1;
  44. xk[i]=x[i];
  45. }
  46. while (d!=1);
  47. }
  48. for (i=0; i<n; ++i)
  49. printf("%lf\n", x[i];
  50. }
  51. return;
  52. }

Решение задачи: «Решении системы линейных уравнений методом простой итерации»

textual
Листинг программы
  1. #include <stdlib.h>
  2. /*...*/
  3. size_t rows, columns, i;
  4. double ** array;
  5. /*...*/
  6. scanf("%u", &rows);
  7. scanf("%u", &columns);
  8. if ( ! ( array = malloc(sizeof(double*) * rows) ) ) {
  9.     perror("malloc");
  10.     exit(1);
  11. }
  12. for ( i = 0; i < rows; ++i ) {
  13.     if ( ! ( array[i] = malloc(sizeof(double) * columns) ) ) {
  14.         perror("malloc");
  15.         exit(1);
  16.     }
  17. }
  18. /*...*/
  19. for ( i = 0; i < rows; ++i )
  20.     free(array[i]);
  21. free(array);
  22. exit(0);

Объяснение кода листинга программы

В этом коде:

  1. #include Это включает в себя файл стандартной библиотеки C, который содержит функции для работы с памятью, такие как malloc и free.
  2. size_t rows, columns, i; Эти переменные используются для хранения размеров матрицы и индекса текущего элемента.
  3. double array; Это объявление двумерного массива. double означает, что это массив указателей на массив типа double.
  4. scanf(%u, &rows); Считывает целочисленное значение (unsigned int) в переменную rows. В данном случае, это количество строк матрицы.
  5. scanf(%u, &columns); Считывает целочисленное значение (unsigned int) в переменную columns. В данном случае, это количество столбцов матрицы.
  6. if ( ! ( array = malloc(sizeof(double) rows) ) ) { Это пытается выделить память для массива указателей на double с помощью функции malloc. Если память не может быть выделена, код переходит к блоку if, где выводится сообщение об ошибке и программа завершается.
  7. for ( i = 0; i < rows; ++i ) { Это цикл, который проходит по каждой строке матрицы.
  8. *if ( ! ( array[i] = malloc(sizeof(double) columns) ) ) {** Это пытается выделить память для строки матрицы с помощью функции malloc. Если память не может быть выделена, код переходит к блоку if, где выводится сообщение об ошибке и программа завершается.
  9. for ( i = 0; i < rows; ++i ) Это цикл, который проходит по каждой строке матрицы.
  10. free(array[i]); Это освобождает память, выделенную для текущей строки матрицы.
  11. free(array); Это освобождает память, выделенную для массива указателей на double.
  12. exit(0); Это завершает программу без ошибок. Таким образом, этот код создает и инициализирует двумерный массив, считывает размеры матрицы, выделяет память для каждой строки и столбца, выполняет некоторую операцию (которая не указана в коде) и освобождает память.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы