Avatar billede shemeri Praktikant
18. oktober 2002 - 19:06 Der er 14 kommentarer og
1 løsning

2 int?!

Er det muligt og læg 2 int ved siden af hinanden altså int 1 og int 2 = 12?! Eller SKAL man konvertere dem til String og læg dem sammen og så konverterer til int igen!!


;)
Avatar billede disky Nybegynder
18. oktober 2002 - 19:12 #1
int tal1=1;
int tal2=2;

int ny = tal1*10 + int2;

nu er ny = 12 :-)
Avatar billede shemeri Praktikant
18. oktober 2002 - 19:19 #2
Hej disky igen,

Ja det virker kun hvis jeg ved hvad er tal1 og tal2 men problemet er at de 2 int er ukendt?! ;-)
Avatar billede arne_v Ekspert
18. oktober 2002 - 19:46 #3
For at generalisere det skal du kende antal cifre
i tal2.

Altså:

      int tal1 = 123;
      int tal2 = 4567;
      int scale = 10;
      while(scale < tal2) scale *= 10;
      int tal = tal1 * scale + tal2;
Avatar billede arne_v Ekspert
18. oktober 2002 - 19:51 #4
Ovenstående bør naturligvis ikke bruges
med negative tal !

:-)
Avatar billede shemeri Praktikant
18. oktober 2002 - 19:51 #5
arme_v hvad så hvis scale > tal2 ?

altså tal1 og tal2 er 2 cifre int!
Avatar billede shemeri Praktikant
18. oktober 2002 - 19:52 #6
tal1 og 2 bliver aldrig negative.
Avatar billede arne_v Ekspert
18. oktober 2002 - 19:55 #7
Spørgsmå ikke forstået.

tal2=2 => scale=10
tal2=17 => scale=100
tal2=831 => scale=1000

Det burde virke med 1,2,3,4,5,6,7,8 cifrede tal.
Avatar billede disky Nybegynder
18. oktober 2002 - 20:19 #8
prøv med: skulle være generisk, er dog ikke testet


int tal1=1234; //eller noget andet
int tal2=345; //eller andet

float temp=tal2;
while(temp>0)
{
  tal1*=10; //lav plads til 1 ciffer
  temp/=10; //ryk et siffer ned
}
int resultat=tal1+tal2;
Avatar billede arne_v Ekspert
18. oktober 2002 - 20:26 #9
Disky - det bør virke hvis temp er int, men ikke
når temp er float.

123 / 10 = 12.3
12.3 / 10 = 1.23
1.23 / 10 = 0.123
0.123 / 10 = 0.0123

Det varer meget længe inden den bliver 0 !
Avatar billede shemeri Praktikant
18. oktober 2002 - 20:28 #10
jeg vender tilbage lige snart jeg prøver koden inat.
Avatar billede disky Nybegynder
18. oktober 2002 - 21:33 #11
Hmmm, jeg kan ikke huske hvorfor jeg valgte float:

Denne her virker, har lige prøvet med forskellige sæt tal.

p.s. husk at int har en begrænsning, brug evt. long eller BigInt

        int tal1=1234; //eller noget andet
        int tal2=1; //eller andet
       
        int temp=tal2;
        while(temp>0)
        {
            tal1*=10; //lav plads til 1 ciffer
            temp/=10; //ryk et siffer ned
        }
        int resultat=tal1+tal2;
Avatar billede shemeri Praktikant
21. oktober 2002 - 14:25 #12
yeah disky det virker men kan skriv lidt forklaring på hvad *= og /= betyder?! ellers virker det :-)
Avatar billede disky Nybegynder
21. oktober 2002 - 14:42 #13
tal1*=10 er den korte udgave af tal1=tal1*10  altså jeg ganger indholdet af variable tal1 med 10

temp/=10 er den korte udgave af temp=temp/10 altså jeg dividerer værdien af variablen temp med 10
Avatar billede shemeri Praktikant
21. oktober 2002 - 14:50 #14
tak...
Avatar billede arne_v Ekspert
21. oktober 2002 - 14:59 #15
Min løsning kræver kun 1 division per gennemløb ikke
1 multiplikation + 1 division per gennemløb.
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