Prevod mien – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Prevod mien – C / C++ – Fórum – Programujte.comPrevod mien – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Kent0
Stálý člen
13. 8. 2012   #1
-
0
-

Nazdar..robil som v C++ menovú kalkulačku a mám 2 otázky.

1. Dalo by sa to spraviť jednoduchšie?

2. Prečo, keď mám rovnaký kurz v mojom programe ako na stránke http://openiazoch.zoznam.sk/kalkulacky/prevod-mien/ , mi hádže iné výsledky?

Tu je môj zdrojový kód:

#include <iostream>

                                                     // prototypy funkcii   
int navrh();                            
double Euro_Dolar();
double Dolar_Euro();
double Euro_Libra();
double Libra_Euro();
double Dolar_Libra();
double Libra_Dolar();

int main()                                           // zaciatok programu      
{
    using namespace std;
    cout << "*****MENOVA KALKULACKA*****\n";
    cout << endl;
        
    int volba = navrh();
    
    switch(volba)                                    // pouzitie prikazu switch, moznost vyberu 
    {
    case(1):
            cout << "Vysledok je: " << Euro_Dolar() << " USD\n";
            break;
    case(2):
            cout << "Vysledok je: " << Dolar_Euro() << " EUR\n";
            break;
    case(3):
            cout << "Vysledok je: " << Euro_Libra() << " GBP\n";
            break;
    case(4):
            cout << "Vysledok je: " << Libra_Euro() << " EUR\n";
            break;
    case(5):
            cout << "Vysledok je: " << Dolar_Libra() << " GBP\n";
            break;
    case(6):
            cout << "Vysledok je: " << Libra_Dolar() << " USD\n";       
    }
    
    cout << "Koniec..\n";
    
    char reakce;
    cin >> reakce;
    return 0;
}                                                     // koniec programu

int navrh()                                           // vytvorenie moznosti          
{
    int volba;
    std::cout << " MOZNOSTI NA VYBER\n";
    std::cout << "\n";
    std::cout << " (1) Euro  -> Dolar\n";
    std::cout << " (2) Dolar -> Euro\n";
    std::cout << " (3) Euro  -> Libra\n";
    std::cout << " (4) Libra -> Euro\n";
    std::cout << " (5) Dolar -> Libra\n";
    std::cout << " (6) Libra -> Dolar\n";
    std::cin >> volba;
    return volba;
}

double Euro_Dolar()                                   // definovanie funkcie   
{
    double Euro,Dolar;
    std::cout << " 1.00 EUR = 1.23 USD\n";
    std::cout << " Kolko EUR?\n";
    std::cin >> Euro;
    return  Euro * 1.23;                              // navratova hodnota
}

double Dolar_Euro()                                   // definovanie funkcie
{
    double Dolar,Euro;
    std::cout << " 1.00 USD = 0.82 EUR\n";
    std::cout << " Kolko USD?\n";
    std::cin >> Dolar;
    return Dolar * 0.82;                              // navratova hodnota
}

double Euro_Libra()                                   // definovanie funkcie          
{
    double Euro,Libra;
    std::cout << " 1.00 EUR = 0.79 GBP\n";
    std::cout << " Kolko EUR?\n";
    std::cin >> Euro;
    return Euro * 0.79;                               // navratova hodnota
}

double Libra_Euro()                                   // definovanie funkcie
{
    double Libra,Euro;
    std::cout << " 1.00 GBP = 1.27 EUR\n";
    std::cout << " Kolko GBP?\n";
    std::cin >> Libra;
    return Libra * 1.27;                              // navratova hodnota
}

double Dolar_Libra()                                  // definovanie funkcie
{
    double Dolar,Libra;
    std::cout << " 1.00 USD = 0.64 GBP\n";
    std::cout << " Kolko USD?\n";
    std::cin >> Dolar;
    return Dolar * 0.64;                              // navratova hodnota
}

double Libra_Dolar()                                  // definovanie funkcie
{      
    double Libra,Dolar;
    std::cout << " 1.00 GBP = 1.56 USD\n";
    std::cout << " Kolko GBP?\n";
    std::cin >> Libra;
    return Libra * 1.56;                              // navratova hodnota
} 


    
    

Za odpoveď ďakujem :)

Nahlásit jako SPAM
IP: 80.87.210.–
remmidemmi0
Věrný člen
13. 8. 2012   #2
-
0
-

v PHP a mySQL to vyjde líp. Nejhorší na těch měnových kalkulajdách je, jak samočinně získávat aktuální kurzy.

Proč to máš v C++ ? To poběží v lokále na PC nebo to je do nějakýho MCU s displejíčkem, co si turisti strčí do kapsy a běhají s tm po krámech?

Nahlásit jako SPAM
IP: 82.142.115.–
Kent0
Stálý člen
13. 8. 2012   #3
-
0
-

Keď vezmem do úvahy, že v C++ programujem cca 2 týždne tak to pôjde len v mojom PC..robil som to pre zábavu aby som si precvičil funkcie a príkaz switch :) 

Nahlásit jako SPAM
IP: 80.87.210.–
Luckaa+2
Návštěvník
13. 8. 2012   #4
-
0
-

#1 Kent
Jen otazka mimo, proč když máš

using namespace std;

tak před cout a cin píšeš std:: podle mě zbytečnost .) Ale to jen pro usnadnění práce.  .) Nic ve špatným

Nahlásit jako SPAM
IP: 89.177.13.–
Ucim se c++
Pouzivam Dev-C++
A bavi me to! :)
vitamin+8
Grafoman
13. 8. 2012   #5
-
0
-

lebo ten using dal len do vnutra funkcie main.

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Luckaa+2
Návštěvník
13. 8. 2012   #6
-
0
-

#5 vitamin
Jj ale mohl to dát nad hlavičku :) a měl by to jednodušší :) To bylo mé zdělení :)

Nahlásit jako SPAM
IP: 89.177.13.–
Ucim se c++
Pouzivam Dev-C++
A bavi me to! :)
Kent0
Stálý člen
13. 8. 2012   #7
-
0
-

To sa mi v budúcnosti zíde .. ďakujem za radu 

Nahlásit jako SPAM
IP: 80.87.210.–
TheOndrap+2
Super člen
13. 8. 2012   #8
-
0
-

Vlákno je označeno za vyřešené ale nikdo ti neporadil a nic jste nevyřešili podle mě

Nahlásit jako SPAM
IP: 213.129.142.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
TheOndrap+2
Super člen
13. 8. 2012   #9
-
+2
-
Zajímavé

Já osobně bych použil pole objektů, v němž každý obj by reprezentoval jeden převod, pokusím se použít nějaký metacode

class PrevodniUnit{

String z;
String do;
Float kurz;

prevodniUnit(Strig z, String do, Float kurz){
	this.z = z;
	this.do = do;
	this.kurz = kurz;
}

float preved (float kolik){
        return kolik*kurz;
}
               

.. to by mohl být objekt, který by reprezentoval jednu měnu, resp převod z-do

následně bych měl pole těchto objektů a podle toho, co by mi uživatel vrátil jako možnost bych volil index přístupu do toho pole. Potom bych už jenom zavolal metodu Převed, vzal si od uživatele počet peněz a metodou PREVED bych vrátil peníze a napsal 

System.out.println("Kurz z "+pole[volba].z+" do "+pole[volba].do+" je = "+pole[volba].kurz);
System.out.println("Kolik chcete prevedst: ");
read(penize);
System.out.println("za "+penize+"pole[volba].z+" Dostanete "+pole[volba].preved(penize)+""+pole[volba].do");

Potom by ten vypis vypadal:

" Kurz z EUR do USD je 0.82 "

" Zadejte kolik chcete prevedst" -> 20

" Za 20 EUR dostane /nevim :)/ USD "

Snad je to dostatečně, jestli si to nepobral uplně, napiš a já z toho zkusím udělat C++ kovej kod

---edit --

ještě mě napadlo, že každý ten objekt by mohl mít těch kurzů víc, abys jich nemusel mít 6, pro každou kombinaci, ale jenom tolik, kolik je měn :)

Nahlásit jako SPAM
IP: 213.129.142.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
Kent0
Stálý člen
13. 8. 2012   #10
-
0
-

aha..no .. jediné čo z toho rozumiem je že si tam definoval triedu..ale inak nič :D

možno po pár ďalších hodinách programovania tomu pochopím :) 

Nahlásit jako SPAM
IP: 80.87.210.–
TheOndrap+2
Super člen
13. 8. 2012   #11
-
0
-

Ok, víš něco o objektově orientovanym programování? třídách atd? Něco jako record v Pascalu nebo struct v C

Nahlásit jako SPAM
IP: 213.129.142.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
Kent0
Stálý člen
13. 8. 2012   #12
-
0
-

no hej..mám knihu "Naučte se C++ za 21 dní" .. síce za 21 dní to nedokážem ale mám na to čas...a tam bola kapitola aj o OOP aj o triedach..pozeral som si to..je to tam pekne vysvetlené .. robím stále programy aby som sa to čo najlepšie naučil :) 

Nahlásit jako SPAM
IP: 80.87.210.–
TheOndrap+2
Super člen
13. 8. 2012   #13
-
0
-

#12 Kent
čeky, tedko hraju dotu, tak za půl hodky se rozepíšu, nebo ráno :D

Nahlásit jako SPAM
IP: 213.129.142.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
Kent0
Stálý člen
13. 8. 2012   #14
-
0
-

má to čas..ja drtím CS 1.6 :)

Nahlásit jako SPAM
IP: 80.87.210.–
TheOndrap+2
Super člen
13. 8. 2012   #15
-
0
-

tak když vytvoříš třídu, která bude mít atributy

String z_meny;

String do_meny;

Float kurz;

... to chápeš, ne?

Nahlásit jako SPAM
IP: 213.129.142.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
Kent0
Stálý člen
13. 8. 2012   #16
-
0
-

ak je String dátový typ tak áno..

Nahlásit jako SPAM
IP: 80.87.210.–
TheOndrap+2
Super člen
13. 8. 2012   #17
-
0
-

#16 Kent
Jj, je to tak

No a tak si vytvorist pole a do kazdeho indexu vlozis tento objekt, přičemž konstruktor bude

PrevodniUnit(z_meny, do_meny, kurz);

pole[1] = new PrevodniUnit("eur", "usd", 1.23);

pole[2] = new PrevodniUnit("usd", "eur", 0.82);

.

.

.

pole[6] = new PrevodniUnit("lib", "usd", 1.56);

.. to pobíráš?

a tu volbu budeš mít stejnou jak máš .. a když se potom dozvíš, jakou volbu ten uživatel zadal, tak budeš moc dát hned pole[volba] a tam hned budeš mít uložený z jaký měny, do jaký měny a jakej je kurz .. a nemusíš proto mít speciální metodu

Nahlásit jako SPAM
IP: 213.129.142.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
Kent0
Stálý člen
13. 8. 2012   #18
-
0
-

Ku kapitole, ktorá hovorí o poli som sa ešte nedostal takže touto cestou to nepôjde :)
ale aj tak Ďakujem za ochotu :)

Nahlásit jako SPAM
IP: 80.87.210.–
TheOndrap+2
Super člen
13. 8. 2012   #19
-
0
-

#18 Kent
:D četl si o OOP a ne o poli? :)

Nahlásit jako SPAM
IP: 213.129.142.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
Kent0
Stálý člen
13. 8. 2012   #20
-
0
-

ja idem podľa tej knihy..a tam pri OOP nie je pole..ale je v inej kapitole..a nechcem skákať kedže sa do toho ešte nejako extra nevyznám :)

Nahlásit jako SPAM
IP: 80.87.210.–
TheOndrap+2
Super člen
13. 8. 2012   #21
-
0
-

#20 Kent
OK...tak odpovídám že to jde udělat jednodušeji :)

A jaký jiný výsledky ti to hází?

Nahlásit jako SPAM
IP: 213.129.142.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
Kent0
Stálý člen
13. 8. 2012   #22
-
0
-

napr. Euro -> Dolar

zadám v programe aj na tej stránke 50 eur..a výsledok na stránke je 61.70 USD..v programe 61.5 USD

nie je to veľký rozdiel..ale rozdiel to je .. a neviem prečo 

Nahlásit jako SPAM
IP: 80.87.210.–
TheOndrap+2
Super člen
14. 8. 2012   #23
-
0
-

počítá tti to OK, mají jiný kurz .. koukni na 100EUR, 1000EUR atd :)

Nahlásit jako SPAM
IP: 213.129.142.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
vitamin+8
Grafoman
14. 8. 2012   #24
-
+1
-
Zajímavé

Kentovy by uplne stacila obycajna funkcia s parametrami:

double Prevod(const std::string &sa, const std::string &sb, double kurz){
	double d;

	std::cout << " 1.00 " << sa << " = " << kurz << " " << sb << std::endl;
	std::cout << " Kolko " << sa << "? ";
	std::cin >> d;
	return  d * kurz;
}

potom by mohol pouzivat:

cout << "vysledok: " << Prevod("EUR", "USD", 1.24) << endl;
cout << "vysledok: " << Prevod("USD", "EUR", 0.8) << endl;
//...

A ak by velmi chcel pouzit polia tak moze urobyt pole objektov bez toho aby musel kazdy objekt dynamicky alokovat:

class Prevod{
	 	 const std::string sa, sb;
	 	 double kurz;
	public:

		Prevod(const std::string &sa, const std::string &sb, double kurz):sa(sa), sb(sb), kurz(kurz){}
		double operator()(){
			double d;

			std::cout << " 1.00 " << sa << " = " << kurz << " " << sb << std::endl;
			std::cout << " Kolko " << sa << "? ";
			std::cin >> d;
			return  d * kurz;
		}
};

int main(void){
	Prevod prevod[] = {
			Prevod("EUR", "USD", 1.24),
			Prevod("USD", "EUR", 0.8)
	};
	
	cout << "vysledok: " << prevod[0]() << endl;
	cout << "vysledok: " << prevod[1]() << endl;
}

Ale to az ked sa lepsie zoznami s triedami :)

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
TheOndrap+2
Super člen
14. 8. 2012   #25
-
0
-

#24 vitamin
Ok, souhlasím. Já jsem se v podstatě tím mým řešením jen zbavil toho switche, takže ta volba je hned indexem do pole. Dál si myslím že to moje je třeba použitelné dál, kdyby zavedl možnost přidávat kurzy. Takže by prostě jenom vložil do toho pole další objekt a při výpisu možností projel celé to pole a dal uživateli na výběr právě z toho co je k dispozici

Nahlásit jako SPAM
IP: 213.129.142.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
Kent0
Stálý člen
14. 8. 2012   #26
-
0
-

to je dobré :)
ďakujem za rady :) 

Nahlásit jako SPAM
IP: 80.87.210.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 38 hostů

Podobná vlákna

Jeden input viac mien — založil Codemaster

C++ prevod z M/s na KM/H — založil defender

C# převod — založil Pavel Suchý

Prevod z VB6 do C# — založil maxpower

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý