Kako računati s brojem unesenim kao string?

poruka: 10
|
čitano: 2.522
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
6 godina
neaktivan
offline
Kako računati s brojem unesenim kao string?

ovako, unesen je niz znakova koji uključuje i brojeve.

 

Nakon što sam uklonio iz niza sve osim brojeva, (recimo uneseni string je bio "a12cd7#4",  nakon izbacivanja imam string "1274")

traži se da računam s brojem koji je ostao u stringu kao s običnim brojem - evo npr. odrediti je li broj paran.

 

Kako dobijeni string mogu koristiti kao broj?

Traži se najjednostavnije rješenje, znači bez korištenja nekih naprednih funkcija koje početnik vjerojatno ne zna

Da li se mora s nekim posebnim funkcijama kao stringstream ili atoi, ili ima neki jednostavniji način/naredba?

 

Hvala na odgovorima i pozdrav!

 

 

#include <iostream>
#include <string>
using namespace std;

int main()
{
   string str1;
   getline (cin, str1);
   
   if (str1%2==0)  // ovdje naravno javlja grešku
   cout<< "paran je" >>endl;
   else
   cout<< "nije paran" >>endl;
}

 
0 0 hvala 0
12 godina
offline
Kako računati s brojem unesenim kao string?

Može se ovako ako želiš nešto svoje ubaciti umjesto korištenja standardnog liba.

0100011001000001010100000010000000110100001000000100110001001001010001100100010100100001
Poruka je uređivana zadnji put ned 9.9.2018 23:52 (pr0n_addict).
Moj PC  
0 0 hvala 0
6 godina
neaktivan
offline
Re: Kako računati s brojem unesenim kao string?
pr0n_addict kaže...

Može se ovako ako želiš nešto svoje ubaciti umjesto korištenja standardnog liba.

može pojašnjenje koda funkcije u komentarima?

 

 

int str_to_int (char *str);

int main()
{
    int num = str_to_int ("666");

    printf ("string to integer: %d\n", num);

    return EXIT_SUCCESS;
}

int str_to_int (char *str// zašto je *str, to je kao pokazivač?
{
    int len = strlen (str); 
    int num = 0;
   
    for (int i = 0; i < len; ++i) 
    {
        num *= 10;             // razumijem što radi petlja ali ne razumijem zašto
        num += str[i] - '0';  // kako ide ova aritmetika pretvaranja str u int? nešto sa ASCII šifrom ili kako?
    }
   
    return num;
}

 

 

 

zašto ne radi kad se ubaci cout umjesti printf ?  http://cpp.sh/7si74

(navikao sam raditi c++ sa cout<< i cin>>)

 

 

Poruka je uređivana zadnji put pon 10.9.2018 19:40 (Tomo22).
7 godina
neaktivan
offline
Re: Kako računati s brojem unesenim kao string?
Zato jer je string niz charova, pa umjesto da se prosljeđuje cijeli niz prosljedi se samo prva adresa. Tako je mem. efikasnije i brže.

Jedinice, desetice, stotice ućio si u drugom razredu osnovne škole. Idući broj u nizu pomnožiš s 10 i dodaš sumi. Svako decimalno mjesto je teže za 10 od prethodnog.
U ascii tablici brojevi počinju od 60. Npr 5 char - 0 char je isto kao 65 int- 60 int. Rezultat je 5 kojeg možeš kastati u int.
10 godina
offline
Re: Kako računati s brojem unesenim kao string?
Jedno glupo pitanje, zasto se mucis i translatiras to u broj pa dijelis sa dva? Uzmi zadnji znak i ako je jednak 2,4,6,8 i 0 ako nije jednoznamnekasti onda je paran.
 
0 0 hvala 0
6 godina
neaktivan
offline
Re: Kako računati s brojem unesenim kao string?
Ivan35 kaže...
Jedno glupo pitanje, zasto se mucis i translatiras to u broj pa dijelis sa dva? Uzmi zadnji znak i ako je jednak 2,4,6,8 i 0 ako nije jednoznamnekasti onda je paran.

 ma to sam samo stavio glup primjer, cilj je da se sa brojem unjesenim mogu raditi računske operacije - cb. dijeljenje, ostatak kod dijeljenja, množenje i dr

6 godina
neaktivan
offline
Re: Kako računati s brojem unesenim kao string?
andrijam kaže...
Zato jer je string niz charova, pa umjesto da se prosljeđuje cijeli niz prosljedi se samo prva adresa. Tako je mem. efikasnije i brže.

Jedinice, desetice, stotice ućio si u drugom razredu osnovne škole. Idući broj u nizu pomnožiš s 10 i dodaš sumi. Svako decimalno mjesto je teže za 10 od prethodnog.
U ascii tablici brojevi počinju od 60. Npr 5 char - 0 char je isto kao 65 int- 60 int. Rezultat je 5 kojeg možeš kastati u int.

ok tnx.

 

Postoji li i osim ovog ručnog načina neka gotova funkcija koja ovo automatski prebacuje u integer (odnosno koja se preporuča za ovakve slučajeve) i kako je ubaciti?

Poruka je uređivana zadnji put sri 12.9.2018 16:28 (Tomo22).
7 godina
neaktivan
offline
Re: Kako računati s brojem unesenim kao string?
Pa pada mi napamet sscan i atoi.
10 godina
neaktivan
offline
Kako računati s brojem unesenim kao string?

Nisam siguran ali znam da pythonu postoji fukncija int() koja pretvara string u broj.

Sad ne znam ima li tako nesto za C.

 
0 0 hvala 0
6 godina
neaktivan
offline
Re: Kako računati s brojem unesenim kao string?

riješio sam taj problem, ovo je ono što mi je trebalo pa ako još kome zatreba:

 

https://en.cppreference.com/w/cpp/string/basic_string/stol

 

#include <iostream>
#include <string>
 
int main()
{
    std::string str1 = "45";
    std::string str2 = "3.14159";
    std::string str3 = "31337 with words";
 
    int myint1 = std::stoi(str1);
    int myint2 = std::stoi(str2);
    int myint3 = std::stoi(str3);
 
    std::cout << "std::stoi(\"" << str1 << "\") is " << myint1 << '\n';
    std::cout << "std::stoi(\"" << str2 << "\") is " << myint2 << '\n';
    std::cout << "std::stoi(\"" << str3 << "\") is " << myint3 << '\n';
}

 

 

OUTPUT

 

std::stoi("45") is 45

std::stoi("3.14159") is 3

std::stoi("31337 with words") is 31337

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice