03. marts 2007 - 11:57Der er
32 kommentarer og 1 løsning
far char til int
hvis jeg har 2 char variabler som skulle indeholde tallene 3 & 4 men istedet indeholder 51 og 52.. hvad gør jeg så? :S
altså jeg har en som hedder left og en der hedder right... hvis jeg laver en printf("left: %c %d right %c %d", left,left,right,right); så skriver den left: 3 51 right: 4 52
og de tal skal så regnes ud... men hvis jeg bare skriver: calc = left * right; printf("calc: %c %d", calc, calc);
så skriver den gange:\ 2652
dvs den gange 51*52 men det er ikke det jeg skal bruge.. den skulle gerne skrive 12...
jeg har fået det til at virke nu ved at lave 2 variabler mere (left1, right1) og skrive: left1 = left - '0'; right1 = right - '0'; men er der ikke en anden måde og gøre det på for ser lidt rodet ud og have de stående?
det duer ikke... kan man evt udregne dem i en char? altså lige nu har jeg jo calc til at være en int.... men efter den har regnet left * right ud, skal jeg bruge den som en char fordi resultatet skal puttes ind i en char string
altså svaret bliver jo 12 hvis mange udskriver calc som %d men hvis man skriver den som %c så giver den et symbol... og jeg kan jo ikke sige symbol + '0'... nej den skal bare til en enkelt char, da den bagefter bliver lagt ind i toppen af stacken...
altså hvis man siger calc + '0' giver det jo 60... og 60 i ascii tabellen er < men der findes jo heller ikke noget ascii værdi for 2cifrede tal? så man må skulle gøre det på en anden måde...
kommer 1 så ikke til at være buf[0] og 2til at være buf[1] og 3 til at være buf[2]? hvordan kan den så kende forskel på om det kun er et enkelt tal eller et flercifret tal?
hvis vi siger vi vil udregne 3*4-2 giver det i postfix 34*2-... jeg har nu fået den til at smide 3 og 4 ind i stacken og bagefter ud på højre og venstre side af * tegnet... det giver så 12 som skal ind i stacken igen... men i stacken er der jo også et 2-tal dvs når jeg smider 12 ind i stacken vil 2 være stack[0] og 12 vil blive delt på stack[1] og stack [2]?
det undre mig nemlig lidt hvordan den kan holde styr på et regnestykke med flercifrede tal... f.eks. 23*65-21 det må jo hedde 2365*21- i postfix... hvordan kan den vide om det er 23 * 65 og ikke 2 * 365 eller 236 * 5?
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.