Java wariacje z ciągiem Fibonacciego

Zadanie

Utwórz rekurencyjna metode obliczajaca ciag Fibonacciego, zdefiniowany dla elementu fibonacci(n) jako sume fibonacci(n-1) + fibonacci(n-2) przy załozeniu, ze fibonacci(1) i fibonacci(2) maja odpowiednio wartosci 1 i 2.

Ciąg Fibonaciego

In mathematics, the Fibonacci numbers are the numbers in the following integer sequence, called the Fibonacci sequence, and characterized by the fact that every number after the first two is the sum of the two preceding ones:[1][2]

1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 , 144 , …

Often, especially in modern usage, the sequence is extended by one more initial term:

0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 , 144 , …[3]

The Fibonacci spiral: an approximation of the golden spiral created by drawing circular arcs connecting the opposite corners of squares in the Fibonacci tiling;[4] this one uses squares of sizes 1, 1, 2, 3, 5, 8, 13, 21, and 34.

By definition, the first two numbers in the Fibonacci sequence are either 1 and 1, or 0 and 1, depending on the chosen starting point of the sequence, and each subsequent number is the sum of the previous two.

In mathematical terms, the sequence Fn of Fibonacci numbers is defined by the recurrence relation

{\displaystyle F_{n}=F_{n-1}+F_{n-2},}

with seed values[1][2]

  {\displaystyle F_{1}=1,\;F_{2}=1}

or[5]

{\displaystyle F_{0}=0,\;F_{1}=1.}

The Fibonacci sequence is named after Italian mathematician Leonardo of Pisa, known as Fibonacci. His 1202 book Liber Abaci introduced the sequence to Western European mathematics,[6] although the sequence had been described earlier as Virahanka numbers in Indian mathematics.[7][8][9] The sequence described in Liber Abaci began with F1 = 1.

Fibonacci numbers are closely related to Lucas numbers  L_{n} in that they form a complementary pair of Lucas sequencesU_{n}(1,-1)=F_{n} and V_{n}(1,-1)=L_{n}. They are intimately connected with the golden ratio; for example, the closest rational approximations to the ratio are 2/1, 3/2, 5/3, 8/5, … .

Fibonacci numbers appear unexpectedly often in mathematics, so much so that there is an entire journal dedicated to their study, the Fibonacci Quarterly. Applications of Fibonacci numbers include computer algorithms such as the Fibonacci search technique and the Fibonacci heap data structure, and graphs called Fibonacci cubes used for interconnecting parallel and distributed systems. They also appear in biological settings,[10] such as branching in trees, phyllotaxis (the arrangement of leaves on a stem), the fruit sprouts of a pineapple,[11] the flowering of an artichoke, an uncurling fern and the arrangement of a pine cone‘s bracts.[12]

— Source: https://en.wikipedia.org/wiki/Fibonacci_number

Closed form

\(x_{n}=\frac{(1+5^{1/2})^{n} -(1-5^{1/2})^n}{\sqrt{5}2^n}\)

https://math.stackexchange.com/questions/1145342/find-a-formula-for-the-nth-fibonacci-number?newreg=1b687d38e42346fa97a2fdfe3a94c389

Java program and others interesting links

Sources from Bitbucket

bitbucket-icon

 

 

/*
 * Example program to find fibonacci numbers
 */
package Fibonacci;

import static java.lang.Math.sqrt;
import java.util.Scanner;

/**
 *
 * @author KPreiskorn
 */
public class Fibonacci {

  /**
   * @param args the command line arguments
   */
  @SuppressWarnings("resource")
  public static void main(String args[]) {

    // input to print Fibonacci series upto how many numbers
    log("Enter number n Fibonacci to print: ");
    int number = new Scanner(System.in).nextInt();

    log("\nUsing Method-1: Using Recursion. Provided Number: " + number);
    // printing Fibonacci series upto number
    for (int i = 1; i <= number; i++) {
      System.out.printf("%3d %6d\n", i, fibonacciRecusion(i));
    }

    log("\nMethod-2: Fibonacci number at location " + number + " is ==> " + (fibonacciLoop(number) + ""));

    System.out.printf("\nMethod #3 (fibonacciClosedForm): Fibonacci number at location %d is %.0f\n\n", number, fibonacciClosedForm(number));

  }

  // Method-1: Java program for Fibonacci number using recursion.
  public static int fibonacciRecusion(int number) {
    if (number == 1 || number == 2) {
      return 1;
    }

    return fibonacciRecusion(number - 1) + fibonacciRecusion(number - 2); // tail recursion
  }

  // Method-2: Java program for Fibonacci number using Loop.
  public static int fibonacciLoop(int number) {
    if (number == 1 || number == 2) {
      return 1;
    }
    int fibo1 = 1, fibo2 = 1, fibonacci = 1;
    for (int i = 3; i <= number; i++) {
      fibonacci = fibo1 + fibo2; // Fibonacci number is sum of previous two Fibonacci number
      fibo1 = fibo2;
      fibo2 = fibonacci;

    }
    return fibonacci; // Fibonacci number
  }

  // metod 3: Closed-form expression
  public static double fibonacciClosedForm(int n) {
    double q = (1 + sqrt(5)) / 2;

    return Math.floor(Math.pow(q, n) / sqrt(5) + 1 / 2); // Fibonacci number
  }

  private static void log(String number) {
    System.out.println(number);

  }

}

Hits: 202

Java – Suma kolejnych liczb całkowitych od 5 do 1000

Zadanie 1. Suma kolejnych liczb całkowitych od 5 do 1000

Sumowanie – operacja dodawania ciągu liczb, której wynikiem jest suma. Jeśli liczby są dodawane kolejno od lewej do prawej to pośrednie wyniki nazywa się sumami częściowymi lub cząstkowymi. Sumowane liczby (zwane składnikami) mogą być całkowite, rzeczywiste lub zespolone. Oprócz liczb sumowaniu mogą podlegać również inne wielkości: wektory, macierze, wielomiany, lub ogólnie, elementy grupy addytywnej (a nawet monoid). Dla ciągów o skończonej liczbie takich elementów sumowanie zawsze zwraca dobrze określoną sumę.

Sumowanie ciągów nieskończonych nie zawsze jest możliwe, a kiedy wartość nieskończonego sumowania może być podana, to obejmuje ona więcej niż tylko zwykłą operację dodawania, mianowicie pojęcie granicy. Sumowanie nieskończonych ciągów tworzy konstrukcję zwaną szeregiem. Innym pojęciem obejmującym granice skończonych sum jest całka. Pojęcie sumowania nabiera szczególnego znaczenia w powiązaniu z ekstrapolacją w kontekście szeregów rozbieżnych.

Sumowanie ciągu [1, 2, 4, 2] to wyrażenie, którego wartością jest suma wszystkich elementów ciągu. W podanym przykładzie to 1 + 2 + 4 + 2 = 9. Ponieważ dodawanie jest łączne, wynik nie zależy od kolejności wykonywanych działań, na przykład (1 + 2) + (4 + 2) lub 1 + ((2 + 4) + 2) daje w wyniku 9, stąd zazwyczaj pomijane są nawiasy w przypadku wielokrotnego dodawania. Dodawanie jest ponadto przemienne, więc permutacja wyrazów skończonego ciągu również nie zmienia jego sumy (w przypadku ciągów nieskończonych ta właściwość nie zawsze jest prawdziwa; zobacz twierdzenie Riemanna o szeregach warunkowo zbieżnych i kryteria zbieżności szeregów).

