menthos
(12.300 point. Point ude: 200)
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...
Skrevet lør. d. 03. marts 2007 kl. 11:58:11| #1
mente self ikke gange.. den skrev calc:\ 2652
Skrevet lør. d. 03. marts 2007 kl. 12:37:45| #2
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?
Skrevet lør. d. 03. marts 2007 kl. 12:40:23| #3
calc = (int)left * (int)right;
Prøv det
Skrevet lør. d. 03. marts 2007 kl. 12:50:31| #4
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
Skrevet lør. d. 03. marts 2007 kl. 15:59:18| #5
den subtraktion er helt fin
Skrevet lør. d. 03. marts 2007 kl. 16:05:33| #6
ja den er fin nok... men efter jeg har regnet det ud skal det ind i en char igen (stack) så calc skal bagefter laves om til char...
Skrevet lør. d. 03. marts 2007 kl. 16:10:42| #7
tilbage fra 4 til 52 er jo bare et spørgsmål om +'0'
Skrevet lør. d. 03. marts 2007 kl. 16:11:10| #8
men skal du ikke ksifte fra enkelt char til strenge (char array) ??
Skrevet lør. d. 03. marts 2007 kl. 18:07:36| #9
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...
Skrevet søn. d. 04. marts 2007 kl. 13:32:23| #10
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...
Skrevet søn. d. 04. marts 2007 kl. 15:15:10| #11
nej - ascii koder er altid kun 1 tegn - derfor du skal skifte til strenge
Skrevet søn. d. 04. marts 2007 kl. 16:43:22| #12
ahhh okay.. jeg troede godt jeg kune have flere tegn i en normal char..
hvordan kommer jeg så fra int til string?
Skrevet søn. d. 04. marts 2007 kl. 20:19:35| #13
der er flere måder
f.eks.
char buf[11];
int v;
v = 123;
sprintf(buf,"%d",v);
Skrevet søn. d. 04. marts 2007 kl. 21:11:44| #14
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?
Skrevet søn. d. 04. marts 2007 kl. 22:24:39| #15
efter
char buf[11];
int v;
v = 123;
sprintf(buf,"%d",v);
vil buf[0]='1' og buf[1]='2' og buf[2]='3' og buf[3]='\0'
Skrevet søn. d. 04. marts 2007 kl. 22:25:26| #16
jeg ville nok opbevare tallene i et array af int
Skrevet søn. d. 04. marts 2007 kl. 22:27:10| #17
dvs hvis man vil sætte 46 ind i buf, kommer den til at ligge på buf[4] buf[5] og så \0 på buf[6]?
så tror jeg at jeg har fattet det :)
Skrevet søn. d. 04. marts 2007 kl. 22:28:57| #18
jeg troede bare at \0 kun var i slutningen af hele stringen?
Skrevet søn. d. 04. marts 2007 kl. 22:30:39| #19
hmm array af int? og hvordan virker det så?
tror ikke jeg har arbejde med array af int før... kan den bruges som stack?
Skrevet søn. d. 04. marts 2007 kl. 22:37:42| #20
nej
46 vil give buf[0]='4' og buf[1]='6' og buf[2]='\0'
Skrevet søn. d. 04. marts 2007 kl. 22:38:05| #21
ja
et array er udmærket til en stack hvis man har en max størrelse
Skrevet søn. d. 04. marts 2007 kl. 22:38:45| #22
ellers hvis du bruger C++ så har STL en stak:
http://www.cppreference.com/ (...)
Skrevet søn. d. 04. marts 2007 kl. 22:42:57| #23
jamen den skal jo indsættes efter 123... så den må enten ligge som jeg skriver ovenfor eller ligge som buf[3]='4' buf[4]='6' buf[5]='\0'...
Skrevet søn. d. 04. marts 2007 kl. 22:44:21| #24
jeg bruger ikke c++ da jeg prøver at lære c ;)
kan der så ligge flercifrede numre i et int array... altså adskilt?
Skrevet søn. d. 04. marts 2007 kl. 22:57:36| #25
jeg tror stadig at to arrays - et array med type (+-*/ og tal) og et array med værdier
er vejen
Skrevet søn. d. 04. marts 2007 kl. 23:06:58| #26
hmm.... hvordan skulle det så fungere?
Skrevet søn. d. 04. marts 2007 kl. 23:12:40| #27
du har to stakke:
type: tal tal * tal -
værdi: 3 4 0 2 0
Skrevet søn. d. 04. marts 2007 kl. 23:12:58| #28
type kan f.eks. laves som enum i C
Skrevet søn. d. 04. marts 2007 kl. 23:40:48| #29
jamen det gør det vel ikke nemmere for den at læse fler cifrede tal?
Skrevet søn. d. 04. marts 2007 kl. 23:52:45| #30
jo
fordi da værdiene gemmes som tal, så gemmer du hele tallet i en værdi
type: tal tal * tal -
værdi: 123 456 0 789 0
Skrevet søn. d. 04. marts 2007 kl. 23:53:19| #31
måske er et array af struct pænere end 2 arrays, men ...
Skrevet søn. d. 04. marts 2007 kl. 23:57:46| #32
hmm okay.. det kan jeg da godt se...
må jeg prøve og lege lidt med så...
bare giv et svar :)
Skrevet søn. d. 04. marts 2007 kl. 23:59:59| #33