Zadania niepewne


jedna z metod zadania 2giego :(
jak usunąć element z tablicy i wyrzucić wyjatek jak nic nie znajdzie?

Kod:

public void usun(int n) throws Exception {
   
        for(int i=0; i<zbior.length; i++){
            if(zbior[i]==n){
            zbior[i]=0;
            }
        }
        throw new Exception("Nie ma takiego elementu.");
    }

import java.util.Random;

public class Zbior {
    private static int M_ROZ = 2000;
    protected int[] zbior = new int[M_ROZ];
    protected int roz;

    public void dodaj(int n) throws Exception {
        roz++;
        if (roz > M_ROZ) {
            throw new Exception("Przekroczono rozmiar tablicy");
        } else {
            zbior[roz] = n;
        }
    }
   
    public void usun(int n) throws Exception {
        boolean znaleziono = false;
        for (int i = 0; i < roz; i++) {
            if (zbior[i] == n) {
                znaleziono = true;
                roz--;
                for (int j = i; j < roz; j++) {
                    zbior[j] = zbior[j + 1];
                }
            }
        }
        if (!znaleziono) throw new Exception("Nie znaleziono liczby " + n);
    }

    public int losuj() {
        Random r = new Random();
        int los = r.nextInt();
        try { usun(los); } catch(Exception e) {} ;
        return los;
    }

    public int pobierzSume() throws Exception {
        int suma = 0, poprzednia = 0; // poprzednia suma
        for (int i = 0; i < roz; i++) {
            suma += zbior[i];
            if (poprzednia > 0 && suma < poprzednia && zbior[i] > 0) {
                throw new Exception("Przepełnienie w górę");
            } else if (poprzednia < 0 && suma > poprzednia && zbior[i] < 0) {
                throw new Exception("Przepełnienie w dół");
            }
            poprzednia = suma;
        }
        return suma;
    }

    public void iloraz_elem(int n) throws Exception {
        if (n == 0) throw new Exception("Dzielenie przez zero jest niedozwolone");
        for (int i = 0; i < roz; i++) {
            zbior[i] = zbior[i] / n;
        }
    }

    public boolean sprawdz(int n) {
        for (int i = 0; i < roz; i++) {
            if (zbior[i] == n) return true;
        }
        return false;
    }

    public int pobierz_rozmiar() {
        return roz;
    }
}

Kod:

public interface StackExercise {
    public String pop();
    public void push(String item);
    public String top();
    public boolean isEmpty();
}

Kod:


public class Stack implements StackExercise {
    private String stack[] = new String[100];
    private int next_index=0;
   
   
    public String pop() {
        return stack[--next_index];
    }
   
    public void push(String item) {
        stack[next_index++]=item;
    }
   
    public String top(){
        return stack[next_index-1];
    }
   
    public boolean isEmpty(){
        if(next_index==0)
            return true;
        else
            return false;
    }
   
    public void checkInvariant() throws Exception{
        if(!(next_index>=0 && next_index<stack.length)){
            throw new Exception("next_index spoza zakresu");
        }
    }
}

Kod:

import junit.framework.TestCase;


public class StackTest extends TestCase {
   
    public void testEmpty() throws Exception{
        Stack stack=new Stack();
       
        stack.checkInvariant();
        stack.push("sample");
        stack.checkInvariant();
       
        //zdejmuje ostatni element ze stosu
        assertEquals("sample", stack.pop());
        stack.checkInvariant();   
    }

}

………………………………………………………………………………….

public void usun(int n) throws Exception {
boolean znaleziono = false;
for (int i = 0; i < roz; i++) {
if (zbior[i] == n) {
znaleziono = true;
roz--;
for (int j = i; j < roz; j++) {
zbior[j] = zbior[j + 1];
}
}
}
if (!znaleziono) throw new Exception("Nie znaleziono liczby " + n);
.

}

…………………………………………………………………………………………..

  public void usun(int n) throws Exception {
        boolean znaleziono = false;
        for (int i = 0; i < roz; i++) {
            if (zbior[i] == n) {
                znaleziono = true;
                roz--;
                for (int j = i; j < roz; j++) {
                    zbior[j] = zbior[j + 1];
                }
            }
        }
        if (!znaleziono) throw new Exception("Nie znaleziono liczby " + n);
    }

Na początku wiadomo, że nie znaleźliśmy jeszcze liczby do usunięcia. Jeżeli znaleźliśmy liczbę to usuwamy ją poprzez nadpisanie kolejną, czyli:
Usuwamy 2 ze zbioru: 4, 3, 5, 2, 1, 4, 2, 5, 5, 6
Znajdujemy pierwszą 2 więc wszystkie elementy za nią przesuwamy do przodu:
4, 3, 5, 1, 4, 2, 5, 5, 6
Znajdujemy drugą 2 i robimy to samo.
4, 3, 5, 1, 4, 5, 5, 6
Za każdym razem zmniejszamy rozmiar.

………………………………………………………………………



Wyszukiwarka

Podobne podstrony:
Zadania - niepewności, WAT, LOTNICTWO I KOSMONAUTYKA, WAT - 1 rok lotnictwo, MEtrologia
Zadanie 1 lab3 niepewne
Zadania z treścia
Prezentacja 2 analiza akcji zadania dla studentow
Przedmiot i zadania dydaktyki 4
zadanie 1 v 002
NIEPEWNOŚĆ POMIARU
Przedmiot dzialy i zadania kryminologii oraz metody badan kr
KOLOKWIUM 2 zadanie wg Adamczewskiego na porownawczą 97
CELE I ZADANIA EDUKACJI MEDIALNEJ(1)
ochrona atmosfery zadania
zadania
Przedmiot i zadania dydaktyki 2
Wymogi, cechy i zadania sprawozdawczośći finansowej
ZADANIA PiP Prezentacja Microsoft PowerPoint

więcej podobnych podstron