Artur 120 wyśw. 09-07-2025 18:51

Praca domowa 3 zad 20

20. Napisz metodę o nazwie stworzTablice, która zwraca tablicę liczb typu double. Metoda przyjmuje
trzy argumenty - pierwszy argument jest typu int - odpowiada on za rozmiar tworzonej tablicy, drugi
argument jest typu double - wielokrotnościami tej liczby wypełniona ma zostać tablica. Trzeci
argument jest typu int - mówi on o tym ile pierwszych elementów tablicy ma zostać wypełnionych
kolejnymi wielokrotnościami liczby podanej jako drugi argument w kolejności rosnącej - po ostatnim
takim elemencie tablica ma zostać do końca wypełniona wielokrotnościami, ale podanymi już w
kolejności malejącej (patrz przykładowy wynik działania programu). Jeśli trzeci argument będzie
większy niż pierwszy, to każdy element tablicy ma być równy drugiemu argumentowi. Proszę
następnie wypisać tak stworzoną tablicę na ekran działając już w metodzie main() - można w tym celu
utworzyć w niej nową tablicę i przypisać do niej wynik działania metody stworzTablice.
Przykładowy wynik działania programu dla metody wywołanej z następującymi argumentami
stworzTablice(17, 2.5, 6):
Stworzona tablica:
2.5 5.0 7.5 10.0 12.5 15.0 12.5 10.0 7.5 5.0 2.5 0.0 -2.5 -5.0 -7.5 -10.0 -12.5


// SPOSOB 1 (NIE DZIALA):

class Main 
{
    static double stworzTablice(int a, double b, int c) //a- rozmiar tablicy; b- wielokrotnosci
    // tej liczby; c - mówi on o tym ile pierwszych elementów tablicy ma zostać wypełnionych kolejnymi wielokrotnościami liczby podanej jako drugi argument w kolejności rosnącej - po ostatnim takim elemencie tablica ma zostać do końca wypełniona wielokrotnościami, ale podanymi już w kolejności malejącej
    {
        double tab[]=new double[a];
        a = tab.length;
        
        tab[0] = b;
        // return tab[0];
        // Wypelnienie tablicy
            if(a >= c)
            {
        for(int i=1; i < a; i++)
        {
            if(i < c)
            {
                tab[i] = tab[i-1] + b;
            }
            else if(i >= c && i < a)
            {
                tab[i] = tab[i-1] - b;
            }
                return tab[i];
        }
            }
            else
            {
                for (int i = 0; i < a ; i++) 
                {
                    tab[i] = b;
                }
                return tab;
            }
    }
    
    public static void main(String[] args) 
    {
        int x = 17;
        double y = 2.5;
        int z = 6;
        double tab[] = stworzTablice(17, 2.5, 6);
        System.out.print("Stworzona tablica: ");
        for(int i=0; i < tab.length; i++)
        {
            System.out.print(tab[i]+" ");            
        }
    }
}

// //=======================================================================================

// // SPOSOB 2:

// public class MyClass 
// {
//     public static void main(String args[]) 
//     {
//         double tt[] = stworzTablice(17, 2.5, 6);
//         System.out.println("Stworzona tablica: ");
//         for (int i = 0; i < tt.length ; i++) 
//         {
//             System.out.print(tt[i] + " ");
//         }
//     }
//     static double[] stworzTablice(int rozmiar, double liczba, int wzrost) 
//     {
//         double tab[] = new double[rozmiar];
//         if (rozmiar >= wzrost) 
//         {
//             // wypełnianie w kolejności rosnącej
//             for (int i = 0; i < wzrost ; i++) 
//             {
//                 tab[i] = (i+1)*liczba;
//             }
//             //wypełnianie w kolejności malejącej
//             for (int i = wzrost ; i < rozmiar ; i++) 
//             {
//                 tab[i] = (wzrost - (i - wzrost + 1))*liczba;
//             }
//             return tab;
//         }
//         else 
//         {
//             for (int i = 0; i < rozmiar ; i++) 
//             {
//                 tab[i] = liczba;
//             }
//             return tab;
//         }
//     }
// }

Do sposobu 1: Jak wywołać tę funkcję złożoną z tablicy? Bo coś mi tutaj nie działa

Do sposobu 2 (z odpowiedzi): Skąd program wie czym jest tt.length przy wywołaniu skoro nigdzie tego nie zdefiniowano?


Programowanie Dodaj post do ulubionych Poproś o pomoc
s.gugula 11-07-2025 21:08

1: Tam coś pokręciłęś - jeśli funkcja ma zwracać tablicę to w definicji funkcji nie może tobyć double tylko double[] (np tak jak w odpowiedziach). I po return nie może pojawiać się np. tab[i], bo to by oznaczało zwracanie tylko jednego elementu tej tablicy, czyli tylko jednej liczby. Musi tam byc zwracanie całej tablicy, więc np. return tab.

2: W tej linijce jest przecież tworzona tablica tt:

double tt[] = stworzTablice(17, 2.5, 6);

Więc można potem napisać tt.length i dostaniemy jej rozmiar.


Zadzwoń teraz Dotknij, aby się ze mną skontaktować.