Nie ma specjalnego wyróżnionego zapisu sumowania jawnie podanych ciągów gdyż odpowiadające mu wyrażenie wielokrotnego dodawania jest w tym przypadku wystarczające. Drobne trudności pojawiają się gdy ciąg jest jednoelementowy: sumowanie ciągu jednoelementowego nie zawiera znaku dodawania (jest więc nieodróżnialne od wyniku) a sumowanie ciągu pustego nie da się nawet zapisać (lecz można podać w jego sumę „0”). Jednak gdy wyrazy ciągu układają się w jakiś wzór to użyteczny a nawet niezbędny staje się operator sumowania. Na przykład jeśli rozpatrywać sumowanie liczb całkowitych od 1 do 100 można wykorzystać wielokropek w wyrażeniu dodawania aby oznaczyć brakujące wyrazy: 1 + 2 + 3 + … + 99 + 100. W tym przykładzie wzór jest łatwy do odgadnięcia, lecz dla bardziej skomplikowanych przypadków konieczne jest bardziej precyzyjne określanie kolejnych wyrazów, które można osiągnąć dzięki operatorowi „Σ”. Korzystając z tego operatora ten sam przykład można zapisać jako:

  \sum _{{i=1}}^{{100}}i

Wartością tego sumowania jest 5050. Można ją znaleźć bez wykonywania 99 dodawań, ponieważ można wykazać (metodą indukcji matematycznej), że

  \sum _{{i=1}}^{n}i={\frac {n(n+1)}2}

dla wszystkich liczb naturalnych n.

— źródło Wiki https://pl.wikipedia.org/wiki/Sumowanie

Zadanie 2. Utwórz tablice 5-cio elementową i wygeneruj do niej losowe wartości z przedziału <-10, 10>

Zadanie 3. Oblicza ile jest dodatnich elementów w tablicy myIntArray.

np. odpowiedź programu: W tablicy myIntArray[5] jest/są  3 dodatnie elementy

Source from Bitbucket https://bitbucket.org/karol-preiskorn/java-examples/overview

/**
 *
 * SumN - java examples
 * 
 * 2017.11.26 new bitbucket repository 
 *
 */
package sum_natural;

import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.nio.charset.StandardCharsets;

/*
 * https://slf4j.org/manual.html
 */
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 * main class
 * 
 * @ver 2017-11-27 poprawki nazw pakietów
 * 
 * 
 */
public class Sum_natural {
  
  /**
   * @param args
   *          the command line arguments
   */
  static Logger logger = LoggerFactory.getLogger("SumN");
  
  public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
    
    logger.info("start");
    
    // TODO code application logic here
    
    int suma; //
    int rn;
    int dodatnie;
    dodatnie = 0;
    suma = 0;
    
    int firstArg = 0;
    if (args.length > 0) {
      try {
        firstArg = Integer.parseInt(args[0]);
        
        if (firstArg < 5) {
          System.err.println("Argument" + args[0] + " musi być większy od zera.");
          System.exit(1);
        }
      } catch (NumberFormatException e) {
        System.err.println("Argument" + args[0] + " must be an integer.");
        logger.error("Argument" + args[0] + " must be an integer.");
        System.exit(1);
      }
      
      for (int i = 5; i <= firstArg; i++) {
        suma += i;
      }
      logger.info("Z1P1: Suma kolejnych liczb całkowitych od 5 do " + args[0] + " wynosi " + suma);
    } else {
      
      for (int i = 5; i <= 1000; i++) {
        suma += i;
      }
      logger.info("Z1P1: Suma kolejnych liczb całkowitych od 5 do 1000 jest równa: " + suma);
    }
    
    logger.info("Z1P2: Utwórz tablice n elemntów i wygeneruj do niej wartości z przedziału <-10, 10>");
    
    // deklaracja tablicy
    int[] myIntArray = new int[10];
    
    String v_array = "myIntArray[" + myIntArray.length + "] = { ";
    
    for (int i = 0; i < myIntArray.length; i++) {
      rn = -10 + (int) (Math.random() * 20);
      myIntArray[i] = rn;
      v_array += rn;
      if (i < myIntArray.length - 1) {
        v_array += ", ";
      }
    }
    
    v_array += " }";
    logger.info(v_array);
    
    logger.info("Z1P3: Oblicza ile jest dodatnich elementów w tablicy myIntArray[" + myIntArray.length + "]");
    
    for (int i = 0; i < 10; i++) {
      
      if (myIntArray[i] > 0) {
        dodatnie++;
      }
    }
    
    logger.info("W tablicy myIntArray[" + myIntArray.length + "] jest/sa  " + dodatnie + " dodatnie elementy");
    
    /*
     * @var http://stackoverflow.com/questions/2885173/how-to-create-a-file-and-write-to- a-file-in-java#2885224
     */
    
    try (PrintWriter writer = new PrintWriter("dodatnie.txt", "UTF-8")) {
      writer.println("W tablicy myIntArray[" + myIntArray.length + "] sa " + dodatnie + " dodatnie elementy.");
      writer.close();
      
    } catch (IOException e) {
    }
    
    try (Writer writer = new BufferedWriter(
        new OutputStreamWriter(new FileOutputStream("dodatnie2.txt"), StandardCharsets.UTF_8))) {
      writer.write("W tablicy myIntArray[" + myIntArray.length + "] sa  " + dodatnie + " dodatnie elementy");
    } catch (IOException ex) {
      // handle me
    }
    
    /*
     * Suma kwadratów n pierwszych liczb naturalnych (w przygotowaniu)
     * 1^{2}+2^{2}+3^{2}+4^{2}+\dots+n^{2}=\sum_{k=1}^{n}k^{2}=\frac{n(n+1)(2n+1)}{6}=s_{2}
     */
    int n = 100;
    
    logger.info("Suma kwartat�w liczn naturalnych od 1 do n = " + n + " frac{n(n+1)(2n+1)}{6} = "
        + (n * (n + 1) * (2 * n + 1) / 6));
    
    logger.info("END");
  }
  
}

Zapis wyników do pliku

    /*
     * @var http://stackoverflow.com/questions/2885173/how-to-create-a-file-and-write-to- a-file-in-java#2885224
     */
    
    try (PrintWriter writer = new PrintWriter("dodatnie.txt", "UTF-8")) {
      writer.println("W tablicy myIntArray[" + myIntArray.length + "] sa " + dodatnie + " dodatnie elementy.");
      writer.close();
      
    } catch (IOException e) {
    }
    
    try (Writer writer = new BufferedWriter(
        new OutputStreamWriter(new FileOutputStream("dodatnie2.txt"), StandardCharsets.UTF_8))) {
      writer.write("W tablicy myIntArray[" + myIntArray.length + "] sa  " + dodatnie + " dodatnie elementy");
    } catch (IOException ex) {
      // handle me
    }

Dodanie logowania log4j (w przygotowaniu)

uses log4j in code
static Logger logger = LoggerFactory.getLogger("SumN");	  

logger.info("start");
  1. https://alvinalexander.com/blog/post/java/sample-how-format-log4j-logging-logfile-output
  2. https://alvinalexander.com/blog/post/java/how-print-exception-stack-trace-using-log4j-commons
  3. https://logging.apache.org/log4j/1.2/manual.html

Suma kwadratów n pierwszych liczb naturalnych (w przygotowaniu)

\(1^{2}+2^{2}+3^{2}+4^{2}+\dots+n^{2}=\sum_{k=1}^{n}k^{2}=\frac{n(n+1)(2n+1)}{6}=s_{2}\)

https://pl.wikisource.org/wiki/Sumy

    /*
     * Suma kwadratów n pierwszych liczb naturalnych (w przygotowaniu)
     * 1^{2}+2^{2}+3^{2}+4^{2}+\dots+n^{2}=\sum_{k=1}^{n}k^{2}=\frac{n(n+1)(2n+1)}{6}=s_{2}
     */
    int n = 100;
    
    logger.info("Suma kwartat�w liczn naturalnych od 1 do n = " + n + " frac{n(n+1)(2n+1)}{6} = "
        + (n * (n + 1) * (2 * n + 1) / 6));
    
    logger.info("END");
  }
  

Hits: 628

Java – przykład z konstruktorami

Przykład na dedykowany konstruktor

Zadeklaruj klasę Sloik zawierającą pole Dzem dzem, dedykowany konstruktor inicjujący wszystkie zadeklarowane pola i metody:

  • otworz
  • zamknij
  • czyOtwarty

Następnie utwórz obiekt klasy Sloik i napełnij go wybranym rodzajem dżemu, operacje powtórz dla wszystkich rodzajów dżemów.

Uwaga: nakładanie dżemu do zamkniętego słoika lub pozostawienie słoika nie zamkniętego może prowadzić do zepsucia się produktu!

Oryginał zadnia

Zadeklaruj klasę Dzem zawierająca prywatne pola:

  • String smak,
  • double waga

Utwórz konstruktory przyjmujące jako parametry zmienne:

  • (String smak, double waga),
  • (double waga),
  • (String smak).

Dostarczone parametry konstruktorów powinny znacjonalizować pola klasy. W przypadku gdy konstruktor nie dostarcza niezbędnego parametru należny przyjąć, ze pole smak musi przyjąć wartość “No name”, natomiast waga – 100.0.

Przedstaw wykorzystanie wszystkich konstruktorów tworząc obiekty reprezentujące co najmniej trzy rodzaje dżemów.

Uwaga: należny założyć, ze tylko konstruktor z dwoma parametrami możne przypisać wartości polom klasy.

Zadanie trochę zmodyfikowane

Zadeklaruj klasę Sloik zawierająca pole Dzem dzem (lub konstruktor klasy pochodnej), dedykowany konstruktor inicjujący wszystkie zadeklarowane pola i metody:

  • otworz
  • zamknij
  • czyOtwarty
  • napełnijSloik

Wymagane pola:

  • klasa Dzem

Następnie utwórz obiekt klasy Sloik i napełnij go wybranym rodzajem Dzem.

Resources czyli od czego zacząć

Przykład konstruktora - definicja
class Programming {
  //constructor method
  Programming() {
    System.out.println("Constructor method called.");
  }
 
  public static void main(String[] args) {
    Programming object = new Programming(); // Creating an object
  }
}
Przeciążanie konstuktora - Overloading
class Language {
  String name;
 
  Language() {
    System.out.println("Constructor method called.");
  }
 
  Language(String t) {
    name = t;
  }
 
  public static void main(String[] args) {
    Language cpp  = new Language();
    Language java = new Language("Java");
 
    cpp.setName("C++");
 
    java.getName();
    cpp.getName();
  }
 
  void setName(String t) {
    name = t;
  }
 
  void getName() {
    System.out.println("Language name: " + name);
  }
}
Dziedziczenie konstuktora


class GrandParent {
  int a;
 
  GrandParent(int a) {
    this.a = a;
  }
}
 
class Parent extends GrandParent {
  int b;
 
  Parent(int a, int b) {
    super(a);
    this.b = b;
  }
 
  void show() {
    System.out.println("GrandParent's a = " + a);
    System.out.println("Parent's b      = " + b);
  }
}
 
class Child {
  public static void main(String[] args) {
    Parent object = new Parent(8, 9);
    object.show();
  }
}

Czyli w naszym zadaniu mamy kilka konstruktorów Dzem

	Dzem(String smak, double waga) {
		this.smak = smak;
		this.waga = waga;
	}

	Dzem(double waga) {
		this.smak = "Nieznany";
		this.waga = waga;
	}

	Dzem(String smak) {
		this.smak = smak;
		this.waga = 100.0;
	}

	Dzem() {
		smak = "no name";
		waga = 100.0;
	}

oraz kilka konstruktorów Sloik

	Sloik() {
		System.out.print("Konstuktor Słoik(): ");
		this.print();
	}

	Sloik(Dzem p_dzem) {
		System.out.print("Konstuktor Słoik(Dzem): ");
		// sprawdzemnie czy dzem jest otwarty
		this.otworz();
		// napełnienie dzemem
		this.napelnij(p_dzem);
		this.print();
		this.dzem.print();
	}

Inicjalizacja konstruktora Dzem następujące “jawnie”

przeciążenie (overloading) napelnij() Sloik klasa Dzem

Rozwiązanie zadania

Wynik działania programu:


run:
Smak dzemu: agrestowy, waga dzemu: 1111.11kg
Smak dzemu: porzeczka, waga dzemu: 100.0kg
Smak dzemu: Nieznany, waga dzemu: 1111.11kg
-> Konstuktor: Tworzę słoik dzemu porzeczka
Smak dzemu: porzeczka, waga dzemu: 100.0kg
Słoik dzemu: porzeczka jest zamkniety
Słoik dzemu: porzeczka jest zamkniety
Otwierma słoki dzemu: porzeczka
Słoki dzemu: porzeczka jest otwarty
Słoki dzemu: porzeczka jest otwarty
Napełniam słoik dzemem o smaku truskawkowy i wadze 10.0kg

Słoik dzemu: truskawkowy jest zamkniety
Słoik jest zamknięty nie można go napełnić

Kompilator online: http://tpcg.io/XWuGkR

Hits: 312

Przykład zadania egazminacyjnego z programowania PHP

Zadanie

  1. Stwórz dwuwymiarową tablicę numeryczną (z użyciem PHP). Napisz funkcję, za pomocą której wyświetlisz tablicę w HTML. Wyświetl tablicę.
  2. Napisz funkcję obliczającą i wyświetlającą sumę wszystkich elementów tej tablicy. Zastosuj ją.
  3. Napisz funkcję znajdującą wartości max i min w tablicy. Napisy funkcję zamieniającą po przekątnej z prawej do lewej wszystkie wartości na max, a z lewej do prawej – na min. Wyświetl wynik.
  4. Zamień losową komórkę tablicy na napis i wyznacz jego długość (za pomocą wyszukiwania napisu). Wyświetl tablicę za pomocą funkcji.
  5. Stwórz formularz odbierający wprowadzone dane podczas rejestracji (login, hasło, powtórzenie hasła, mail, imię, nazwisko, dane ankietowe, lista typu select)

Projekt PHP

  • Stwórz tablicę (z użyciem html). Napisz funkcję, za pomocą której wyświetlisz tablicę. Wyświetl tablicę.
  • Napisz funkcję obliczającą i wyświetlającą sumę wszystkich elementów tej tablicy. Zastosuj ją.
  • Napisz funkcję znajdującą wartości max i min w tablicy.
  • Napisz funkcję zamieniającą po przekątnej z prawej do lewej wszystkie wartości na max, a z lewej do prawej – na min. Wyświetl wynik.
  • Zamień losową komórkę tablicy na napis i wyznacz jego długość (za pomocą wyszukiwania napisu). Wyświetl tablicę za pomocą funkcji.
  1. Stwórz formularz odbierający wprowadzone dane podczas rejestracji
  2. login
  3. hasło
  4. powtórzenie hasła,
  5. mail,
  6. imię,
  7. nazwisko,
  8. dane ankietowe,
  9. lista typu select.

Source from GitHub

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Projekt PHP</title>
    </head>
    <body>
        <h1>Projekt PHP</h1>
        <ol>
            <li>Stwórz tablicę (z użyciem html). Napisz funkcję, za pomocą której wyświetlisz tablicę. Wy-świetl tablicę.</li>
            <li>Napisz funkcję obliczającą i wyświetlającą sumę wszystkich elementów tej tablicy. Zastosuj ją.</li>
            <li>Napisz funkcję znajdującą wartości max i min w tablicy. Napisy funkcję zamieniającą po przekątnej z prawej do lewej wszystkie wartości na max, a z lewej do prawej – na min. Wyświetl wynik.</li>
            <li>Zamień losową komórkę tablicy na napis i wyznacz jego długość (za pomocą wyszukiwania napisu). Wyświetl tablicę za pomocą funkcji.</li>
            <li>Stwórz formularz odbierający wprowadzone dane podczas rejestracji (login, hasło, powtórze-nie hasła, mail, imię, nazwisko, dane ankietowe, lista typu select).</li>
        </ol>
        <?php
        error_reporting(E_ALL);

        function print_pre($p_string) {
            print "<pre>" . print_r($p_string, true) . "</pre>";
        }

        function tablica_wyswietlanie($la_array, $p_nazwa) {
            print "<h3>" . $p_nazwa . "</h3>";
            print "<table>";
            foreach ($la_array as $key_x => $value_x) {
                echo '<tr>';
                foreach ($value_x as $key_y => $value_y) {
                    echo '<td>' . $la_array[$key_x][$key_y] . '</td>';
                }
                echo '</tr>';
            }
            print '</table>';
        }

        function tablica_min_max($la_array, $p_operacja) {
            $max = 0;
            $max_x = 0;
            $max_y = 0;

            $min = 5;
            $min_x = 0;
            $min_y = 0;

            foreach ($la_array as $key_x => $value_x) {
                foreach ($value_x as $key_y => $value_y) {

                    if ($la_array[$key_x][$key_y] >= $max) {
                        $max = $la_array[$key_x][$key_y];
                        $max_x = $key_x;
                        $max_y = $key_y;
                    }

                    if ($la_array[$key_x][$key_y] < $min) {
                        $min = $la_array[$key_x][$key_y];
                        $min_x = $key_x;
                        $min_y = $key_y;
                    }
                }
            }
            if ($p_operacja == 'max') {
                print "<p>max [" . $max_x . ',' . $max_y . "] = " . $max . "</p>";
                return $max;
            } else {
                print "<p>min [" . $min_x . ',' . $min_y . "] = " . $min . "</p>";
                return $min;
            }
        }

        function tablica_suma($la_array) {
            $sum = 0;

            foreach ($la_array as $key_x => $value_x) {
                foreach ($value_x as $key_y => $value_y) {

                    $sum = $sum + $la_array[$key_x][$key_y];
                }
            }
            print "<p>Suma elementów tablicy = " . $sum . "</p>";
        }

        function tablica_przekatna_prawa($la_array, $p_min, $p_max) {
            foreach ($la_array as $key_x => $value_x) {
                foreach ($value_x as $key_y => $value_y) {
                    if ($key_x <= $key_y)
                        $la_array [$key_x][$key_y] = $p_min;
                    if ($key_x > $key_y)
                        $la_array [$key_x][$key_y] = $p_max;
                   
                }
            }
            return $la_array;
        }

        $model = Array(
            array(1, 5, 6),
            array(2, 3, 1),
            array(4, 4, 8),
            array(8, 9, 3));

        print "Ilość pól w tablicy = " . count($model) . "<br>";


        print "<h2>Zadanie 1</h2>";
        tablica_wyswietlanie($model, 'Tablica model');

        print "<h2>Zadanie 2</h2>";
        tablica_suma($model);

        print "<h2>Zadanie 3a</h2>";
        $t_min = tablica_min_max($model, 'min');
        $t_max = tablica_min_max($model, 'max');

        print "<h2>Zadanie 3b</h2>";
        $t_prawa = tablica_przekatna_prawa($model, $t_min, $t_max);
        tablica_wyswietlanie($t_prawa, 'Wypełnienie prawe');
       
        print "<h2>Zadanie 4</h2>";
       
        $l_x = rand(0, 2);
        $l_y = rand(0, 3);
       
        $model[$l_x][$l_y] = 'Jakiś napis...';
       
        tablica_wyswietlanie($model, 'Losowy napis');

        print "<p>Długość napisu model [$l_x][$l_y] = " . strlen($model[$l_x][$l_y])."</p>";
       
        ?>
    </body>
</html>

Hits: 386

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