Permalänk
Medlem

2 Problem [c++]

1. Lite kod:

int len = strlen(name); int s = 0; for(int i = 0; i < len; i++) s += int(name[i]); s *= len; ...

Låt säga att s har värdet 12345, det jag vill göra är att ta den första siffran dvs. '1' ur det värdet och använda. Hur?

2. Jag har en variabel av typen char. Jag tycker in ett antal siffror i den. Nu jag vill ha siffrorna ur den.. till en int variabel. Jag vill inte ha ACSII-värdena (int(test[0], 1, 2), utan siffrorna.

char *test; cin >> test; //matar in 123

Tack!

Visa signatur

Linux är inget operativsystem.
http://www.gnu.org/gnu/linux-and-gnu.html

Permalänk
Medlem

1: Metod 1 är att göra om int -> sträng (med itoa/sprintf/std::stringstream). Metod 2 är division och modulo: Ex. 12345 % 10 = 5. 12345 / 10 = 1234. Alltså /10 tar bort sista siffran, %10 ger värdet på sista siffran.

2: För att konvertera c-sträng -> int så använd atoi() eller std::stringstream.

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Sunray
1: Metod 1 är att göra om int -> sträng (med itoa/sprintf/std::stringstream). Metod 2 är division och modulo: Ex. 12345 % 10 = 5. 12345 / 10 = 1234. Alltså /10 tar bort sista siffran, %10 ger värdet på sista siffran.

2: För att konvertera c-sträng -> int så använd atoi() eller std::stringstream.

Jag har försökt med itoa() och atoi() men jag får inte rätt på det... och std:stringstream är jag inte så insatt i. Men då är det väl bara att läsa på!

Visa signatur

Linux är inget operativsystem.
http://www.gnu.org/gnu/linux-and-gnu.html

Permalänk
Medlem

'5' - '0' = 5
test[0] - '0' blir alltså det vanliga tal inte ascii värdet...

Visa signatur

"Anyone who puts a small gloss on a fundamental technology, calls it proprietary, and then tries to keep others from building on it, is a thief."
-Tim O'Reilly "http://iiice.net/~ice/stuff/secret_msg.wav" - who?

Permalänk
Medlem

På detta vis får du varje siffra i varsin variabel:

var5=1234;

var1 = var5 / 1000;
var2 = (var5 - var1 * 1000) / 100;
var3 = (var5 - var1 * 1000 - var2 * 100) / 10;
var4 = var5 - var1 * 1000 - var2 * 100 - var3 * 10;

Visa signatur

#elektronik@quakenet

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Båtsman
På detta vis får du varje siffra i varsin variabel:

var5=1234;

var1 = var5 / 1000;
var2 = (var5 - var1 * 1000) / 100;
var3 = (var5 - var1 * 1000 - var2 * 100) / 10;
var4 = var5 - var1 * 1000 - var2 * 100 - var3 * 10;

Tackar... ska ta en titt på det.

Visa signatur

Linux är inget operativsystem.
http://www.gnu.org/gnu/linux-and-gnu.html