NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Marek Červinka:2.3.2016 8:05

Ahoj, s javou jsem na uplném začátku zatím a podle tutoriálů zde jsem vytvořil kalkulačku, kterou si teď snažím zlepšovat dle sebe. Zasekl jsem se u případu, kdy jsem si zadal libovolný počet čísel do pole a ty jsem poté chtěl vynásobit. V dalším případě ještě u odčítání bych potřeboval nějak provést negaci zadaných čísel. Při zadávání se mi vždy uloží do pole záporná čísla. Takže když zadám první číslo např. 3 a druhé 2, tak výsledek je -5.

Snad se v tom někdo vyzná :D Předem díky za pomoc :)

 
Odpovědět
2.3.2016 8:05
Avatar
Michal Pipal
Člen
Avatar
Odpovídá na Marek Červinka
Michal Pipal:2.3.2016 9:54

Na cem konkretne jsi se zasekl u nasobeni cisel? U toho druheho pripadu ti jde taky o libovolny pocet cisel nebo presne jenom o dve? Jsi si jisty, ze uz v poli mas zaporna cisla? Skoro to spis vypada (pokud u odcitani pracujes opravdu s polem), ze odecitas v nejakem cyklu a vysledek hadam ukladas do promenne, kterou neustale zmensujes a pokud mas v te promenne na zacatku 0, tak to funguje naprosto spravne (0 - 3 = (-3), (-3) - 2 = (-5)).

 
Nahoru Odpovědět
2.3.2016 9:54
Avatar
Erik Báča
Člen
Avatar
Odpovídá na Marek Červinka
Erik Báča:2.3.2016 10:00

Pokud chceš vynásobit všechna čísla v poli, tak si napiš for cyklus, který jde od nuly až po počet čísel v poli -1, proměnnou j, která bude jedna a v cyklu jenom vynásob j= j * pole s indexem cyklu. Nevím jestli je to dost srozumitelné, jsem na mobilu a k té negaci, to jsem nějak nepochopil

Nahoru Odpovědět
2.3.2016 10:00
Když mi dáš mínus, napiš proč!
Avatar
Erik Báča
Člen
Avatar
Odpovídá na Erik Báča
Erik Báča:2.3.2016 10:12

Bylo by dobré, kdybys nám poslal to co jsi zatím napsal, abychom věděli co je špatně, co ti tam chybí etc. ;) //edit, už jsem na ntb, ale starý příspěvek nemůžu editovat a tady jsem nechtěně nedal odpověď na tvůj příspěvek, ale na můj koment

Editováno 2.3.2016 10:13
Nahoru Odpovědět
2.3.2016 10:12
Když mi dáš mínus, napiš proč!
Avatar
Marek Červinka:2.3.2016 10:35

U druhého příkladu jsem to už vyřešil, pořád jsem se snažil otočit znaménka a přitom kód stačilo nechat jako u sčítání a u toho při zadávání čísel změnit znaménka :D Jinak u násobení nevím celkově, jak to vyřešit pro větší počet čísel, který chci zadat. Kód mám udělaný zatím jen pro 2 čísla. Předpokládám, že základ bude stejný jako u case 1 a case 2, akorát rozdíl bude potom v cyklu for.

 
Nahoru Odpovědět
2.3.2016 10:35
Avatar
Erik Báča
Člen
Avatar
Erik Báča:2.3.2016 10:40

Ty to násobení musíš zadat do pole, potom to jen vynásobíš:

int k = 0;
k = k * pole[index toho čísla]  //index bude v cyklu od 0 a bude se zvedat

už je ti to jasné?

Nahoru Odpovědět
2.3.2016 10:40
Když mi dáš mínus, napiš proč!
Avatar
Odpovídá na Erik Báča
Marek Červinka:2.3.2016 10:54

Asi ne.. mám problém s prací s poli, musim to ještě nastudovat, trochu se v tom ztrácim.. Tohle mi vyhodí chybu po zadání všech čísel, kdy by mi to mělo už vyhodit výsledek.

case 3:                                         // násobení
        System.out.println(" Kolik čísel budete chtít násobit?");
        int pocetnasob = Integer.parseInt(sc.nextLine());
        int[] nasobeni = new int [pocetnasob];      // pole pro počet čísel pro násobení
        for (int i = 0; i < pocetnasob; i++)
                {
                    System.out.printf("Zadejte %d. číslo k násobení : ", i + 1); // pocet čísel pro násobení
                    nasobeni[i] = Integer.parseInt(sc.nextLine());
                }
                for (int i : nasobeni)
                vysledek = vysledek * nasobeni[i];
 
Nahoru Odpovědět
2.3.2016 10:54
Avatar
Erik Báča
Člen
Avatar
Odpovídá na Marek Červinka
Erik Báča:2.3.2016 11:02

Ten for each cyklus tam je naprosto zbytečný, takhle to funguje:

System.out.println(" Kolik čísel budete chtít násobit?");
        int pocetnasob = Integer.parseInt(sc.nextLine());
        int[] nasobeni = new int [pocetnasob];      // pole pro počet čísel pro násobení
        int vysledek = 1;
        for (int i = 0; i < pocetnasob; i++)
                {
                    System.out.printf("Zadejte %d. číslo k násobení : ", i + 1); // pocet čísel pro násobení
                    nasobeni[i] = Integer.parseInt(sc.nextLine());
                    vysledek = vysledek * nasobeni[i];
                }
        System.out.println(vysledek);
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
2.3.2016 11:02
Když mi dáš mínus, napiš proč!
Avatar
Erik Báča
Člen
Avatar
Odpovídá na Marek Červinka
Erik Báča:2.3.2016 15:00

Povedlo se ti to nakonec? :D

Nahoru Odpovědět
2.3.2016 15:00
Když mi dáš mínus, napiš proč!
Avatar
Odpovídá na Erik Báča
Marek Červinka:2.3.2016 15:41

Byl jsem ve škole, tak jsem se k tomu dostal až teď.. momentálně díky moc, povedlo se :) snad se v těch polích začnu víc orientovat :D

 
Nahoru Odpovědět
2.3.2016 15:41
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.