Advertisement
Guest User

Untitled

a guest
May 27th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.37 KB | None | 0 0
  1. /**
  2.  
  3.  **/
  4.  
  5. // Nazwa pliku wykonywalnego: Matrix
  6.  
  7. // Prosze dopisac kod, dodac nowe pliki, tak aby program wykonywal sie,
  8. // a wynik jego dzialania byl taki sam jak podany na końcu tego pliku.
  9.  
  10.  // Celem zadania jest napisanie szablonu klasy reprezentujacej macierz 2D.
  11.  // Charakterystyczne jest to ze rozmiary macierzy zadawane sa w czasie kompilacji.
  12.  // Tym samym Matrix<double, 2, 2> i Matrix<double, 3, 3> sa roznymi typami.
  13.  // Dostep do elemetow macierzy moze byc realizowany jest poprzez metode szablonową at<>()
  14.  // ktorej argumentami sa indeksy macierzy.
  15.  //
  16.  // Najwieksza zabawa jest z operacja add. Pozwala ona przyjac argument innego typu (tu tablica int) i dodac do tablicy double.
  17.  // Inaczej mowiac, tablice o tym samym rozmiarze i roznym typie przechowywanym mozna dodawac.
  18.  // UWAGA: Brawa za przeniesienie wszystkich implementacji metod poza klase.
  19.  
  20. // Pliku Main.cpp, nie wolno modyfikowac.
  21.  
  22. // Ostateczny program powinien byc przyjazny dla programisty (miec czytelny i dobrze napisany kod).
  23.  
  24. // Makefile (lub CMakeLists.txt) dolaczony do rozwiazania powinien tworzyc plik wykonywalny
  25. // o nazwie mobile. Program nalezy kompilowac z flagami -Wall -g.
  26. // Makefile powinien zawierac rowniez cel "clean", ktory usuwa pliki obiektowe i plik wykonywalny.
  27.  
  28. // Przy wykonaniu zadania nie wolno korzystac z internetu, notatek,
  29. // ani zadnych innych materialow (w tym wlasnych wczesniej
  30. // przygotowanych plikow oprocz makefile)
  31.  
  32. // Rozwiazanie (archiwum matrix.tar.gz zawierajace w folderze dodane pliki, makefile i Main.cpp)
  33. // nalezy wgrac do UPEL.
  34.  
  35. #include <iostream>
  36. #include "Matrix.h"
  37.  
  38.  
  39. int main() {
  40.  
  41.   Matrix<double, 2, 3> a;
  42.   a.reset(5.1);           // ustawia wszystkie wartosci na 5.1
  43.   Matrix<double, 3, 3> b;
  44.  
  45.   // a.add(b);            // to sie niepowinno kompilowac bo rozmiary a i b sa rozne
  46.                           // i byloby to dzialanie niejednoznaczne
  47.  
  48.   // stary trick, dostep do zapisu i odczytu, mozliwy gdy zwrocimy ?
  49.   b.at<1,1>() = 2.5;
  50.   b.at<1,2>() = 3.1;
  51.  
  52.   // pierwsza linijka wyniku
  53.   std::cout << b.at<1,1>() << " " << a.at<0,2>()  << "\n\n";
  54.  
  55.   Matrix<int, 3, 3> c;  // domyślnie, inicjalizacja wszystkich wartości do 0;
  56.   c.at<2,0>() = 7;
  57.   b.add(c);             // a to sie kompiluje bo wymiary sa takie same, moimo ze typy sa rozne
  58.   std::cout << b;
  59. }
  60. /* wynik
  61. 2.5 5.1
  62.  
  63. 0 0 7
  64. 0 2.5 0
  65. 0 3.1 0
  66.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement