class Array
{
private int size;
private long[] a; // referencja do tablicy
private int nElems; // liczba elementów tablicy
//-----------------------------------------------------------
public String getString()
{
String s;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try{
s = br.readLine();
return s ;
}
catch(IOException e) {
System.out.println("Blad podczas odczytu danych");
}
return "0" ;
}
//--------------------------------------------------------
public long getLong()
{
long lnum;
String s =getString();
try{
lnum =Long.parseLong(s);
return lnum;
}
catch(NumberFormatException e){
System.out.println("Blad podczas konwersji liczby"); }
return 0;
}
public int getInt()
{
int lnum;
String s =getString();
try{
lnum =Integer.parseInt(s);
return lnum;
}
catch(NumberFormatException e){
System.out.println("Blad podczas konwersji liczby"); }
return 0;
}
public Array(int max) // konstruktor
{
size = max;
a = new long[max]; // tworzymy tablicę
nElems = 0; // na razie brak elementów
}
//-----------------------------------------------------------
public boolean find(long searchKey)
{ // szukanie określonej wartości
int j;
for(j=0; j<nElems; j++) // dla każdego elementu...
if(a[j] == searchKey) // czy znaleziono?
break; // tak, wyjście z pętli
if(j == nElems) // doszliśmy do koñca?
return false; // tak, elementu nie znaleziono
else
return true; // nie, element znaleziony
} // end find()
//-----------------------------------------------------------
public void insert(long value) // wstawienie elementu do tablicy
{
if(nElems < size){
a[nElems] = value; // wstawiamy
nElems++; } // zwiększamy licznik elementów
else System.out.println("Brak miejsca");
}
//-----------------------------------------------------------
public boolean delete(long value) // usunięcie elementu z tablicy
{
int j;
for(j=0; j<nElems; j++) // szukamy elementu
if( value == a[j] )
break;
if(j==nElems) // nie znaleźliśmy
return false;
else // znaleźliśmy
{
nElems--;
for(int k=j; k<nElems; k++) // przesuwamy pozostałe elementy
a[k] = a[k+1];
// zmniejszamy licznik elementów
return true;
}
} // koniec delete()
//-----------------------------------------------------------
public void display() // wypisuje zawartość tablicy
{
for(int j=0; j<nElems; j++) // dla każdego elementu...
System.out.print(a[j] + " "); // ...wypisujemy jego wartość
public boolean isOrder()
{
boolean warunek = true;
for (int i=1;i<nElems;i++)
{
if (a[i-1] >a[i]){ //warunek sprawdzajacy czy liczba poprzednia jest wieksza od aktualnej
warunek= false; // warunek true stwierdza ze tablica jest nieuprzodkowana
}
}
return warunek;
}
//-----------------------------------------------------------
public void delDups(){
for (int i=0;i<nElems;i++){ // przeszukanie tablicy od 0
for (int j=i+1;j<nElems;j++) //przeszukanie tablicy od 1
if (a[i]==a[j]) // porownywanie indeksow
{ nElems--; // zmniejszanie tablicy
for(int k=j; k<nElems; k++) //szukanie takich samych elementow
a[k] = a[k+1]; //przypisywanie duplikatu jako jedno
j--; //zmniejszanie tablicy
}
}
}
//-----------------------------------------------------------
public long getMax () // największa liczba
{
long element = a[0];
for(int i = 1;i<nElems;i++){
if (a[i-1] < a[i] )
element = a[i];
}
return element;
}
//-----------------------------------------------------------
public long getMin () //najmniejszy liczba
{
long element = a[0];
for(int i = 1;i<nElems;i++){
if (a[i-1] > a[i])
element = a[i];
}
return element;
}
//-----------------------------------------------------------
public void delMin () //usuwanie najmnijszego elementu
{
delete(getMin());
}
public void delMax () //usuwanie najwiekszego elementu
{
delete(getMax());
}
//-----------------------------------------------------------
public void sort() //sortowanie tablicy
{
long[] b;
b = new long[100];
int tmp = nElems;
for (int i=0;i<tmp;i++)
{
b[i] = getMin();
delMin();
}
for (int j = 0;j<tmp;j++)
{
a[j]=b[j];
}
nElems=tmp;
}
//-----------------------------------------------------------
public void Utworz_tab() // tworzenie tablicy
{
System.out.println("Podaj liczbę elementow " );
int c = getInt(); // zczytanie c z funkcji getInt
long el; // definicja zmiennej pomocniczej
for(int i=0;i<c;i++) // definicja i
{
System.out.print("Podaj element: ") ; // podawanie elementów doputy nie podamy odp ilości zmiennych
el = getLong(); // zczytywanie z getLonga
insert(el); // wpisywanie elementu do tablicy
}
}
//-----------------------------------------------------------
public void losuje()
{
System.out.print("Podaj liczbę elementow: " );
int c = getInt(); // zczytanie c z funkcji getInt
int random; // definicja zmiennej pomocniczej
for(int i=0;i<c;i++) // definicja i
{
random = new Random().nextInt(100);
insert(random);
}
}
//-----------------------------------------------------------
} // koniec klasy HighArray
//----------------------------------------------------------------------------------------------------------------------------
class ArrayApp
{
public static String getString()
{
String s;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try{
s = br.readLine();
return s ;
}
catch(IOException e) {
System.out.println("Blad podczas odczytu danych");
}
return "0" ;
}
//--------------------------------------------------------
public static long getLong()
{
long lnum;
String s =getString();
try{
lnum =Long.parseLong(s);
return lnum;
}
catch(NumberFormatException e){
System.out.println("Blad podczas konwersji liczby"); }
return 0;
}
//--------------------------------------------------------
public static void menu()
{ System.out.println("--------------------" );
System.out.println("Operacje na tablicy " );
System.out.println("--------------------" );
System.out.println("1. Dodaj element " );
System.out.println("2. Wyszukaj element " );
System.out.println("3. Usun element " );
System.out.println("4. Wypisz tablice " );
System.out.println("5. Wypisz najwiekszy element tablicy " );
System.out.println("6. Wypisz najmniejszy element tablicy " );
System.out.println("7. Sprawdza czy tablica jest upozadkowana" );
System.out.println("8. Usuwanie duplikatow " );
System.out.println("9. Usuwanie liczby minimalnej " );
System.out.println("10. Usuwanie wartości maksymalnej " );
System.out.println("11. Sortowanie tabeli" );
System.out.println("12. Tworzenie tabeli o danej ilosci elementow" );
System.out.println("13. Losowanie tabeli o danej ilosci elementow" );
System.out.println("0. Koniec programu " );
System.out.println("--------------------" );
System.out.print("Wybierz operacje: " );
}
//--------------------------------------------------------
public static void main(String[] args)
{
int maxSize = 100; // rozmiar tablicy
Array arr; // referencja do tablicy
arr = new Array(maxSize); // tworzymy tablicę
int op;
long el, searchKey;
do{
menu();
op = (int) getLong();
switch (op)
{
case 1: {//Dodaj element
System.out.print("Podaj element: ") ;
el= getLong();
arr.insert(el);
arr.display(); // wypisujemy elementy
break;
}
case 2:{//Wyszukaj element
System.out.print("Podaj szukany element: " );
searchKey =getLong(); // szukamy zadanego elementu
if( arr.find(searchKey) )
System.out.println("Znaleziono " + searchKey);
else
System.out.println("Nie znaleziono " + searchKey);
break;
}
case 3:{//Usun element
System.out.print("Podaj element do usuniecia: " );
el=getLong();
arr.delete(el);
arr.display();
break;
}
case 4: {//Wypisz tablice
arr.display();
break;
}
case 5: {// naiwiększy
System.out.println("Najwiekszy element to: "+ arr.getMax());
break;
}
case 6: {// najmniejszy element
System.out.println("Najmniejszy element to: "+ arr.getMin());
break;
}
case 7: {// upożądkowana tablica?
boolean tablica = arr.isOrder();
if (tablica == true){
System.out.println ("Tablica jest uporzadkowana");
} else{
System.out.println ("Tablica nie jest uporzadkowana");
}
break;
}
case 8: {
arr.delDups();
arr.display();
break;
}
case 9: {
arr.delMin();
arr.display();
break;
}
case 10: {
arr.delMax();
arr.display();
break;
}
case 11: {
arr.sort();
arr.display();
break;
}
case 12: {
arr.Utworz_tab();
arr.display();
break;
}
case 13: {
arr.losuje();
arr.display();
break;
}
case 0:{
System.out.println("Bye" );
break;
}
default:
System.out.println("Nie ma takiej opcji! " );
}
}while (op!=0);
}
}