Avatar billede menthos Nybegynder
03. marts 2007 - 11:57 Der 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...
Avatar billede menthos Nybegynder
03. marts 2007 - 11:58 #1
mente self ikke gange.. den skrev calc:\ 2652
Avatar billede menthos Nybegynder
03. marts 2007 - 12:37 #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?
Avatar billede thedarkrider Nybegynder
03. marts 2007 - 12:40 #3
calc = (int)left * (int)right;
Prøv det
Avatar billede menthos Nybegynder
03. marts 2007 - 12:50 #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
Avatar billede arne_v Ekspert
03. marts 2007 - 15:59 #5
den subtraktion er helt fin
Avatar billede menthos Nybegynder
03. marts 2007 - 16:05 #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...
Avatar billede arne_v Ekspert
03. marts 2007 - 16:10 #7
tilbage fra 4 til 52 er jo bare et spørgsmål om +'0'
Avatar billede arne_v Ekspert
03. marts 2007 - 16:11 #8
men skal du ikke ksifte fra enkelt char til strenge (char array) ??
Avatar billede menthos Nybegynder
03. marts 2007 - 18:07 #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...
Avatar billede menthos Nybegynder
04. marts 2007 - 13:32 #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...
Avatar billede arne_v Ekspert
04. marts 2007 - 15:15 #11
nej - ascii koder er altid kun 1 tegn - derfor du skal skifte til strenge
Avatar billede menthos Nybegynder
04. marts 2007 - 16:43 #12
ahhh okay.. jeg troede godt jeg kune have flere tegn i en normal char..
hvordan kommer jeg så fra int til string?
Avatar billede arne_v Ekspert
04. marts 2007 - 20:19 #13
der er flere måder

f.eks.

char buf[11];
int v;
v = 123;
sprintf(buf,"%d",v);
Avatar billede menthos Nybegynder
04. marts 2007 - 21:11 #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?
Avatar billede arne_v Ekspert
04. marts 2007 - 22:24 #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'
Avatar billede arne_v Ekspert
04. marts 2007 - 22:25 #16
jeg ville nok opbevare tallene i et array af int
Avatar billede menthos Nybegynder
04. marts 2007 - 22:27 #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 :)
Avatar billede menthos Nybegynder
04. marts 2007 - 22:28 #18
jeg troede bare at \0 kun var i slutningen af hele stringen?
Avatar billede menthos Nybegynder
04. marts 2007 - 22:30 #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?
Avatar billede arne_v Ekspert
04. marts 2007 - 22:37 #20
nej

46 vil give buf[0]='4' og buf[1]='6' og buf[2]='\0'
Avatar billede arne_v Ekspert
04. marts 2007 - 22:38 #21
ja

et array er udmærket til en stack hvis man har en max størrelse
Avatar billede arne_v Ekspert
04. marts 2007 - 22:38 #22
ellers hvis du bruger C++ så har STL en stak:

http://www.cppreference.com/cppstack/index.html
Avatar billede menthos Nybegynder
04. marts 2007 - 22:42 #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'...
Avatar billede menthos Nybegynder
04. marts 2007 - 22:44 #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?
Avatar billede arne_v Ekspert
04. marts 2007 - 22:57 #25
jeg tror stadig at to arrays - et array med type (+-*/ og tal) og et array med værdier
er vejen
Avatar billede menthos Nybegynder
04. marts 2007 - 23:06 #26
hmm.... hvordan skulle det så fungere?
Avatar billede arne_v Ekspert
04. marts 2007 - 23:12 #27
du har to stakke:

type:    tal  tal  *      tal  -
værdi:    3    4    0      2    0
Avatar billede arne_v Ekspert
04. marts 2007 - 23:12 #28
type kan f.eks. laves som enum i C
Avatar billede menthos Nybegynder
04. marts 2007 - 23:40 #29
jamen det gør det vel ikke nemmere for den at læse fler cifrede tal?
Avatar billede arne_v Ekspert
04. marts 2007 - 23:52 #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
Avatar billede arne_v Ekspert
04. marts 2007 - 23:53 #31
måske er et array af struct pænere end 2 arrays, men ...
Avatar billede menthos Nybegynder
04. marts 2007 - 23:57 #32
hmm okay.. det kan jeg da godt se...
må jeg prøve og lege lidt med så...
bare giv et svar :)
Avatar billede arne_v Ekspert
04. marts 2007 - 23:59 #33
ok
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