C++ - incializace
- acerr
- Začátečník

-
- Registrován: 19. dub 2012
Re: C++ - incializace
Ještě dotaz: lze u c++ udělat aby to při zadávání des.čísla bralo des. čárku místo tečky? popřípadě jak na to?
- Exp
- Začátečník

-
- Registrován: 24. črc 2004
- Bydliště: Tábor
- Kontaktovat uživatele:
Re: C++ - incializace
Nahradit čárku za tečku překvapivě 
- acerr
- Začátečník

-
- Registrován: 19. dub 2012
Re: C++ - incializace
ale jak? v kodu jak to udělám aby to bralo? třeba v čísle 3,88 abych nemusel psát 3.88?
- Exp
- Začátečník

-
- Registrován: 24. črc 2004
- Bydliště: Tábor
- Kontaktovat uživatele:
Re: C++ - incializace
Určitě existuje víc řešení, mě jako jednoduchý napadá brát vstup jako string, ten analyzovat a potom ho přetypovat. Pokud bys to chtěl ošetřit komplexně, nevyhneš se regulárním výrazům. Pokud to pojmeš jednoduše, pak třeba tvůj případ "pokud string obsahuje čárku, přepiš čárku na tečku, výsledek převeď na double".
- acerr
- Začátečník

-
- Registrován: 19. dub 2012
Re: C++ - incializace
a jak to analyzuju a přetypuju? - nemám s tím zkušenost
- Exp
- Začátečník

-
- Registrován: 24. črc 2004
- Bydliště: Tábor
- Kontaktovat uživatele:
Re: C++ - incializace
Céčko neznám, musíš si to najít v dokumentaci. V Javě to může vypadat např. takhle:
Kód: Vybrat vše
String input = "3,88";
//procházím celej string znak po znaku
for(int i = 0; i < input.length(); i++) {
//pokud je zkoumaný znak čárka
if(input.substring(i, i+1).equals(",")) {
//předpokládám, že tedy input bude typu double - nahradím čárku za tečku
input = input.replace(",", ".");
//vrátím přetypovaný výsledek
return Double.parseDouble(input);
}
}
Naposledy upravil(a) Exp dne sob 8. pro 2012, 11:04, celkem upraveno 1 x.
- acerr
- Začátečník

-
- Registrován: 19. dub 2012
Re: C++ - incializace
tak to nebude začátečnický kód
proto sem to nevymyslel - polovinu fcí neznám, jakou knihovnu mám vložit? jen <string>?
- Exp
- Začátečník

-
- Registrován: 24. črc 2004
- Bydliště: Tábor
- Kontaktovat uživatele:
Re: C++ - incializace
Říkám, tohle je kód v Javě, v céčku bude jinej, proto ty funkce ani znát nebudeš (tedy rozhodně ne pod těmito názvy
). A ještě jednou, céčko neznám, musíš si to najít. Nicméně kód jsem ti okomentoval, neměl by být problém najít ekvivalentní funkce v céčku - forcyklus předpokládám znáš, pak potřebuješ substring, porovnání stringů (dost možná obyčejně pomocí operátoru ==), nahrazení znaku v řetězci a funkci pro přetypování řetězce na double.
- nou
- Začátečník

-
- Registrován: 11. pro 2009
Re: C++ - incializace
Kód: Vybrat vše
#include <iostream>
#include <locale>
#include <fstream>
using namespace std;
class WithComma: public numpunct<char> // class for decimal numbers with comma
{
protected: char do_decimal_point() const { return ','; } // override the function that gives the decimal separator
};
int main()
{
locale myloc( locale(), // C++ default locale
new WithComma);// Own numeric facet
double n;
cin.imbue(myloc);
while (!cin.eof())
{
cin >> n;
cout << n << '\n';
}
return 0;
}- acerr
- Začátečník

-
- Registrován: 19. dub 2012
Re: C++ - incializace
nešlo by dodat české popisky a vysvětlení fcí?
- nou
- Začátečník

-
- Registrován: 11. pro 2009
Re: C++ - incializace
tu vytvoris triedu urcujucu tvoje lokalne nastavenia. v tomto pripade teda aky znak predstavuje desatinna ciarka.
vytvoris objekt lokalnych nastaveni. ako zaklad sa zoberie standartne a pridas k tomu svoje specificke.
ta metoda imbue() je pouzitelna na akykolvek vstupny alebo vystupny prud. teda cin, cout, alebo fstream subor. ak ho pouzijes na cout tak zacne vypisovat desatinne cisla s ciarkou.
Kód: Vybrat vše
class WithComma: public numpunct<char> // class for decimal numbers with comma
{
protected: char do_decimal_point() const { return ','; } // override the function that gives the decimal separator
};Kód: Vybrat vše
locale myloc( locale(), // C++ default locale
new WithComma);// Own numeric facet
cin.imbue(myloc); //nastavis aby cin pouzival dane locale