Spojový seznam - problém – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Spojový seznam - problém – Java – Fórum – Programujte.comSpojový seznam - problém – Java – Fórum – Programujte.com

 

Screpheep
~ Anonymní uživatel
11 příspěvků
11. 12. 2012   #1
-
0
-

Zdravim, řešim domácí úkol na programování, je to spojový seznam, jeho prvky jsou matice. Mám třídu úložiště a třídu matice, úložiště musí umět tohle: přidat prvek, vrátit velikost seznamu, vypsat matice vzestupně podle součtu a vrátit pole  matic seřazené podle součtu. Všechno tohle už mám a při mojem testování to funguje bez problémů, odevzdáváme to ale přes systém odevsys, tzn to kontroluje počítač. A vypisuje mi to chyby v metodách přidej prvek a vypiš matice. Nevíte někdo proč to hází chyby?  

package du4;

public class Uloziste {

    private Prvek prvni;
    private Prvek posledni;
    private int velikost;

    public Uloziste() {
        velikost = 0;
    }

    public int pocet() {
        return velikost;
    }

    public void vypis() {

        Prvek akt = prvni;
        boolean serazeno = true;
        Matice pomocna;
        Matice[] s = new Matice[velikost];

        for (int i = 0; i < velikost; i++) {
            s[i] = (akt.matice);
            akt = akt.next;
        }
        while (serazeno != false) {
            serazeno = false;
            for (int i = 0; i < s.length - 1; i++) {
                if (s[i].soucet() > s[i + 1].soucet()) {
                    pomocna = s[i];
                    s[i] = s[i + 1];
                    s[i + 1] = pomocna;
                    serazeno = true;
                }

            }
        }
        for (int i = 0; i < s.length; i++) {
            System.out.println(s[i].toString());
        }
    }

    public Matice[] prvky() {
        Prvek akt = prvni;
        boolean serazeno = true;
        Matice pomocna;
        Matice[] s = new Matice[velikost];

        for (int i = 0; i < velikost; i++) {
            s[i] = (akt.matice);
            akt = akt.next;
        }
        while (serazeno != false) {
            serazeno = false;
            for (int i = 0; i < s.length - 1; i++) {
                if (s[i].soucet() > s[i + 1].soucet()) {
                    pomocna = s[i];
                    s[i] = s[i + 1];
                    s[i + 1] = pomocna;
                    serazeno = true;
                }
            }
        }
        return s;
    }

    public void pridej(Matice prvek) {
        Prvek p = new Prvek(prvek);
        if (velikost == 0) {
            this.prvni = p;
            this.posledni = p;
        } else {
            this.posledni.next = p;
            this.posledni = p;
        }
        velikost++;
    }

    private class Prvek {

        private Matice matice;
        private Prvek next;

        private Prvek(Matice matice) {

            this.matice = matice;

        }
    }
}
Nahlásit jako SPAM
IP: 77.240.96.–
KIIV
~ Moderátor
+43
God of flame
12. 12. 2012   #2
-
0
-

Jaky chyby?

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Screpheep
~ Anonymní uživatel
11 příspěvků
12. 12. 2012   #3
-
0
-

#2 KIIV
To kdybych věděl tak na to příjdu sám, ale mě to vyhodí jenom tohle: 

Výstup JUnit testu:
V průběhu JUnit testu nastaly 3 chyby
=> -3 body z celkového hodnocení úlohy:

1) testPridej(UlozisteTest)
2) testPrvky(UlozisteTest)
3) testPrvky2(UlozisteTest)

Nic víc, ptal sem se i cvičícího, ten řikal že to prostě nevypíše proč, jenom že to selhalo. Prej to testuje i nějáký složitější věci, že to něják samo vkládá objekty do seznamu a testuje nějáký reference či co, ale že na tu chybu musim prostě přijít sám.

Nahlásit jako SPAM
IP: 147.32.219.–
Dano
~ Anonymní uživatel
101 příspěvků
12. 12. 2012   #4
-
0
-

Mohol by si pridat aj triedu Matice a ak to spustas cez main, tak aj ten ;)

Nahlásit jako SPAM
IP: 195.28.127.–
Screpheep
~ Anonymní uživatel
11 příspěvků
12. 12. 2012   #5
-
0
-

#4 Dano
 

package du4;

public class Matice {

    private double[][] matice;

    public void naplnSekvenci(double od) {
        for (int i = 0; i < matice.length; i++) {
            for (int j = 0; j < matice[i].length; j++) {
                matice[i][j] = od++;
            }
        }

    }
    public double[][] getMatice(Matice m){
        return m.matice;
    }

    private boolean kontrola(int i, int j) {
        if (i < 0) {
            return true;
        }
        if (j < 0) {
            return true;
        }
        if (i >= matice.length) {
            return true;
        }
        if (j >= matice.length) {
            return true;
        }
        return false;
    }

    public void naplnSachovnici() {
        int a = 0;
        for (int i = 0; i < matice.length; i++) {
            for (int j = 0; j < matice[i].length; j++) {
                if ((a % 2) == 0) {
                    matice[i][j] = 0;
                } else {
                    matice[i][j] = 1;
                }
                a++;
                if (matice[0].length % 2 == 0) {
                    if (matice[0].length - 1 == j) {
                        a++;
                    }
                }
            }
        }

    }

    public double prvek(int i, int j) {
        double a = 0;
        i--;
        j--;
        if (i < 0) {
            return 0 / a;
        }
        if (j < 0) {
            return 0 / a;
        }
        if (i > matice.length) {
            return 0 / a;
        }
        if (j > matice[0].length) {
            return 0 / a;
        }
        return matice[i][j];
    }

    public int pocetRadku() {
        return matice.length;
    }

    public int pocetSloupcu() {
        return matice[0].length;
    }

    public double soucet() {
        double s = 0;
        for (int i = 0; i < matice.length; i++) {
            for (int j = 0; j < matice[i].length; j++) {
                s = s + matice[i][j];
            }
        }
        return s;

    }

    @Override
    public String toString() {
        String s = "";
        for (int i = 0; i < matice.length; i++) {
            for (int j = 0; j < matice[i].length; j++) {
//       
                if (j == 0) {
                    s = s + String.format("%5.2f", matice[i][j]);
                } else {
                    if(matice[i][j] >= 100){
                        s = s + " ";
                    }
                    s = s + String.format("%6.2f", matice[i][j]);
                }
                if (j == (matice[0].length - 1)) {
                    if (i == matice.length - 1) {
                    } else {

                        s = s + "\n";
                    }
                }




            }
        }
        return s;
    }

    public void prohodRadky(int i, int j) {
        i--;
        j--;
        double a;
        if (kontrola(i, j) == true) {
        } else {
            for (int k = 0; k < matice[i].length; k++) {
                a = matice[i][k];
                matice[i][k] = matice[j][k];
                matice[j][k] = a;

            }
        }
    }

   
    public Matice(int radky, int sloupce) {
        radky = Math.abs(radky);
        sloupce = Math.abs(sloupce);
        if (radky == 0) {
            radky = 1;
        }
        if (sloupce == 0) {
            sloupce = 1;
        }
        matice = new double[radky][sloupce];
        for (int i = 0; i < radky; i++) {
            for (int j = 0; j < sloupce; j++) {
                matice[i][j] = 0;
            }
        }
    }
}
package du4;

import java.util.Scanner;

public class DU4 {

    public static void main(String[] args) {    Scanner scan = new Scanner(System.in);   
    
    int r, s, od; 
    System.out.println("---Vysledky---"); 
    System.out.print("Zadej pocet radku:"); 
    r = scan.nextInt(); 
    if (r <= 0) { 
        System.out.println("Pocet radku musi byt vetsi nez 0."); 
        System.exit(1); 
    } 
    System.out.print("Zadej pocet sloupcu:"); 
    s = scan.nextInt(); 
    if (s <= 0) { 
        System.out.println("Pocet sloupcu musi byt vetsi nez 0."); 
        System.exit(1); 
    } 
    System.out.print("Zadej pocatechni hodnotu:"); 
    od = scan.nextInt(); 
    Matice m = new Matice(r,s); 
    System.out.println(m); 
    m.naplnSekvenci(od); 
    System.out.println("---"); 
    System.out.println(m); 
    m.prohodRadky(1, 2); 
    System.out.println("---"); 
    System.out.println(m); 
    m.naplnSachovnici(); 
    System.out.println("---"); 
    System.out.println(m); 
    System.out.println("---"); 
    System.out.printf("soucet = %.2f%n", m.soucet()); 
    m.prohodRadky(1, 2); 
    System.out.println("---"); 
    System.out.println(m); 
    }
}
Nahlásit jako SPAM
IP: 147.32.219.–
Dano
~ Anonymní uživatel
101 příspěvků
12. 12. 2012   #6
-
0
-

#5 Screpheep
To musi byt nejaky dabelsky JUnit, neviem, kde mozes mat chybu v metode Uloziste.pridej(Matice prvek); alebo v metode Uloziste.prvky();

Nahlásit jako SPAM
IP: 195.28.127.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

Spojový seznam — založil Jakub

Spojový seznam — založil Luckin

Spojový seznam — založil TarderOrtex

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý