Avatar billede sunep Nybegynder
12. april 2003 - 13:59 Der er 12 kommentarer og
1 løsning

finde tegn i variabel

jeg vil gerne vide hvilke filer jeg skal include og hvilken funktion jeg skal bruge for finde ud af hvad feks. det 3 tal i en int variabel er

så hvis int a = 1653134; og jeg skal finde ud af hvad det 3 tegn er så får jeg returneret 5
Avatar billede arne_v Ekspert
12. april 2003 - 14:05 #1
int scale[] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000 };

int v = 1653134;

int digit3 = (v / scale[(int)log10(v) - 2]) % 10;

burde gøre det !
Avatar billede arne_v Ekspert
12. april 2003 - 14:06 #2
Der skal inkluderes math.h for at have log10.
Avatar billede arne_v Ekspert
12. april 2003 - 14:08 #3
Og hvis compilerne brokker sig over log10, så brug:

int digit3 = (v / scale[(int)log10((double)v) - 2]) % 10;
Avatar billede sunep Nybegynder
12. april 2003 - 14:11 #4
jeg får bare E2109 not allowed
Avatar billede arne_v Ekspert
12. april 2003 - 14:14 #5
På hvad ?
Avatar billede arne_v Ekspert
12. april 2003 - 14:14 #6
Altså hvilken linie ?

Og hvilken compiler bruger du ?
Avatar billede arne_v Ekspert
12. april 2003 - 14:15 #7
#include <iostream>

#include <math.h>

using namespace std;

int main()
{
  int scale[] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000 };
  int v = 1653134;
  int digit3 = (v / scale[(int)log10((double)v) - 2]) % 10;
  cout << digit3 << endl;
}

compiler og kører som forventet hos mig.
Avatar billede sunep Nybegynder
12. april 2003 - 14:16 #8
borland c++ builder

og den her linie fejler

ShowMessage((123 / scale[(int)log10((double)123) - 2]) % 10);
Avatar billede sunep Nybegynder
12. april 2003 - 14:18 #9
hey nu virker den sorry
Avatar billede sunep Nybegynder
12. april 2003 - 14:20 #10
men kunne du ikke være flink og lige forklare den linie lidt nærmere
det er nu sjovere når man forstår det ellers lærer man det squ aldrig

(v / scale[(int)log10((double)v) - 2]) % 10

bare det der
Avatar billede arne_v Ekspert
12. april 2003 - 14:24 #11
log10(v) returnerer 10 tals logaritmen af v - log10(1653134) er 6.et-eller-andet
(int) trunkerer til integer - (int)6.et-eller-andet er 6
scale[6-2] = scale[4] = 10000
1653134/10000 = 165
165%10 = 5
Avatar billede arne_v Ekspert
12. april 2003 - 14:25 #12
pointen er at der er en sammenhæng mellem log10(v) og antal cifre i v.
Avatar billede sunep Nybegynder
12. april 2003 - 14:27 #13
ok takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester