Ošetření výpisu různě dlouhých řádků – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ošetření výpisu různě dlouhých řádků – Java – Fórum – Programujte.comOšetření výpisu různě dlouhých řádků – Java – Fórum – Programujte.com

 

vasek.t0
Newbie
8. 12. 2013   #1
-
0
-

ahoj máme tohle zadání, nevím, jak tam dát ošetření toho vypisování různě dlouhých řádků. poradíte mi prosím Vás?
Napište program, který vytiskne na obrazovku 2D pole - metoda main(): slouží jako „test bench“ - načte jedno číslo ze standardního vstupu (velikost pole n), vyrobí testovací matici o velikosti n x n - a naplní všechny řádky první řádek bude naplněn nulami, další jedničkami atd. Tuto matici předá jako parametr metodě vypis2D(): tato metoda bude v systému OdevSys také otastovánana na schopnost vypisovat matice s různě dlouhymi radky a nevypsání ničeho, pokud bude vstup null.

public static void main(String[] args) {
        System.out.println("Zadejte velikost pole:");
        Scanner sc = new Scanner(System.in);
       
        int n = sc.nextInt();
        int[][] pole = new int[n][n];
        for (int i = 0; i < pole.length; i++) {
            for (int j = 0; j < pole[i].length; j++) {
                pole[i][j] = i;
            }
        }
        vypis2D(pole);
    }

    public static void vypis2D(int[][] pole) {
        if (pole==null){System.out.println();}
        else{
        System.out.println("---Vysledky---");
        for (int i = 0; i < pole.length; i++) {
            System.out.format("(%4s):", i * pole[i].length);
            for (int j = 0; j < pole[i].length; j++) {
                System.out.printf(Locale.US, "%4d", pole[i][j]);
                
            }
            System.out.println();
        }
    }

    }}
Nahlásit jako SPAM
IP: 90.177.127.–
Kit+15
Guru
8. 12. 2013   #2
-
0
-

#1 vasek.t
V čem je problém? Mně ten program funguje.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
vasek.t0
Newbie
8. 12. 2013   #3
-
0
-

ano to funguje, ale ten odevzdávací software vyhazuje tuto chybu vypis2DdoesNo­tAcceptDifferen­tRowLengthsCo­rrectly(AlgPrin­tTest) . Budu se muset zeptat cvičícího, na maily neodpovídá

Nahlásit jako SPAM
IP: 90.177.127.–
vasek.t0
Newbie
8. 12. 2013   #4
-
0
-

ještě jestli mohu poprosit o radu, kde mám ten program rozšířit že,  program čte z klávesnice celá čísla a dokud jsou hodnoty neklesající ukládá je do jednoho řádku pak když se ve vstupní posloupnosti objeví číslo menší než předcházející, přejde na další řádek.Načítání se ukončí při dosažení 100. prvku nebo načtení hodnoty -1. pokoušel jsem se pomocí foru a v něm ifu ale jsem v tom uplně zamotanej :-(

public static void main(String[] args) {

System.out.println("Zadejte velikost pole:");
Scanner sc = new Scanner(System.in);

int n = sc.nextInt();
int[][] pole = new int[n][n];
for (int i = 0; i < pole.length; i++) {
for (int j = 0; j < pole[i].length; j++) {
pole[i][j] = i; 

}


}


vypis2D(pole);
sort2D(pole);
}

public static void vypis2D(int[][] pole) {
if (pole==null){System.out.println();}
else{
System.out.println("---Vysledky---");
for (int i = 0; i < pole.length; i++) {
System.out.format("(%4s):", i * pole[i].length);
for (int j = 0; j < pole[i].length; j++) {
System.out.printf(Locale.US, "%4d", pole[i][j]);

}
System.out.println();
}
}

}
public static void sort2D(int[][]pole) 
{ //int cisloVZavorce=0;
int[] cisloVZavorce =new int[pole.length];
int cislo =0;
for (int i = 0; i < pole.length; i++) {
cislo=0;

for (int j = 0; j < pole[i].length; j++) {
cislo+=pole[i][j];
}
cisloVZavorce[i]=cislo;

}

System.out.println("Setridene pole:");
for (int i = pole.length - 1; i >= 0; i--) {
System.out.format("(%4s):", cisloVZavorce[i]);
for (int j = pole.length - 1; j >= 0; j--) {
System.out.printf(Locale.US, "%4d", pole[i][j]);
}
System.out.println();
}

}
}
Nahlásit jako SPAM
IP: 90.177.127.–
Kit+15
Guru
8. 12. 2013   #5
-
0
-

#3 vasek.t
Už to vidím. Pokud matice není obdélníková, ale třeba trojúhelníková, tak adresy v závorkách budou chybně.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
vasek.t0
Newbie
8. 12. 2013   #6
-
0
-

#5 Kit
uff, nechápu, vždyť může být jenom čtvercová když mám nxn matici?

Nahlásit jako SPAM
IP: 90.177.127.–
Flowy0
Věrný člen
8. 12. 2013   #7
-
0
-

do metody ti moze prist matica/pole aj z inych objektov ako robis ty ... niekto si moze vymysliet pole 

int[][] array = { { 0, 1}, {1} };

a program by spadol

Nahlásit jako SPAM
IP: 91.127.137.–
https://github.com/Flowy
Kit+15
Guru
8. 12. 2013   #8
-
0
-

#6 vasek.t
... ;tato metoda bude v systému OdevSys také otastovánana na schopnost vypisovat matice s různě dlouhymi radky ...

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
vasek.t0
Newbie
8. 12. 2013   #9
-
0
-

jo už chápu a jak to prosím ošetřit aby to chybu nevyhodilo? 

Nahlásit jako SPAM
IP: 90.177.127.–
Kit+15
Guru
8. 12. 2013   #10
-
0
-

#9 vasek.t
Máš tam

System.out.format("(%4s):", i * pole[i].length);

Místo "i * pole[i].length" kumulativně přičítej délku předchozího řádku. Nejdříve vypiš součet, pak teprve přičti.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
8. 12. 2013   #11
-
0
-

#9 vasek.t
 Podle mne by výstup mohl vypadat třeba takto:

(   0):   0   1   2
(   3):   3
(   4):   4   5   6   7
(   8):   8   9

Je to skutečný výstup z tvého mírně upraveného programu pro 

int[][] pole = { { 0, 1, 2}, {3}, {4, 5, 6, 7}, {8, 9} };
Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
vasek.t0
Newbie
8. 12. 2013   #12
-
0
-

díky už to chápu, jak to může být. Ale vůbec nevím jak to napsat v kódu.

Nahlásit jako SPAM
IP: 90.177.127.–
Flowy0
Věrný člen
8. 12. 2013   #13
-
0
-

prejdi kazdy riadok a v kazdom riadku prejdi kazdu polozku ... uplne bezny sposob

Nahlásit jako SPAM
IP: 91.127.137.–
https://github.com/Flowy
Kit+15
Guru
8. 12. 2013   #14
-
0
-

#12 vasek.t
Ale no tak, snad umíš udělat "adresa += ...", ne?

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
vasek.t0
Newbie
8. 12. 2013   #15
-
0
-

tak jestli to chápu dobře, tak to bude takhle? a ten soucetRadku vypisu misto i * pole[i].length?

 for(int i = 0; i < pole2D.length ; i++)
        {
            soucetRadku = 0;
            for(int j = 0; j < pole2D[i].length; j++)
            {
                soucetRadku += pole2D[i][j];
Nahlásit jako SPAM
IP: 90.177.127.–
Kit+15
Guru
8. 12. 2013   #16
-
0
-

#15 vasek.t
Ne. Nepotřebuješ kumulovat hodnoty, ale délky.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
vasek.t0
Newbie
8. 12. 2013   #17
-
0
-

takže takto? 

for (int i = 0; i < pole.length; i++) {
           soucetRadku = pole.length;
            for (int j = 0; j < pole[i].length; j++) {
                soucetRadku += pole[i].length;
Nahlásit jako SPAM
IP: 90.177.127.–
vasek.t0
Newbie
8. 12. 2013   #18
-
0
-

teda u toho prvního soucetRadku tam zůstane =0

Nahlásit jako SPAM
IP: 90.177.127.–
Kit+15
Guru
8. 12. 2013   #19
-
0
-

#17 vasek.t
Už je to lepší, ale zase vedle. Nestřílej od boku, ale přemýšlej a otestuj si to.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
vasek.t0
Newbie
8. 12. 2013   #20
-
0
-

takto to vypisuje správný hodnoty když pak dám do toho výpisu i*soucetRadku. Jestli to teda chápu dobře, projde to celé to pole, pak mi dá zpátky délku řádku a pak to vypíšu

for (int i = 0; i < pole.length; i++) {
           soucetRadku = 0;
            for (int j = 0; j < pole[i].length; j++) {
                soucetRadku = pole[i].length;
Nahlásit jako SPAM
IP: 90.177.127.–
vasek.t0
Newbie
8. 12. 2013   #21
-
0
-

je to tak prosím Vás správně? nefuguje teď ta odevzdávací stránka tak si to nemůžu zkontrolovat

Nahlásit jako SPAM
IP: 90.177.127.–
Kit+15
Guru
9. 12. 2013   #22
-
0
-

#20 vasek.t
To sčítání je špatně zanořeno.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
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, 16 hostů

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ý