matematykaszkolna.pl
Informatyka Zadanie 3 kleszcz: https://ufile.io/1q770 > Potrzebuje pomocy!. Jestem bardzo słabym "programistą" i prosiłbym o pomoc potrzebuje oddać profesorowi kilka zadań, w środku znajduje się bezpieczny plik z kodem. Czy ktoś chciałby mi pomóc, po prostu swoją przyszłość bardziej wiązałbym z front−endem(nieważne). Poproszę o pomoc w szczególności zadanie 3. Zadanie 2 jakoś zrobiłem...
28 kwi 08:53
kleszcz: Poprosiłbym o pomoc emotka. Zadanie 1 Uruchomić programy z podręcznika Lafore'a studiując dokładnie ich treść. Proszę zwrócić szczególną uwagę na: * narastającą złożoność struktury programów * sposób odwoływania się do metod w klasie * występowanie i postać konstruktora klasy ArrayApp (Lafore str. 66) LowArrayApp (Lafore str. 69) HighArrayApp (Lafore str. 74) OrderedApp (Lafore str. 84) ClassDataApp (Lafore str. 91) Zadanie 2 1. uruchomić program HighArrayApp 2. przenieść jego kod do projektu o nowej, wymyślonej nazwie 3. zmienić nazwę klasy HighArray 4. zmienić nazwę konstruktora HihgArray 5. zmienić nazwę klasy HighArrayApp 6. zmienić nazwę tworzonej tablicy 'arr' 7. zmienić ilość i wartości wstawianych elementów 8. dodać metodę obliczającą średnią arytmetyczną z elementów tablicy Pan Wiktor Marczak zwrócił uwagę na błąd w metodzie suma (metoda została dopisana do oryginalnego programu): „metoda suma() nie zeruje na początku zmiennej sumael, więc jej ponowne uruchomienie w programie pokaże nieprawidłową wartość” Proszę sprawdzić czy rzeczywiście ten błąd występuje. Zadanie 3 Generujemy liczby całkowite z zadanego przedziału, te z nich które są parzyste umieszczamy w wektorze do momentu gdy ich suma nie przekroczy zadanej liczby. Dla podanych niżej wartości, int ilw = 500; int max=100; rob=(int)(10*Math.random()); jeżeli zmniejszymy długość wektora z 500 do 20 program nie działa poprawnie. Dlaczego tak jest i jak to poprawić? Zadanie 4 Proszę wejść na stronę: https://www.cs.usfca.edu/~galles/visualization/Algorithms.html i uruchomić symulację podstawowych dynamicznych struktur danych: o Stack: Array Implementation o Stack: Linked List Implementation o Queues: Array Implementation o Queues: Linked List Implementation o Lists: Array Implementation (available in java version) o Lists: Linked List Implementation (available in java version) /* HighArrayApp Klasa HighArray jest teraz opakowana dookoła tablicy. W procedurze main(), tworzymy tablicę tej klasy i dokonujemy prawie tych samych operacji jak w programie lowArray.java: wstawiamy 10 elementów, szukamy elementu (którego tam nie ma) i wyświetlamy tablicę. Ponieważ to jest takie łatwe, usuwamy trzy elementy (0, 55, and 99) zamiast jednego i ostatecznie znów wyświetlamy tablicę: 77 99 44 55 22 88 11 0 66 33 Can't find 35 77 44 22 88 11 66 33 Proszę zauważyć jak krótka i prosta jest metoda main(). Szczegóły, które musiały być zawarte w main() w lowArray.java są teraz zapisane w metodach klasy HighArray. W HighArray class, metoda find() przegląda tablice szukając elementu którego indeks przekazano jej jako argument. Zwraca true lub false. Metoda insert() umieszcza nowy element w dostępnym miejscu tablicy. Pole nElems przechowuje liczbę aktualnie wykorzystanych elementów tablicy. Metoda delete() szuka elementu, którego indeks dostała jako argument i gdy go znajdzie przesuwa wszystkie elementy o wyższych indeksach w dół – nadpisując go − oraz zmniejsza wartość w polu nElems. Metoda display() wyświetla tablicę. W lowArray.java, kod w main() dla znajdowania elementu ma osiem linii, w highArray.java, tylko jedną. Użytkownik w HighArrayApp.class, nie musi myśleć o indeksach i innych szczególach tablicy. Właściwie nie musi w ogóle wiedzieć w jakiej strukturze danych informacje są przechowywane przez HighArray.class! Ta struktura jest ukryta za interfejsem. Ten mechanizm określamy jako abstrakcję. Opis: Lafore 73 */ package higharrayapp; import java.io.*; // for I/O class HighArray { private double[] a; // ref to array a private int nElems; // number of data items private double s=0; private double sumael=0; public HighArray(int max) // konstruktor: metoda wywoływana zawsze w momencie //tworzenia obiektu w pamięci; nigdy nie zwaraca wyniku, musi mieć nazwę //taką samą jak klasa. Może mieć parametry; tu parametrem jest zmienna //całkowita 'max' { a = new double[max]; // tworzenie wektora 'a' o długości max' nElems = 0; // na razie bez elementów //to jest tylko metoda − będzie użyta − wywołana w klasie HighArrayApp } public boolean find(long searchKey) { // find specified value int j; for(j=0; j<nElems; j++) // for each element, if(a[j] == searchKey)// found item? break; // exit loop before end if(j == nElems) // gone to end? return false; // yes, can’t find it else return true; // no, found it } // end find() public void insert(double value) // umieszczanie el w tablicy − na końcu { a[nElems] = value; // insert it nElems++; // increment size } public boolean delete(double value) //metoda wywoływana jest z parametrem 'value' − wartość do usunięcia //a zwraca wartość logiczną − usunięto lub nie znaleziono { int j; for(j=0; j<nElems; j++) // look for it if( value == a[j] ) break; if(j==nElems) // can't find it return false; else // found it { for(int k=j; k<nElems; k++) // move higher ones down a[k] = a[k+1]; nElems−−; // decrement size return true; } } // end delete() public void display() // displays array contents { for(int j=0; j<nElems; j++) // for each element, System.out.print(a[j] + " "); // display it System.out.println(""); System.out.print("sumaelmmmmmm="+sumael); // display it } public double suma() //oblicza i wyświetla sumę el tablicy { for(int j=0; j<nElems; j++){ // for each element, sumael=sumael+a[j]; } System.out.print("sumael="+sumael); // display it return sumael; //zmienna zadeklarowana na poziomie klasy } } // end class HighArray class HighArrayApp { public static void main(String[] args) { int maxSize = 100; // array size //tworzymy obiekt klasy HighArray: HighArray arr; // reference to array arr = new HighArray(maxSize); // create the array // insert 10 items arr.insert(77); //wywołujemy metodę insert działającą na tablicty 'arr' arr.insert(99); arr.insert(44); arr.insert(55); arr.insert(22); arr.insert(88); arr.insert(11); arr.insert(00); arr.insert(66); arr.insert(33); arr.display(); // display items int searchKey = 35; // search for item if( arr.find(searchKey) ) System.out.println("Found " + searchKey); else System.out.println("Can't find " + searchKey); searchKey = 35; // search for item arr.delete(00); // delete 3 items //dodano searchKey=56; //szukamy nieistniejacego aby skasować arr.delete(56); if (!arr.delete(56)) System.out.println("nie ma "); //arr.delete(56)==false arr.delete(99); arr.display(); // display items again System.out.println(); arr.suma()/wywołujemy nową metodę 'suma' arr.display(); // jeszcze raz wyświetlamy, tym razem PO wywołaniu metody 'suma' //teraz metoda 'display' wyświetla nam sumę obliczoną w polu 'sumael' } // end main() } // end class HighArrayApp ============ /* A teraz to co zrobiłem: class HighArrayz { private double[] a; // ref to array a private int nElems; // number of data items private double s=1; private double sumael=1; public HighArrayz(int min) // konstruktor: metoda wywoływana zawsze w momencie //tworzenia obiektu w pamięci; nigdy nie zwaraca wyniku, musi mieć nazwę //taką samą jak klasa. Może mieć parametry; tu parametrem jest zmienna //całkowita 'max' { a = new double[min]; // tworzenie wektora 'a' o długości min' nElems = 0; // na razie bez elementów //to jest tylko metoda − będzie użyta − wywołana w klasie HighArrayApp } public boolean find(long searchKey) { // find specified value int j; for(j=0; j<nElems; j++) // for each element, if(a[j] == searchKey)// found item? break; // exit loop before end if(j == nElems) // gone to end? return false; // yes, can’t find it else return true; // no, found it } // end find() public void insert(double value) // umieszczanie el w tablicy − na końcu { a[nElems] = value; // insert it nElems++; // increment size } public boolean delete(double value) //metoda wywoływana jest z parametrem 'value' − wartość do usunięcia //a zwraca wartość logiczną − usunięto lub nie znaleziono { int j; for(j=0; j<nElems; j++) // look for it if( value == a[j] ) break; if(j==nElems) // can't find it return false; else // found it { for(int k=j; k<nElems; k++) // move higher ones down a[k] = a[k+1]; nElems−−; // decrement size return true; } } // end delete() public void display() // displays array contents { for(int j=0; j<nElems; j++) // for each element, System.out.print(a[j] + " "); // display it System.out.println(""); System.out.print("sumaelmmmmmm="+sumael); // display it } public double suma() //oblicza i wyświetla sumę el tablicy { for(int j=0; j<nElems; j++){ // for each element, sumael=sumael+a[j]; } System.out.print("sumael="+sumael); // display it return sumael; //zmienna zadeklarowana na poziomie klasy } } // end class HighArray class Array1 { public static void main(String[] args) { int maxSize = 200; // array size //tworzymy obiekt klasy HighArray: Arrayz arr; // reference to array arr = new Array1(maxSize); // konstruktor musi mieć taką samą nazwę jak nazwa klasy, aby programował poprawnie się uruchomił. // insert 10 items arr.insert(100); //wywołujemy metodę insert działającą na tablicty 'arr' arr.insert(101); arr.insert(102); arr.insert(103); arr.insert(103); arr.insert(104); arr.insert(105); arr.insert(106); arr.insert(107); arr.insert(108); arr.display(); // display items int searchKey = 35; // search for item if( arr.find(searchKey) ) System.out.println("Found " + searchKey); else System.out.println("Can't find " + searchKey); searchKey = 35; // search for item arr.delete(00); // delete 3 items //dodano searchKey=56; //szukamy nieistniejacego aby skasować arr.delete(56); if (!arr.delete(56)) System.out.println("nie ma "); //arr.delete(56)==false arr.delete(99); arr.display(); // display items again System.out.println(); arr.suma()/wywołujemy nową metodę 'suma' arr.display(); // jeszcze raz wyświetlamy, tym razem PO wywołaniu metody 'suma' //teraz metoda 'display' wyświetla nam sumę obliczoną w polu 'sumael' public class SredniaArytmetyczna { private static double liczby[] = {1,2,3,4,5,6,7,8,9,10}; public static void { srednia(); } private static void srednia(); { int suma = 0; int średnia = 0; for (int liczba : liczby) { suma = suma + liczba; } średnia = suma / liczby.length; System.out.println("Średnia liczb w tablicy to: " + średnia); } } // end main() } // end class HighArrayApp
28 kwi 09:23