Jos minulla on merkkitaulukko esim.
taul[2], jossa taul[0] = 3 ja taul[1] = B
Miten voin laskea esim. x = taul[0] 3 niin, että
x:n arvoksi tulee 6.
Olen sekaisin. Auttakee....
taul[2], jossa taul[0] = 3 ja taul[1] = B
Miten voin laskea esim. x = taul[0] 3 niin, että
x:n arvoksi tulee 6.
Olen sekaisin. Auttakee....
Vastaukset 5
Vanhimmat
???
int main (void)
{
char taul[] = {3,'B'};
char x = taul[0] 3;
return 0;
}
x:n tyyppi voisi olla int
Olen täyttänyt taulukon näin
scanf("%s", &taul[0]);
vaikutaako tuo %s asiaan? Saan omituisia tuloksia.
%s lukee merkkijonoja, joten %c on parempi, koska se lukee vain yhden merkin.
>Miten voin laskea esim. x = taul[0] 3...
Menee vähän vaikeaksi joten ei ehkä paras tapa käytännön softalle.
Jos se on merkkitaulukko niin sen alkio täytyy tietysti muuttaa numeroksi vaikka näin:
char temppi[2];
temppi[0]=taul[0];
temppi[1]='\0'
int x = atoi(temppi) 3;
tuo atoi() löytyy stdlibistä joten koodin alkuun rivi:
#include
char taul[2] on taulukko jossa elementit ovat merkkejä
int taul[2] on taulukko jossa elementit ovat kokonaislukuja
Koska tietokone "ymmärtää" ainoastaan numeroita, on merkit korvattu numeroilla, katso ASCII-taulukko.
Eli A=65, B=66, C=76 jne. a=97, b=98.. 0=48, 1=49, 2=50...
kirjoitit:
char taul[2], jossa taul[0] = 3 ja taul[1] = B
Miten voin laskea esim. x = taul[0] 3?
taul[0] = merkki 3 eli sen ascii-arvo on 51. Eli tuo lauseke antaa x:lle arvon 51 3=54.
jos lasket x= taul[0] taul[1] saat arvon 51 66=117.
Tuolla aikaisemmin kerrottiin että voit käyttää funktiota atoi() muuttakseen merkki kokonaisluvuksi. Tämä edellyttää että tiedät mitkä solut ovat "lukuja". Tällaiset sekataulukot eivät ole kovin kiitollisia ellei osa käyttää struct jolloin voit lisätä soluun tieto onko kyseessä merkki tai luku.