Niin, eli millä tavalla oikein saisin c++:ssa yhdistettyä kahden int-muuttujan arvon yhdeksi uudeksi int-muuttujaksi? Esimerkiksi jos minulla on muuttujat int luku1 = 2 ja int luku2 = 2, niin int luku3:sen tulisi olla 22. Miten tuo olisi kätevintä tehdä?
Merkkijonovirroilla onnistuu seuraavasti:
#include <sstream>
#include <string>
#include <iostream>
using namespace std;
int yhdista(int eka, int toka)
{
int kolmas = 0;
ostringstream os;
os << eka << toka;
string tmp = os.str();
istringstream is(tmp);
is >> kolmas;
return kolmas;
}
// esimerkki
int main()
{
int a = 39;
int b = 3;
cout << yhdista(a, b) << endl; // tulostuu "393"
return 0;
}Jos numeroilla haluat leikkiä, niin laskukaava on tälläinen:
luku3 = luku1 * 10Int(log luku2)+1 + luku2
Ja tässä on samaan kaavaan liittyvä ohjelma:
int a = 123, b = 456;
int c;
int k = 10;
while (k <= b) k *= 10;
c = a * k + b;
printf("%i\n", c);Luvut voidaan yhdistää kertomalla a sopivalla kymmenen potenssilla ja lisäämällä tulokseen b. Sopiva kymmenen potenssi löytyy katsomalla, mikä on pienin kymmenen potenssi, joka on b:tä suurempi. Esim. kun a = 123 ja b = 456, pienin b:tä suurempi kymmenen potenssi on 1000 ja 123 * 1000 + 456 = 123456.
Kiitoksia kaikille vastanneille. :)
Voihan sitä myös leikkiä itoa:lla ja atoi:lla =)
C:llä merkkijonovirtoja vastaava menetelmä:
char str[21];
sprintf(str, "%d%d", a, b);
sscanf(str, "%d", &c);
printf("Ja katso, %d%d = %d.\n", a, b, c);Aihe on jo aika vanha, joten et voi enää vastata siihen.