Pereiti prie turinio

C++ skaicius is stringo


Rekomenduojami pranešimai

void IeskotiSkaiciu(string e)

{

string sk("0123456789");

string s(" /?.,()"); // skyrikliai

int zpr = 0, zpb = 0; //zpr - zodzio pradzia, zpb - zodzio pabaiga,

string zodis("");

int SK = 0;

zpr = e.find_first_not_of(s, zpb);

while (zpr != -1)

{

zpb = e.find_first_of(s, zpr);

zodis = e.substr(zpr, zpb - zpr);

SK = zodis.find_first_not_of(sk, 0); // jei zodyje nera raidziu, vadinasi jis yra skaicius

if (SK == -1)

{

cout << " Skaicius rastas - " << zodis;

}

zpr = e.find_first_not_of(s, zpb);

}

}

 

Manau, esme supratai ;)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

void IeskotiSkaiciu(string e)

{

string sk("0123456789");

string s(" /?.,()"); // skyrikliai

int zpr = 0, zpb = 0; //zpr - zodzio pradzia, zpb - zodzio pabaiga,

string zodis("");

int SK = 0;

zpr = e.find_first_not_of(s, zpb);

while (zpr != -1)

{

zpb = e.find_first_of(s, zpr);

zodis = e.substr(zpr, zpb - zpr);

SK = zodis.find_first_not_of(sk, 0); // jei zodyje nera raidziu, vadinasi jis yra skaicius

if (SK == -1)

{

cout << " Skaicius rastas - " << zodis;

}

zpr = e.find_first_not_of(s, zpb);

}

}

 

Manau, esme supratai ;)

Labai dekui ;) kiek permeciau akimis tai Jus cia po viena zodi sakidotes visaeilute?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveikas, dar ir aš pateiksiu galimą ir trumpą variantą.

 

bool is_numeric(string eil)
{
   bool numeric = true;

   for (unsigned i = 0; i < eil.length(); ++i)
   {
       if ((int)eil[i] > 57 || (int)eil[i] < 48)
       {
           numeric = false;
           break;
       }
   }

   return numeric;
}

int main()
{
   ifstream ifs("ts.txt");

   string x;

   while (ifs >> x)
   {
       if (is_numeric(x))
       {
           cout << x << endl;
       }
   }

   ifs.close();

   return 0;
}

Redagavo g3dut1s
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dekui, bet tavo algoritmo as tikrai nesupratau :). Bijau kad kol kas per sudetingas jis man.

 

Sudėtinga taip nėra:

 

Čia skaito žodžius atskirai iki tarpo kol nepasiekė failo pabaigos:

while (ifs >> x)

 

Perduoda nuskaitytą žodį į funkciją:

if (is_numeric(x))

 

Funkcijoje:

bool is_numeric(string eil)
{
   // Galvojam, kad nurodytas žodis "eil" yra skaičius.
   bool numeric = true;

   // Vykdo ciklą iki žodžio pabaigos
   for (unsigned i = 0; i < eil.length(); ++i)
   {
       // eil[i] - žodžio raidė.
       // (int)eil[i] - skaičius, arba žodžio raidės atitikmuo ASCII lentelėje.

       // Skaičiai nuo 0 iki 9, ASCII lentelėje patenka į intervalą nuo
       // 48 iki 57 imtinai.

       // Tikrina, ar žodžio raidės atitikmuo lentelėje patenka į skaičių
       // intervalą.
       if ((int)eil[i] > 57 || (int)eil[i] < 48)
       {
           // Surado simbolį, kuris nėra skaičius, todėl nutraukia ciklą ir grąžina
           // false, nes tai nėra skaičius.
           numeric = false;
           break;
       }
   }

   return numeric;
}

 

Įvykdęs šį kodą pamatysi, kokie simboliai atitinka tam tikrus skaičius ASCII lentelėje:

for (unsigned i = 0; i < 128; ++i)
{
   cout << i << " " << (char) i << endl;
}

 

Nežinau gal bus aiškiau.

Redagavo g3dut1s
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...