kleszcz: Poprosiłbym o pomoc

.
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