Tablice wielowymiarowe

  1. Proszę napisać funkcję int wypisz( char [] [] tab ) { ... }, której zadaniem jest wypisanie do strumienia wyjściowego programu zawartości dwuwymiarowej tablicy przekazanej parametrem tab. Format wyprowadzanych danych powinien odpowiadać zawartości tablicy – w kolejnych wyprowadzanych wierszach powinny pojawiać się znaki zapisane w kolejnych wierszach tablicy. Rezultatem funkcji powinna być liczba znaków w tablicy tab, nie będących spacją.
  2. Zakładamy, że rozpatrujemy dwuwymiarową, kwadratową tablicę znaków (liczba wierszy jest równa liczbie kolumn). Proszę napisać funkcje (otrzymujące taką kwadratową tablicę jako parametr):
    • void backSlash( char [][] tab ) { … } — funkcja wpisuje znaki ‘*’ na głównej przekątnej (diagonalnej) tablicy tab, pozostałe elementy tablicy są wypełnione znakami spacji.

      5×5
      *
       * 
        *
         *
          *
      
    • void slash( char [][] tab ) { … } — funkcja wpisuje znaki ‘*’ na przekątnej niediagonalnej tablicy tab, pozostałe elementy tablicy są wypełnione znakami spacji.

      5×5
          *
         * 
        *
       *
      *
      
    • void x( char [][] tab ) { … } — funkcja wpisuje znaki ‘*’ na obu przekątnych tablicy tab, pozostałe elementy tablicy są wypełnione znakami spacji.

      5×5
      *   *
       * * 
        *
       * *
      *   *
      
    • void kwadrat( char [][] tab ) { … } — funkcja wpisuje znaki ‘*’ do wszystkich elementów pierwszego i ostatniego wiersza oraz pierwszej i ostatniej kolumny tablicy tab, pozostałe elementy tablicy są wypełnione znakami spacji.

      5×5
      *****
      *   * 
      *   *
      *   *
      *****
      

    Do testowania funkcji proszę wykorzystać napisaną wcześniej funkcję wypisz.

  3. Proszę napisać funkcję void literaA( char [][] znak ) { ... }, której zadaniem jest zapisanie w tablicy znaków o nazwie znak wizerunku litery A zbudowanej ze znaków ‘*’. Funkcja powinna przeanalizować wymiary tablicy znak rozmieścić w niej znaki ‘*’ maksymalnie wykorzystując obszar tablicy. Do testowania funkcji proszę wykorzystać napisaną wcześniej funkcję wypisz. Można założyć, że dla tablic o rozmiarze mniejszym niż 3×3 funkcja nie będzie działać. Przykładowe rozmieszczeni znaków w tablicach o różnych wymiarach:
    4×4
     **   
    *  *  
    ****
    *  *
    
    4×7
     ***** 
    *     *
    *******
    *     *
    
    4×3
     * 
    * *
    ***
    * *
    * *
    
    3×3
     * 
    ***
    * *
    

    Proszę napisać analogiczne funkcje dla liter E, F, H, L, O, U. Można się pokusić o napisanie funkcji dla wszystkich dużych liter alfabetu angielskiego.

  4. Załóżmy, że w pewnych zawodach triathlonowych, dla każdego zawodnika osobno wyznacza się czas pływania, jazdy na rowerze i biegu. Uzyskane czasy są zapisywane w papierowej tabeli mającej tyle wierszy ilu jest zawodników oraz tyle kolumn ile konkurencji (czyli dla triathlonu 3). Proszę napisać funkcję double podsumowanieWynikow( double [][] wyniki ) { … }. Funkcja otrzymuje dwuwymiarową tablicę zawierająca wyniki przepisane z tabeli papierowej, tablica ma tyle wierszy ilu jest zawodników oraz ma kolumn o jeden więcej niż liczba konkurencji (zatem dla triathlonu cztery kolumny). Dodatkowa kolumna zawiera nieistotne wartości początkowe, zadaniem funkcji jest wstawienie do każdego elementu dodatkowej kolumny sumy zawartości wcześniejszych kolumn — dotyczy to każdego wiersza. A więc w przypadku triathlonu, dla każdego zawodnika (wiersza) ostatnia kolumna będzie zawierała sumę czasów uzyskanych w każdej z trzech konkurencji. Przykład dla dwóch zawodników:
    10 23 15 48
    11 25 18 54
    . . . . . .
    

    Rezultatem funkcji ma być najlepszy (a więc najkrótszy) czas sumaryczny.

  5. double [] macierzNaWektor( double [][] wektor ) { … } która otrzymuje w parametrze dwuwymiarową tablicę wartości typu double, rozmiary tablicy nie są z góry znane. Funkcja ma utworzyć jednowymiarową tablicę zdolną do pomieszczenia wszystkich elementów tablicy wektor, wszystkie wartości z tablicy wektor powinny zostać przepisane do nowej tablicy jednowymiarowej (wiersz po wierszu), tablica powinna zostać posortowana rosnąco, rezultatem funkcji ma być referencja to utworzonej tablicy jednowymiarowej.