//
// Created by Mateusz Baran, Tomasz Sośnicki on 24.10.2020.
// Copyright (c) 2020 AGH. All rights reserved.
//
#include <iostream>
#define SIZE 10 //stałe dla tablic
#define COLUMNS 3
#define ROWS 2
using namespace std;
struct Book {
string title;
int year;
};
void print(int number) {
/*wypisuje wartość int*/
cout << "Integer: " << number << endl;
}
void print(float number) {
/*wypisuje wartość float*/
cout << "Decimal: " << number << endl;
}
void print(Book book) {
/*wypisuje Book przez wartość*/
cout << "Title: " << book.title << endl;
cout << "Year: " << book.year << endl;
}
// //nie działa przecież
//void print(const Book book)
//{
// cout << "Title: " << book.title << endl;
// cout << "Year: " << book.year << endl;
//}
void print(Book &book) {
/*wypisuje Book przez referencję*/
cout << "Title: " << book.title << endl;
cout << "Year: " << book.year << endl;
}
void print(const Book &book) {
/*wypisuje Book przez stałą referencję*/
cout << "Title: " << book.title << endl;
cout << "Year: " << book.year << endl;
}
void print(Book *book) {
/*wypisuje Book przez wskaźnik*/
cout << "Title: " << book->title << endl;
cout << "Year: " << book->year << endl;
}
void print(const Book *book) {
/*wypisuje Book przez stały wskaźnik*/
cout << "Title: " << book->title << endl;
cout << "Year: " << book->year << endl;
}
void print(int arr[]) {
/*wywpisuje tablicę 1D*/
for(int i = 0; i < SIZE; ++i) {
cout << arr[i] << "\t";
}
cout << endl;
}
//konieczna jest inna nazwa by zadziałało
void printPtr(int *arr) {
/*wywpisuje tablicę 1D*/
for(int i = 0; i < SIZE; ++i) {
cout << *arr << "\t";
++arr;
}
cout << endl;
}
void print(int arr2D[][COLUMNS]) {
/*wypisuje tablicę 2D*/
for(int i = 0; i < ROWS; ++i) {
for(int j =0; j < COLUMNS; ++j) {
cout << arr2D[i][j] << "\t";
}
cout << "\n";
}
cout << "\n";
}
void print(int **arr2D) {
/*wypisuje tablicę 2D*/
for(int i = 0; i < ROWS; ++i) {
for(int j = 0; j < COLUMNS; ++j) {
cout << arr2D[i][j] << "\t";
}
cout << "\n";
}
cout << "\n";
}
int main()
{
float f = 5;
print(f);
print(5);
print(5.5f);
int A[SIZE] {}; // deklaracja tablicy 1D i wypełnienie zerami
print(A); // funkcja wypisująca tablicę 1D za pomoca arr[]
printPtr(A); // funkcja wypisująca tablicę 1D za pomocą *arr
int B[ROWS][COLUMNS] {}; // deklaracja tablicy 2D i wypełnienie zerami
print(B); // funkcja wypisująca tablicę 2D za pomocą arr[][]
int **C = new int *[ROWS]; // alokacja pamięci dla tablicy 2D
for (int i = 0; i < ROWS; ++i) {
C[i] = new int[COLUMNS];
}
for (int i = 0; i < ROWS; ++i){ // wypełnienie tablicy 2D
for(int j = 0; j < COLUMNS; ++j) {
C[i][j] = 9;
}
cout << "\n";
}
print(C); // funckja wypisująca tablicę 2D za pomocą **arr
/*##############################*/
Book ks;
ks.year = 45;
ks.title = "kek";
//print(ks); // nie działa - komunikat o wieloznacznośi funkcji
Book *ksPtr;
ksPtr->year = 12;
ksPtr->title = "Pan Tadeusz";
print(ksPtr); //funkcja wypisująca Book przez wskaźnik
return 0;
}
// TODO: Napisz przeładowania funkcji print dla struktury Book (przekazanie przez wartość, stałą wartość, referencję stałą referencję, wskaźnik, wskaźnik do stałego obiektu B
// TODO: Napisz funkcję print dla tablicy jednowymiarowej i dwuwymiarowej liczb całkowitych ( int [], int *, int [][], int **)