Avatar
NunuKrysa
Člen
Avatar
NunuKrysa:

Ahojte,
mozte mi niekto poradit ako by som mohla docielit nasledovne?:

Mam vypocitane hodnoty typu int z mnoziny xy. Hodnot je vzdy rozne vela.
Potrebujem ich vypisat v riadku oddelene carkami ako text.
Vypise mi ich stale pod seba a bez ciarky :)
Nejake navrhy ako to uskutocnit ?

 
Odpovědět 18. října 21:51
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:

ideální by bylo postnout kód
Vypisuješ standardním výstupem?

Nahoru Odpovědět 18. října 22:42
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
NunuKrysa
Člen
Avatar
NunuKrysa:

Zadanie hovorí :
void vypisPrvocislo(int prvocislo) - vypíše předané prvočíslo v odpovídajícím tvaru
a vystup ma vyzerat takto:

Zadej max. cislo: 20
---Vysledky---
2, 3, 5, 7, 11, 13, 17, 19,

import java.util.Scanner;

public class Ppa1_cv04_5_A16B0052K {
    public static void main(String[] args) {
        Scanner sc = new Scanner (System.in, "Windows-1250");
        int a,b;
        boolean jeprvocislo;

        System.out.println("Zadej max. cislo: ");

        int MaxCislo = sc.nextInt(); //zadane maximalne cislo

        System.out.println("---Vysledky---");

            for (a = 2; a < MaxCislo; a++) {
                jeprvocislo = true;

            for (b = 2; b <= a/b; b++)
                if ((a%b) == 0) jeprvocislo = false; {
                    if (jeprvocislo)   //vypocet prvocisel
                    System.out.println(a);
                }
        }
    }
    }
Editováno 18. října 22:48
 
Nahoru Odpovědět 18. října 22:46
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na NunuKrysa
ostrozan:

Místo Systém.out.prin­tln(a); použij

Systém.out.format("%s,", a);

println automaticky přidá znak odřádkování a proto ti to píše pod sebe

Editováno 18. října 23:04
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 18. října 23:02
Avatar
NunuKrysa
Člen
Avatar
Odpovídá na ostrozan
NunuKrysa:

Paráda, ďakujem presne to som potrebovala :)
Až na ten Systém :D

Editováno 19. října 13:45
 
Nahoru Odpovědět 19. října 13:45
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na NunuKrysa
ostrozan:

Není zač
Jinak já jsem původně napsal "System", ale můj mobil usoudil, že neovládám pravopis a tak mně opravil :-)

 
Nahoru Odpovědět 19. října 14:51
Avatar
NunuKrysa
Člen
Avatar
NunuKrysa:

:) to poznam..a este sa spytam k tomu formatovaniu, mam
int x = napr. 543
int y = napr. 2
a potrebujem zadat int z. To ma byt - z x vybrat pocet cislic y sprava. Cize int z by v tomto pripade bolo 43. Akym sposobom by som mala deklarovat int z ?

 
Nahoru Odpovědět 19. října 22:35
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na NunuKrysa
pocitac770:

Můžeš si například číslo převést na text, následně získat kus přes substring (vypočítáš si počáteční index pomocí délky textu a y), a to si převedeš zpět na číslo...

 
Nahoru Odpovědět 20. října 2:53
Avatar
Vojta Bereščák:

No tak to je opravdu osklive. Co takhle (pseudokod)
x mod 10^y

 
Nahoru Odpovědět  +1 20. října 10:08
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na NunuKrysa
ostrozan:

čili

int  x = 2;
int y = 12345;
int z = (int)((double)y%Math.pow(10,(double)x);

//vysledek  45
Editováno 20. října 12:36
 
Nahoru Odpovědět 20. října 12:35
Avatar
NunuKrysa
Člen
Avatar
NunuKrysa:

Tak hotovo vytvorila som tri premenne:

int c = a % 1000;
    int d = a % 100;
    int e = a % 10;

a uz len dosadzovala do if-ov :D

if (a>9 && a<100 && b ==1) {
       System.out.println(e);
   }
   if (a>9 && a<100 && b ==2) {
       System.out.println(d);
   }
   if (a>9 && a<100 && b >2) {
       System.out.println("Cisla " + a +" a " + b +" jsou chybne zadana");

napriklad...sice to bolo trochu zdlhave ale som zaciatocnicka, tak hlavne ze to funguje :D

 
Nahoru Odpovědět 20. října 14:42
Avatar
NunuKrysa
Člen
Avatar
NunuKrysa:

No ale nabuduce budem mysliet na to, ze to ide aj jednoduchsie :D

 
Nahoru Odpovědět 20. října 14:43
Avatar
NunuKrysa
Člen
Avatar
NunuKrysa:

A ešte otázka, čo ak by som chcela z čísla (užívateľ zadá ľubovolne) napr. 35987 použiť prvé dve cifry (35) ? dá sa to aj inak ako cez string ?

 
Nahoru Odpovědět 20. října 16:55
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na NunuKrysa
ostrozan:
int  x = 2;
int y = 12345;
int z = (int)((double)y/Math.pow(10,(double)x);

//vysledek  12
 
Nahoru Odpovědět 20. října 17:02
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na ostrozan
Lubor Pešek:

:) na to bych moc nespoléhal:)
když už třeba pracuješ s devítkami, viz když si za y dosadíš 99999, už ti to nejde:)

Nahoru Odpovědět 20. října 17:18
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na NunuKrysa
Lubor Pešek:

můžu se jen zeptat, proč se takhle ptáš? když už potřebuješ pracovat s prvními dvěma znaky, tak bys to určitě měla převést na pole Stringu. Co máš proti řetězcům?:)

Nahoru Odpovědět 20. října 17:21
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Lubor Pešek
ostrozan:

Nevím proč by to nemělo fungovat při devítkách, ale v podstatě máš pravdu - je to blbost - nenechá to tam první dvě čísla, ale odstraní poslední dvě.

 
Nahoru Odpovědět 20. října 17:49
Avatar
NunuKrysa
Člen
Avatar
NunuKrysa:

nic proti nim nemam :D ja len ze ci neexistuje nieco jednoduchsie nejak to oindexovat ako int a potom len vybrat prve dva indexy :D alebo to nejak sformatovat nech vypise len prve dva znaky zlava.. :D

Editováno 20. října 17:51
 
Nahoru Odpovědět 20. října 17:49
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na ostrozan
Lubor Pešek:

já neřekl, že to nefunguje, ale že to nejde:) podle požadovaného výsledku touto cestou nikam nedojdeš. Musíš to zkoušet na nejkrajnějších případech:), ale jinak dobrý pokus:)

Nahoru Odpovědět 20. října 17:52
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:
public void getFirstAndThirdCharsFromInt(int number) {
        String[] fieldOfNumbers = String.valueOf(number).split("");
        System.out.println(fieldOfNumbers[0] + ", " + fieldOfNumbers[2]);
}

To ti nepříjde jednoduché?:D
potřebuješ k tomu akorát pomocné pole (když bys chtěla, ani to není potřeba, ale už by to bylo vcelku nepřehledné viz spodní kód), metodu pro přetypování na String (String.valueOf() ), vstupní Integer a výstup, kam narveš tolik hodnot z pole, kolik chceš. A kdybys chtěla prvních 10, tak tam akorát narveš jednu for-each loopu a směješ se jak pětikačka

public void getFirstAndThirdCharsFromInt(int number) {
        System.out.println(String.valueOf(number).split("")[0] + ", " + String.valueOf(number).split("")[2]);
}
Nahoru Odpovědět 20. října 18:00
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Vojta Bereščák:

Tak mala ukazka proc je spatne pracovat se stringama:

public class TimeTest {
        private static final int LOOP_COUNT =  1_000_000_000;

        public static void main(String[] args) {
                int n_base = 12345670;
                int n_count = 2;

                long startTime = System.currentTimeMillis();

                for(int i = 0; i < LOOP_COUNT; i++) {
                        int value = (int)((double)n_base%Math.pow(10,(double)n_count));
                }

                System.out.println("Cas: " + (System.currentTimeMillis() - startTime));

                startTime = System.currentTimeMillis();

                for(int i = 0; i < LOOP_COUNT; i++) {
                        String s = String.valueOf(n_base);
                        int value = Integer.parseInt(s.substring(s.length() - n_count));
                }

                System.out.println("Cas: " + (System.currentTimeMillis() - startTime));
        }
}

vystup:

Cas: 7321
Cas: 52779

Ja vim ze to je lakavy delat takovyhle veci stylem "tak jak by jsme to delali, kdyby jsme to delali na papire", ale programatori maj za ukol setrit prostredky a trochu nad problemem premyslet.

 
Nahoru Odpovědět 23. října 12:21
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:

promiň, trošku mě uniká, jak to souvisí s výše uvedeným problémem:) a jen bych ještě doplnil tu tvou poznámku.... Programátor musí hlavně psát tak kód, aby mu porozuměl někdo druhý a aby se v něm vyznal.

Navíc se mi nezdá, že by to byl zrovna 2x čistý kód...nejvíc mě překvapuje ta druhá loopa... ty nejdřív přetypuješ integer na String a pak ho přetypováváš zpátky? proč jsi to normálně nepoužil jako jeho hodnotu? právě tímto způsobem postupuješ, jako bys to dělal ručně na papíru:)

PS: to o čem jsi mluvil znamená především, že implementuješ nějakou metodu, která globálně zajistí nějakou funkci. Tys navíc teď napsal prakticky strukturovaný kód (v Javě) fuj.

Nahoru Odpovědět 23. října 13:09
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
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 23 zpráv z 23.