Advertisement
kaburen

funkcje

Jan 31st, 2019
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.43 KB | None | 0 0
  1. #include "myHead1.h"
  2.  
  3. void myMenu1(int *polecenie, int* zad)
  4. {
  5.     puts("**Menu kalkulatora macierzy**\n");
  6.     puts("1.Dodawanie\n2.Odejmowanie\n3.Mnozenie przez skalar\n4.Mnozenie macierzy\n5.Transponowanie\n6.Koniec programu");
  7.     scanf("%d",polecenie);
  8.     *zad = 1;
  9. }
  10.  
  11.  
  12. void matrixDim(int *wier, int *kol)                        //Pobranie wymiarów
  13. {
  14.     puts("Podaj liczbe calkowita wieksza od 0");
  15.     puts("Wiersze:");
  16.     scanf("%d",wier);
  17.     puts("Kolumny:");
  18.     scanf("%d",kol);
  19. }
  20.  
  21.  
  22. double** alokacjaPam(int wier, int kol)                     //Alokacja pamieci
  23. {
  24.     double **mat;
  25.     int i;
  26.  
  27.     mat =(double**)malloc(wier*sizeof(double*));
  28.     if(mat==NULL)
  29.     {
  30.         puts("Błąd alokacji");
  31.         return -1;
  32.     }
  33.  
  34.     for(i = 0; i < wier; i++)
  35.     {
  36.         mat[i]=(double*)malloc(kol*sizeof(double));
  37.         if(mat[i]==NULL)
  38.         {
  39.             puts("Błąd alokacji");
  40.             return -1;
  41.         }
  42.     }
  43.     return mat;
  44. }
  45.  
  46.  
  47. void zwolnieniePam(double** mat, int wier)                      //Zwolnienie pamieci
  48. {
  49.     int i;
  50.     for(i = 0; i < wier; i++)
  51.     {
  52.         free(mat[i]);
  53.     }
  54.  
  55.     free(mat);
  56. }
  57.  
  58.  
  59. void getMatrix(double** mat, int wier, int kol)             //Pobieranie danych uzytkownika
  60. {
  61.     int i;
  62.     int k;
  63.  
  64.     for(i = 0; i < wier; i++)
  65.     {
  66.         for(k = 0; k < kol; k++)
  67.         {
  68.             printf("Element[%d][%d]", i+1, k+1);
  69.             scanf("%lf",&mat[i][k]);
  70.         }
  71.     }
  72. }
  73.  
  74.  
  75. void printMatrix(double** mat, int wier, int kol)           //Przedstawienie danych
  76. {
  77.  
  78.     int i;
  79.     int k;
  80.  
  81.     for(i = 0; i < wier; i++)
  82.     {
  83.         for(k = 0; k < kol; k++)
  84.         {
  85.             printf("%.2lf ", mat[i][k]);
  86.         }
  87.         printf("\n\n");
  88.     }
  89. }
  90.  
  91.  
  92. void addMatrix(double** mA, double** mB, double** wyn, int wierA, int kolA)
  93. {
  94.     FILE *txt;
  95.     int i, k;
  96.  
  97.     for (i = 0; i < wierA; i++)                                             //dodawanie macierzy
  98.     {
  99.         for(k = 0; k < kolA; k++)
  100.         {
  101.             wyn[i][k]=mA[i][k]+mB[i][k];
  102.         }
  103.     }
  104.  
  105.     if ((txt=fopen("suma.txt", "w"))==NULL)
  106.     {
  107.         printf ("Nie mogę otworzyć pliku do zapisu\n");                      //Blad
  108.         exit(1);
  109.     }
  110.     for(i = 0; i < wierA; i++)                                              //Zapis do pliku suma.txt
  111.     {
  112.         for(k = 0; k < kolA; k++)
  113.         {
  114.             fprintf (txt, "%.2lf ", wyn[i][k]);
  115.         }
  116.         fprintf(txt, "\n");
  117.     }
  118.     fclose (txt);
  119. }
  120.  
  121.  
  122. void subMatrix(double** mA, double** mB, double** wyn, int wierA, int kolA)
  123. {
  124.     FILE *txt;
  125.     int i, k;
  126.     int pytanie  = 0, warunek = 1;
  127.  
  128.     while(warunek)
  129.     {
  130.         puts("1. A-B\n2. B-A");
  131.         scanf("%d", &pytanie);
  132.         if(pytanie == 1)
  133.         {
  134.             for (i = 0; i < wierA; i++)                                             //A-B
  135.             {
  136.                 for(k = 0; k < kolA; k++)
  137.                 {
  138.                     wyn[i][k]=mA[i][k]-mB[i][k];
  139.                 }
  140.             }
  141.             warunek = 0;
  142.         }
  143.         else if(pytanie == 2)
  144.         {
  145.             for (i = 0; i < wierA; i++)                                             //B-A
  146.             {
  147.                 for(k = 0; k < kolA; k++)
  148.                 {
  149.                     wyn[i][k]=mB[i][k]-mA[i][k];
  150.                 }
  151.             }
  152.             warunek = 0;
  153.         }
  154.         else
  155.         {
  156.             puts("wpisz 1 lub 2");
  157.         }
  158.     }
  159.  
  160.     if ((txt=fopen("roznica.txt", "w"))==NULL)                                    //Blad
  161.     {
  162.         printf ("Nie mogę otworzyć pliku do zapisu\n");
  163.         exit(1);
  164.     }
  165.  
  166.     if(pytanie == 1)
  167.     {
  168.         fprintf(txt, "*A-B*\n");
  169.     }
  170.     else
  171.     {
  172.         fprintf(txt, "*B-A*\n");
  173.     }
  174.  
  175.     for(i = 0; i < wierA; i++)                                              //Zapis do pliku roznica.txt
  176.     {
  177.         for(k = 0; k < kolA; k++)
  178.         {
  179.             fprintf (txt, "%.2lf ", wyn[i][k]);
  180.         }
  181.         fprintf(txt, "\n");
  182.     }
  183.     fclose (txt);
  184. }
  185.  
  186.  
  187. void scalMatrix(double** mA, double** wyn, int wierA, int kolA, double skalar)
  188. {
  189.     FILE *txt;
  190.     int i, k;
  191.  
  192.     for (i = 0; i < wierA; i++)                                             //A*skalar
  193.     {
  194.         for(k = 0; k < kolA; k++)
  195.         {
  196.             wyn[i][k]=mA[i][k]*skalar;
  197.         }
  198.     }
  199.  
  200.     if ((txt=fopen("A_x_skalar.txt", "w"))==NULL)
  201.     {
  202.         printf ("Nie mogę otworzyć pliku do zapisu\n");                      //Blad
  203.         exit(1);
  204.     }
  205.  
  206.     fprintf(txt, "Skalar:*%.2lf*\n", skalar);
  207.  
  208.     for(i = 0; i < wierA; i++)                                              //Zapis do pliku A_x_skalar.txt
  209.     {
  210.         for(k = 0; k < kolA; k++)
  211.         {
  212.             fprintf (txt, "%.2lf ", wyn[i][k]);
  213.         }
  214.         fprintf(txt, "\n");
  215.     }
  216.     fclose (txt);
  217.  
  218. }
  219.  
  220.  
  221. void multiMatrix(double** mA, double** mB, double** wyn, int wierA, int kolA, int kolB)
  222. {
  223.     FILE *txt;
  224.     int i, j, k;
  225.     int sum;
  226.  
  227.     for(i = 0; i < wierA; i++)                                             //Mnozenie AxB
  228.         for(j = 0; j < kolB; j++)
  229.         {
  230.             sum = 0;
  231.             for(k = 0; k < kolA; k++) sum += mA[i][k] * mB[k][j];
  232.             wyn[i][j] = sum;
  233.         }
  234.  
  235.     if ((txt=fopen("iloczyn.txt", "w"))==NULL)
  236.     {
  237.         printf ("Nie mogę otworzyć pliku do zapisu\n");                      //Blad
  238.         exit(1);
  239.     }
  240.  
  241.     for(i = 0; i < wierA; i++)                                              //Zapis do pliku iloczyn.txt
  242.     {
  243.         for(j = 0; j < kolB; j++)
  244.         {
  245.             fprintf (txt, "%.2lf ", wyn[i][j]);
  246.         }
  247.         fprintf(txt, "\n");
  248.     }
  249.  
  250.     fclose (txt);
  251. }
  252.  
  253.  
  254. void transMatrix(double** mA, double** wyn, int wierA, int kolA)
  255. {
  256.     FILE *txt;
  257.     int i, k;
  258.  
  259.     for (i = 0; i < kolA; i++)                                             //Transponowanie
  260.     {
  261.         for(k = 0; k < wierA; k++)
  262.         {
  263.             wyn[i][k]=mA[k][i];
  264.         }
  265.     }
  266.  
  267.     if ((txt=fopen("transp.txt", "w"))==NULL)
  268.     {
  269.         printf ("Nie mogę otworzyć pliku do zapisu\n");                      //Blad
  270.         exit(1);
  271.     }
  272.  
  273.     for (i = 0; i < kolA; i++)                                             //Zapis do pliku transp.txt
  274.     {
  275.         for(k = 0; k < wierA; k++)
  276.         {
  277.             fprintf (txt, "%.2lf ", wyn[i][k]);
  278.         }
  279.         fprintf(txt, "\n");
  280.     }
  281.  
  282.     fclose (txt);
  283. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement