Advertisement
Guest User

Untitled

a guest
Dec 5th, 2011
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.38 KB | None | 0 0
  1. /*Решить систему линейных уравнений параллельным вариантом метода Гаусса.
  2. Количество потоков задается с помощью клавиатуры. Данные системы считываются из
  3. файла. Результат записывается снова в файл. */
  4. #include <iostream>
  5. #include <fstream>
  6. #include "windows.h"
  7. #include "process.h"
  8. #include "conio.h"
  9. using namespace std;
  10.  
  11. double mas_koef[10][10]; //массив элементов системы
  12. double mas_vect[10]; //массив вектора
  13. int n ; //размерность
  14. double elem[10]; //нужные множители
  15. double dop_mas[10][10]; //все множители
  16.  
  17. void gauss_koef (void* param);
  18. void cin_file();
  19. void cout_file();
  20. void vect ();
  21.  
  22. int main()
  23. {  
  24.     SetConsoleOutputCP(1251);
  25.     cin_file();
  26.     //_beginthread(gauss_koef,0,0);
  27.     gauss_koef(NULL);  
  28.     vect ();
  29.     cout_file();
  30.     cout<<endl;
  31.     system("pause");
  32.     return 0;
  33. }
  34.  
  35. void gauss_koef (void* param)
  36. {
  37.     int k=0;
  38.     int m=0;
  39.     for (int s=0;s<n-1;s++) //делаем под главной диагональю 0
  40.     for (int i=s+1;i<n;i++)
  41.         for (int j=n-1;j>=0;j--)
  42.           {
  43.             dop_mas[k][j]=((-1)*(mas_koef[i][s]/mas_koef[s][s]));
  44.             mas_koef[i][j]=mas_koef[i][j]+dop_mas[k][j]*mas_koef[s][j];
  45.             k++;
  46.           }
  47.  
  48.         k=0; //переписываем в одномерный массив наши множители
  49.         for (int i=0;i<n;i++)
  50.         {
  51.             elem[k]=dop_mas[m][n-1];
  52.             m+=n;
  53.             k++;
  54.         }
  55.  
  56.         //cout_file();
  57.     //_endthread();
  58. }
  59.  
  60. void vect ()
  61. {
  62.     mas_vect[1]=mas_vect[0]*elem[0]+mas_vect[1];
  63.     mas_vect[2]=mas_vect[0]*elem[1]+mas_vect[2];
  64.  
  65. }
  66.  
  67. void cin_file()
  68. {
  69.     ifstream file ("gauss.txt");
  70.     file>>n; //считываем размерность системы
  71.     for (int i=0;i<n;i++) //считываем элементы системы
  72.         for (int j=0;j<n;j++)
  73.             file>>mas_koef[i][j];
  74.     for (int i=0;i<n;i++)
  75.         file>>mas_vect[i];
  76. }
  77. void cout_file()
  78. {
  79. ofstream file( "outgauss.txt", ofstream::app );
  80.     file<<"Размерность системы = "<<n<<"x"<<n<<endl;
  81.     file<<"Матрица: "<<endl;
  82.     for (int i=0;i<n;i++)
  83.     {
  84.         for (int j=0;j<n;j++)
  85.         {
  86.             file<<mas_koef[i][j];
  87.             file<<" ";
  88.         }
  89.         file<<endl;
  90.     }
  91.     file<<"Вектор: "<<endl;
  92.     for (int i=0;i<n;i++)
  93.         file<<mas_vect[i]<<" ";
  94.     file<<endl<<endl;
  95. }
  96.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement