Hej.
Jeg sidder for tiden og prøver at få et program til at omskrive et numerisk tal til et unsigned binært tal. Programmet er i C.
Dette er tanke til hvordan jeg løser problemet
char * pbin = "01001001";
int i = 0;
int sum = 0;
while(pbin[i] != NULL){
sum += atoi(&pbin[i])*(i+1);
i++;
}
printf("\nSum: %d\n", sum);
Mit problem er bare at pbin[0] jo gerne skulle indholde det første tal (altså 1). Men af en eller anden underlig grund indeholder den hele strengen: "01001001".
Er der nogen der kan gennemskue hvordan jeg løser det her?
pbin[0] er det første tegn i strengen. &pbin[0] er så adressen af det første tegn i strengen. En pointer til en streng er det samme som adressen til det første tegn i strengen. Så
&pbin[0] = pbin. Så først siger du det der svarer til:
atoi("01001001")
Så efterfølgende:
atoi("1001001")
atoi("001001")
atoi("01001")
atoi("1001")
osv..
Eller det hvertfald mit gæt.
Det ser også ud til at du vil gange hver efterfølgende værdi med 1, 2, 4, 8? Er det rigtigt? I så fald er (i+1) ikke det rigtige, siden den vil være 1,2,3,4..9
Indlæg senest redigeret d. 13.12.2010 14:19 af Bruger #14645