Diskuze: Úkol
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Prosím jak se nechá udělat zaokrouhlení desetiného čísla na 2deset. místa Děkuji předem za odpověď
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áš.
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;
}
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","devě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řicet","č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.println("Číslo "+a +" slovy: "+stovky[sta]+ desitky[des]+ jednotky[jedn]);
}
}
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.println(" pokračovat? 1 = ano, ostatni cisla = konec
programu");
odpoved = VstupDat.ctiInt();
}while (odpoved == 1);
}
}
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("__________________________________");
}
}
}
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;
}
}
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
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);
}
}
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é...
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];
}
}
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
Zobrazeno 16 zpráv z 16.