C++ - incializace

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
acerr
Začátečník
Začátečník
Registrován: 19. dub 2012

Re: C++ - incializace

Příspěvek od acerr »

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
Začátečník
Registrován: 24. črc 2004
Bydliště: Tábor
Kontaktovat uživatele:

Re: C++ - incializace

Příspěvek od Exp »

Nahradit čárku za tečku překvapivě :)
acerr
Začátečník
Začátečník
Registrován: 19. dub 2012

Re: C++ - incializace

Příspěvek od acerr »

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
Začátečník
Registrován: 24. črc 2004
Bydliště: Tábor
Kontaktovat uživatele:

Re: C++ - incializace

Příspěvek od Exp »

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
Začátečník
Registrován: 19. dub 2012

Re: C++ - incializace

Příspěvek od acerr »

a jak to analyzuju a přetypuju? - nemám s tím zkušenost
Exp
Začátečník
Začátečník
Registrován: 24. črc 2004
Bydliště: Tábor
Kontaktovat uživatele:

Re: C++ - incializace

Příspěvek od Exp »

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
Začátečník
Registrován: 19. dub 2012

Re: C++ - incializace

Příspěvek od acerr »

tak to nebude začátečnický kód :-D proto sem to nevymyslel - polovinu fcí neznám, jakou knihovnu mám vložit? jen <string>?
Exp
Začátečník
Začátečník
Registrován: 24. črc 2004
Bydliště: Tábor
Kontaktovat uživatele:

Re: C++ - incializace

Příspěvek od Exp »

Ří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
Začátečník
Registrován: 11. pro 2009

Re: C++ - incializace

Příspěvek od nou »

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
Začátečník
Registrován: 19. dub 2012

Re: C++ - incializace

Příspěvek od acerr »

nešlo by dodat české popisky a vysvětlení fcí?
nou
Začátečník
Začátečník
Registrován: 11. pro 2009

Re: C++ - incializace

Příspěvek od nou »

tu vytvoris triedu urcujucu tvoje lokalne nastavenia. v tomto pripade teda aky znak predstavuje desatinna ciarka.

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
};
vytvoris objekt lokalnych nastaveni. ako zaklad sa zoberie standartne a pridas k tomu svoje specificke.

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
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.
Odpovědět

Zpět na „Programování a web“