Stránka 1 z 3

Java a řazení čísel

Napsal: 03 lis 2013 11:41
od Layo
Zdravím,
mám problém s touhle úlohou. Nevím jak seřadit ta čísla pomocí cyklů a podmínek, nic složitějšího to asi nebude. Díky

Na vstupu dostanete tři čísla A, B, C. Vašim úkolem je bude vypsat dle velikosti od největšího po nejmenší a následně naopak.

Re: Java a řazení čísel

Napsal: 03 lis 2013 15:23
od domitea
Načteš do pole a pak pomocí cyklu a pár podmínek seřadíš. Žádná věda v tom není ;)

Re: Java a řazení čísel

Napsal: 03 lis 2013 15:46
od Layo
Pole jsme se ještě neučili... Bylo by fajn, kdyby to někdo napsal :D

Re: Java a řazení čísel

Napsal: 03 lis 2013 16:12
od CZechBoY
Zdravím,
se 3 číslama to je jednoduchý, ani pole/cyklus nepotřebuješ.
Jak seřadíš tyto čísla v hlavě když ti přijdou postupně?
55 99 72

Re: Java a řazení čísel

Napsal: 03 lis 2013 17:22
od Layo
Mě fakt nic nenapadá, ale určitě to je jednoduchý...

Re: Java a řazení čísel

Napsal: 03 lis 2013 17:26
od CZechBoY
Ty nevíš jak bys to seřadil? Tak mi napiš ty čísla seřazený od největšího po nejmenší.
Jestli je nenapíšeš tak počítám s tím, že to opravdu neumíš a musíš se vrátit do první třídy ZÁKLADNÍ školy.

Re: Java a řazení čísel

Napsal: 03 lis 2013 17:29
od Layo
Já počítám s tím, že uživatel zadá 3 čísla na vstupu, ne že si je vymyslím a dám je tam natvrdo...

Re: Java a řazení čísel

Napsal: 03 lis 2013 17:31
od CZechBoY
Tohle je jeden příklad z miliardy, když si pod těmi čísly představíš reálný čísla, použiješ sobě vlastní metodu řešení tohohle problému tak už převedení do kódu je hračka.

Re: Java a řazení čísel

Napsal: 03 lis 2013 17:37
od Sender
Layo > porovnáš jedno číslo s druhým od zadu a když je větší,tak je přehodíš -takhle několikrát.
Najde se několik způsobů...

Re: Java a řazení čísel

Napsal: 03 lis 2013 17:51
od Layo
Já to sám vyřešit umím, jenom jsem chtěl poradit s nějakým normálním způsobem. Když jsem se rady nedočkal, tak jsem to napsal idiotsky, co ty na to? Alespoň, že to funguje...
public static void main(String[] args) {
// TODO code application logic here
Scanner sc = new Scanner(System.in);
System.out.print("Zadejte A: ");
int a = sc.nextInt();
System.out.print("Zadejte B: ");
int b = sc.nextInt();
System.out.print("Zadejte C: ");
int c = sc.nextInt();
if(a>b && b>c && c<a){
System.out.println(a+" "+b+" "+c);
}
if(a>b && b<c && c<a){
System.out.println(a+" "+c+" "+b);
}
if(a>b && b<c && c>a){
System.out.println(c+" "+a+" "+b);
}
if(a<b && b<c && c>a){
System.out.println(c+" "+b+" "+a);
}
if(a<b && b>c && c<a){
System.out.println(b+" "+a+" "+c);
}
if(a<b && b>c && c>a){
System.out.println(b+" "+c+" "+a);
}
}

Re: Java a řazení čísel

Napsal: 03 lis 2013 18:02
od CZechBoY
Výborně, teď by to šlo zanořit do ifů, protože se ti tam některé sekvence opakují.
Třeba

Kód: Vybrat vše

if(a<b && b<c && c>a){
System.out.println(c+" "+b+" "+a);
}
if(a<b && b>c && c<a){
System.out.println(b+" "+a+" "+c);
}

lze přepsat na

Kód: Vybrat vše

if(a<b && b<c) {
if(c>a){
System.out.println(c+" "+b+" "+a);
}
else{
System.out.println(b+" "+a+" "+c);
}

Re: Java a řazení čísel

Napsal: 03 lis 2013 19:45
od faraon
Tenhle způsob možná není úplně idiotský, ale je strašně složitý. Jednodušší bude opravdu ta čísla nejdřív seřadit, a pak vypsat na oba požadované způsoby. Takže dejme tomu že uživatel zadal výše uvedená čísla 55, 99, 72, a ty jsi už načetl. Stav proměnných tedy v tuhle chvíli je takový:

Kód: Vybrat vše

a=55
b=99
c=72

A jak je tedy nejjednodušeji seřadíš? Takhle: nejdřív první dvojici, potom druhou dvojici, a pak zase první dvojici, protože se ti mezitím mohlo stát že se nejmenší číslo přesunulo z c do b, ale ty ho potřebuješ shodit až do a. Vyměnit obsah dvou proměnných už snad umíš, stačí na to jedna pomocná proměnná, takže vystačíš se třemi if:

Kód: Vybrat vše

if (a>b) {prohodit a,b}
a tak dále...

Následují výpisy a,b,c, a c,b,a.