Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Úkol

Aktivity
Avatar
danekmartin21:22.10.2014 9:15

Ahoj, prosím o moc nevím si rady z tímto úkolem. nevím jak mám napsat podmínky.A umím jenom for a switch

Napište program, který přepíše zadané trojciferné číslo (int) do slovního vyjádření.
Příklad vstupu a výstupu programu:

Zadej cislo: 123
---Vysledky---
sto dvacet tri

 
Odpovědět
22.10.2014 9:15
Avatar
Ondřej Štorc
Tvůrce
Avatar
Nahoru Odpovědět
22.10.2014 9:46
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
danekmartin21:22.10.2014 11:18

Prosím jak se nechá udělat zaokrouhlení desetiného čísla na 2deset. místa Děkuji předem za odpověď

 
Nahoru Odpovědět
22.10.2014 11:18
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na danekmartin21
David Hartinger:22.10.2014 11:29

Na tohle budeš potřebovat 3 pole, do kterých si uložíš jak jdou za sebou čísla do 20ti, pak desítky a potom stovky. Dále si vydělíš zadané číslo 10 a 100, abys zjistil kolik je v něm desítek a stovek a podle toho vypíšeš čísla z pole. Někde to tu máme na webu pro C#, když s budeš snažit, tak si to najdeš a do Javy předěláš.

Editováno 22.10.2014 11:29
Nahoru Odpovědět
22.10.2014 11:29
New kid back on the block with a R.I.P
Avatar
davaj
Člen
Avatar
davaj:22.10.2014 13:28

Budes potrebovat trojrozmerne pole, retezec.
Je potreba zjistit jake cifry se v cisle vyskytuji. To tak ze udelas v cyklu s podminkou cislo musi byt vetsi nez 0 zbytkove deleni cisla 10, ulozis cifru do pole (prvni je cifra, ktera reprezentuje jednotky), vydelis cislo 10.
Udelas mnohonasobne vetveti Switch kde parametrem bude pole. Pak uz jenom pridavas do retezce slova.
Udelal jsem ti to v C++.
Je treba jeste v mainu osetrit, aby si nedostal cislo, ktere ma vice nez 3 cifry.
Je treba pridat zaporne hodnoty -1 az -9 a podle toho to taky vypsat.

#include <iostream>
#include <cstring>
using namespace std;

void cislo_slovy(int cislo)
{
    int cifry[3],i=0,cislo2 = cislo;
    char slovo[51];
    while(cislo){
        cifry[i] = cislo%10;
        cislo /= 10;
        i++;
    }
    switch(cifry[2]){
        case 1: strcpy(slovo,"Sto ");         break;
        case 2: strcpy(slovo,"Dve ste ");     break;
        case 3: strcpy(slovo,"Tri sta ");     break;
        case 4: strcpy(slovo,"Ctyri sta ");   break;
        case 5: strcpy(slovo,"Pet set ");     break;
        case 6: strcpy(slovo,"Sest set ");    break;
        case 7: strcpy(slovo,"Sedm set ");    break;
        case 8: strcpy(slovo,"Osm set ");     break;
        case 9: strcpy(slovo,"Devet set ");   break;
        default:    break;
    }
    switch(cifry[1]){
        case 1: strcat(slovo,"deset ");       break;
        case 2: strcat(slovo,"dvacet ");      break;
        case 3: strcat(slovo,"tricet ");      break;
        case 4: strcat(slovo,"ctyricet ");    break;
        case 5: strcat(slovo,"padesat ");     break;
        case 6: strcat(slovo,"sedesat ");     break;
        case 7: strcat(slovo,"sedmdesat ");   break;
        case 8: strcat(slovo,"osmdesat ");    break;
        case 9: strcat(slovo,"devadesat ");   break;
        default:    break;
    }
    switch(cifry[0]){
        case 1: strcat(slovo,"jedna ");   break;
        case 2: strcat(slovo,"dva ");     break;
        case 3: strcat(slovo,"tri ");     break;
        case 4: strcat(slovo,"ctyri ");   break;
        case 5: strcat(slovo,"pet ");     break;
        case 6: strcat(slovo,"sest ");    break;
        case 7: strcat(slovo,"sedm ");    break;
        case 8: strcat(slovo,"osm ");     break;
        case 9: strcat(slovo,"devet ");   break;
        default:    break;
    }
    cout << cislo2 << endl << slovo;
}
int main()
{
    cislo_slovy(1500);
    return 0;
}
Editováno 22.10.2014 13:32
 
Nahoru Odpovědět
22.10.2014 13:28
Avatar
davaj
Člen
Avatar
davaj:22.10.2014 13:34

Jak se divam, tak jsem tam nechal zrovna cislo s 4 ciframa, to si samozrejme zmen :D Ovsem treba jedenact ti to vypise jako "deset jedna".

Editováno 22.10.2014 13:37
 
Nahoru Odpovědět
22.10.2014 13:34
Avatar
ecopol
Člen
Avatar
Odpovídá na danekmartin21
ecopol:29.10.2014 15:22

Třeba takhle :)

public class Prevodcisel {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// Převod číslic na slova
int a =21, sta = 0, des = 0, jedn= 0;
//Pole se slovním vyjádřením jednotek, desítek a stovek
String jednotky[] = {"","jedna", "dva","tři", "čtyři","pět","š­est", "sedm","osm","de­vět","deset", "jedenáct", "dvanáct", "třináct", "čtrnáct", "patnáct", "šestnáct", "sedmnáct", "osmnáct", "devatenáct"};
String desitky[] = {"","deset", "dvacet","tři­cet","čtyřicet", "padesát", "šedesát", "sedmdesát", "osmdesát", "devadesát"};
String stovky[] = {"","jednosto", "dvěstě", "třista", "čtyřista", "pětset", "šestset", "sedmset", "osmset", "devětset"};
//Kolik je to stovek?
sta = a/100;
//Kolik je to desítek?
des = a;
des %=100;
//Výjimka pro čísla 11-19
if(des > 19)
{
des = des/10;

//Kolik je to jednotek?
jedn = (a - (sta100+des10));
}
else
{
des = a;
des %= 100;
jedn = des;
des = 0;
}

System.out.prin­tln("Číslo "+a +" slovy: "+stovky[sta]+ desitky[des]+ jednotky[jedn]);

}

}

 
Nahoru Odpovědět
29.10.2014 15:22
Avatar
mchrubasikova:5.11.2014 9:27

Dobrý den,
potřebuji pomoct mám úkol:
Sestavte program, který vyřeší tuto situaci: Existuje dluh, například 5 000,- Kč a tento dluh
musíte splatit – jednotlivé splátky zadávejte z klávesnice, není stanovena minimální ani
maximální výše jedné splátky. Splácení končí v okamžiku, kdy součet splátek se rovná nebo
je vyšší než dlužná částka. Během splácení potřebujeme vědět, kolik dluhu nám ještě zbývá
po odečtení splátky. Po skončení splácení potřebujeme vědět, kolik splátek jsme uskutečnili a
zda jsme náhodou nezaplatili více, než byl dluh.
Nabídněte možnost celý výpočet opakovat.

vše mi v Javě funguje, ale opakování se mi nedaří.
Prosím o pomoc.

děkuji

public class ChrubasikovaKU2 {
public static void main (String [] args){

int x;
int suma = 0;
int p = 0;
int odpoved;
do{

System.out.println (" Zadej splátku " );

while ( suma < 5000) {
x = VstupDat.ctiInt ();
System.out.println (" Zbyva doplatit " + (5000- suma - x));

suma = suma + x;
p++;
}

System.out.println (" Celkem splaceno: " + suma + " korun ");
System.out.println (" Počet splátek " + p);
System.out.println (" Přeplaceno " + (suma - 5000)+ " korun ");

System.out.prin­tln(" pokračovat? 1 = ano, ostatni cisla = konec programu");
odpoved = VstupDat.ctiInt();
}while (odpoved == 1);

}
}

 
Nahoru Odpovědět
5.11.2014 9:27
Avatar
Hit
Člen
Avatar
Odpovídá na mchrubasikova
Hit:5.11.2014 20:44

Čus, tohle je snad to co potřebuješ

public class Debt {

    public static void main(String[] args){
        int dluhCelkem = 5000;
        int splatka;
        int splaceno = 0;
        int dluh = dluhCelkem;
        int pocetSplatek = 0;
        Scanner sc = new Scanner(System.in);

        while(true){
            System.out.println("Váš dluh je: " + dluh);
            System.out.println("Zadejte splátku: ");

            splatka = sc.nextInt();
            dluh -= splatka;
            splaceno += splatka;
            pocetSplatek++;

            if ( dluh <= 0 ){
                System.out.println("Počet splátek: " + pocetSplatek);

                if ( dluh < 0 ){
                    System.out.println("Přeplaceno o " + (dluh*(-1)));
                }

                System.out.println("__________________________________");
                System.out.println("Dluh byl splacen, chcete pokračovat?");
                System.out.println("Ano - 1 / Ne - 2");

                if (sc.nextInt() == 1){
                    splaceno = 0;
                    dluh = dluhCelkem;
                }else{
                    System.out.println("Program byl ukončen.");
                    break;
                }
            }

            System.out.println("Splaceno: " + splaceno);
            System.out.println("Zbývá: " + (dluhCelkem - splaceno));
            System.out.println("__________________________________");
        }
    }
}
Editováno 5.11.2014 20:45
Nahoru Odpovědět
5.11.2014 20:44
Life's not about how hard you can hit, it's about how hard you can GET hit and keep moving forward.
Avatar
Hit
Člen
Avatar
Odpovídá na Hit
Hit:6.11.2014 11:10

Nebo takhle

public class Debt {
    private int dluhCelkem;
    private int splaceno = 0;
    private int splatka;
    private int dluh;
    private Scanner sc;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Debt d = new Debt();
        d.setDluhCelkem();
        d.pocitatSplatky();
    }

    private void pocitatSplatky(){
        System.out.println("_________________________________");
        System.out.println("Váš dluh je " + dluh + " Kč");
        System.out.println("Zadejte splátku: ");

        splatka = sc.nextInt();
        splaceno += splatka;
        dluh = dluhCelkem - splaceno;

        System.out.println("Celkem splaceno " + splaceno + " Kč");

        if ( dluh > 0 ){
            pocitatSplatky();
        }else{
            System.out.println("_________________________________");
            System.out.println("Dluh byl splacen.");
            System.out.println("Splatil/a jste " + splaceno + " Kč");
            System.out.println("Přeplatil/a jste o " + (dluhCelkem - splaceno)*(-1) + " Kč");
            System.out.println("\nChcete pokračovat? \n\t1 - Ano \n\t2 - Ne");

            if (sc.nextInt() == 1){
                setDluhCelkem();
                pocitatSplatky();
            }else{
                System.out.println("Program ukončen.");
                System.exit(0);
            }
        }
    }

    private void setDluhCelkem(){
        System.out.println("Zadejte dluh: ");
        sc = new Scanner(System.in);
        dluhCelkem = sc.nextInt();
        dluh = dluhCelkem;
    }
}
Nahoru Odpovědět
6.11.2014 11:10
Life's not about how hard you can hit, it's about how hard you can GET hit and keep moving forward.
Avatar
Odpovídá na Hit
mchrubasikova:6.11.2014 19:27

děkuji vám za pomoc..ale šlo by to udělat pomocí do-while? Tohle zrovna probíráme a pomocí tohoto kódu to máme mít vyhotovené.
Ještě jednou všem díky za pomoc :)

 
Nahoru Odpovědět
6.11.2014 19:27
Avatar
Hit
Člen
Avatar
Odpovídá na mchrubasikova
Hit:6.11.2014 19:47

Tady to je

public class Debt {

    public static void main (String [] args){
        int dluhCelkem = 5000;
        int dluh = dluhCelkem;
        int splaceno = 0;
        int splatka;
        int pocetSplatek = 0;
        Scanner sc = new Scanner(System.in);

        do{
            System.out.println ("Zadej splátku " );

            splatka = sc.nextInt();
            dluh -= splatka;
            splaceno += splatka;
            pocetSplatek++;

            if (dluh <= 0){
                if (dluh < 0){
                    System.out.println("Dluh byl přeplacen o " + dluh*(-1));
                }
                System.out.println("Počet splátek: " + pocetSplatek);
                System.out.println("Dluh splacen, chcete pokračovat?");
                System.out.println("\t1 - Ano");
                System.out.println("\t2 - Ne");

                if (sc.nextInt() == 1){
                    splaceno = 0;
                }else{
                    break;
                }
            }
            System.out.println ("Zbývá doplatit " + (dluh));

        }while (splaceno <= dluhCelkem);
    }
}
Editováno 6.11.2014 19:48
Nahoru Odpovědět
6.11.2014 19:47
Life's not about how hard you can hit, it's about how hard you can GET hit and keep moving forward.
Avatar
hanpari
Člen
Avatar
Odpovídá na Hit
hanpari:6.11.2014 20:50

A zrovna dnes jsem tady viděl toto:

http://www.itnetwork.cz/…40740446a64d

Ani nevím proč se mi to vybavilo :)
Jen by to chtělo trochu víc růžové...

Editováno 6.11.2014 20:51
 
Nahoru Odpovědět
6.11.2014 20:50
Avatar
Hit
Člen
Avatar
Odpovídá na hanpari
Hit:6.11.2014 21:01

Já jsem takhle milej na všechny, fakt :D

Nahoru Odpovědět
6.11.2014 21:01
Life's not about how hard you can hit, it's about how hard you can GET hit and keep moving forward.
Avatar
Rasto
Tvůrce
Avatar
Odpovídá na danekmartin21
Rasto:6.11.2014 21:06

Ahoj,
neviem, ci je to este aktualne, ale je to zaujimava uloha (a nie az taka jednoducha ako by sa mohlo na prvy pohlad zdat). Tu je moj pokus:

import java.util.Scanner;
/**
 *
 * @author Rastislav Boroš
 */
public class Cisla {
    static String s1,s2,s3;
    static String[] jednotky = {"jeden","dva","tri","styri","pat","sest","sedem","osem","devat", "desat","jedenast","dvanast",
                                "trinast","strnast","patnast","sestnast","sedemnast","osemnast","devatnast"};
    static String[] desiatky = {"dvadsat","tridsat","styridsat","patdesiat","sestdesiat","sedemdesiat","osemdesiat","devatdesiat"};
    static String[] stovky = {"sto","dvesto","tristo","styristo","patsto","seststo","sedemsto","osemsto","devatsto"};

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        int cislo;
        String slovo;
        Scanner sc = new Scanner(System.in);

        System.out.println("Zadaj cele cislo od 1 do 999 (vratane 1 a 999). Pre ukoncenie zadaj 'stop': ");
        while(sc.hasNext()) {
            if(sc.hasNextInt()) {
              cislo = sc.nextInt();
              if(cislo < 1 || cislo > 999)
                System.out.println("Zadaj cele cislo od 1 do 999 (vratane 1 a 999). Pre ukoncenie zadaj 'stop': ");
              vyhodnot(cislo);
            }
            else {
             slovo = sc.next();
              if (slovo.equals("stop"))
                 break;
                else
                 System.out.println("Zadaj cele cislo od 1 do 999 (vratane 1 a 999). Pre ukoncenie zadaj 'stop': ");
            }

            if (s1 != null && s2 !=null && s3 != null)
               System.out.println(s1 + " " + s2 + " " + s3);
            if (s1 == null && s2 !=null && s3 !=null)
               System.out.println(s2 + " " + s3);
            if (s1 == null && s2 == null && s3 != null)
               System.out.println(s3);

            s1 = null;
            s2 = null;
            s3 = null;
        }
    }

    public static void vyhodnot(int c) {
        int a;

        if(c >=100) {
            if(c%100 == 0) {
                for(int i = 1; i < stovky.length + 1; i++)
                    if(c/100 == i)
                        s1 = stovky[i-1];
            }
            else {
                a = c - c%100;
                for(int i = 1; i < stovky.length + 1; i++)
                    if(a/100 == i)
                        s1 = stovky[i-1];
                zistiDesiatky(c%100);
            }
        }

        if(c < 100) {
            if(c%10 == 0) {
                for(int i = 2; i < desiatky.length + 2; i++)
                    if(c/10 == i)
                        s2 = desiatky[i-2];
            }
            else {
                a = c - c%10;
                for(int i = 2; i < desiatky.length + 2; i++)
                    if(a/10 == i)
                        s2 = desiatky[i-2];
                zistiJednotky(c%10);
            }
        }

        if(c < 20) {
            for(int i=1; i < 20; i++)
              if(i == c)
                s3 = jednotky[i-1];
        }
    }

    public static void zistiDesiatky(int c) {
        int b;

        if(c%10 == 0) {
           for(int i = 2; i < desiatky.length + 2; i++)
              if(c/10 == i)
                 s2 = desiatky[i-2];
        }
        else {
            b = c - c%10;
            for(int i = 2; i < desiatky.length + 2; i++)
               if(b/10 == i)
                 s2 = desiatky[i-2];
            zistiJednotky(c%10);
        }
    }

    public static void zistiJednotky(int c){
        for(int i=1; i < 20; i++)
            if(i == c)
                s3 = jednotky[i-1];
    }
}
Editováno 6.11.2014 21:09
 
Nahoru Odpovědět
6.11.2014 21:06
Avatar
hanpari
Člen
Avatar
Odpovídá na Hit
hanpari:6.11.2014 21:10

No dyť jo, vždyť jsem psal, že je mi fakt divný, proč se mi zrovna ten obrázek vybavil :)

 
Nahoru Odpovědět
6.11.2014 21:10
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 16 zpráv z 16.