Oprettet lør. d. 03. marts 2007 kl. 11:57:26

menthos
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

menthos
menthos (12.300 point)
mente self ikke gange.. den skrev calc:\ 2652

Skrevet lør. d. 03. marts 2007 kl. 12:37:45| #2

menthos
menthos (12.300 point)
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

thedarkrider
thedarkrider (21.390 point)
calc = (int)left * (int)right;
Prøv det

Skrevet lør. d. 03. marts 2007 kl. 12:50:31| #4

menthos
menthos (12.300 point)
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

arne_v
arne_v (1.016.169 point)
den subtraktion er helt fin

Skrevet lør. d. 03. marts 2007 kl. 16:05:33| #6

menthos
menthos (12.300 point)
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

arne_v
arne_v (1.016.169 point)
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

arne_v
arne_v (1.016.169 point)
men skal du ikke ksifte fra enkelt char til strenge (char array) ??

Skrevet lør. d. 03. marts 2007 kl. 18:07:36| #9

menthos
menthos (12.300 point)
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

menthos
menthos (12.300 point)
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

arne_v
arne_v (1.016.169 point)
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

menthos
menthos (12.300 point)
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

arne_v
arne_v (1.016.169 point)
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

menthos
menthos (12.300 point)
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

arne_v
arne_v (1.016.169 point)
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

arne_v
arne_v (1.016.169 point)
jeg ville nok opbevare tallene i et array af int

Skrevet søn. d. 04. marts 2007 kl. 22:27:10| #17

menthos
menthos (12.300 point)
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

menthos
menthos (12.300 point)
jeg troede bare at \0 kun var i slutningen af hele stringen?

Skrevet søn. d. 04. marts 2007 kl. 22:30:39| #19

menthos
menthos (12.300 point)
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

arne_v
arne_v (1.016.169 point)
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

arne_v
arne_v (1.016.169 point)
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

arne_v
arne_v (1.016.169 point)
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

menthos
menthos (12.300 point)
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

menthos
menthos (12.300 point)
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

arne_v
arne_v (1.016.169 point)
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

menthos
menthos (12.300 point)
hmm.... hvordan skulle det så fungere?

Skrevet søn. d. 04. marts 2007 kl. 23:12:40| #27

arne_v
arne_v (1.016.169 point)
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

arne_v
arne_v (1.016.169 point)
type kan f.eks. laves som enum i C

Skrevet søn. d. 04. marts 2007 kl. 23:40:48| #29

menthos
menthos (12.300 point)
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

arne_v
arne_v (1.016.169 point)
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

arne_v
arne_v (1.016.169 point)
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

menthos
menthos (12.300 point)
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


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Updater Hybrid App

Oprettet den 18. april 2012 kl. 13.29
sir_madsen giver 100 point for svar | Giv et svar »

Ansi-c win32API - kan ikke oprette Richedit4.1 kontrol

Oprettet den 16. april 2012 kl. 22.13
cblcbl giver 60 point for svar | Giv et svar »

Iphone Objective C - Sætte image på et imageview.

Oprettet den 7. april 2012 kl. 11.36
lasserasch giver 30 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger