Kezdőoldal » Számítástechnika » Programozás » Tömbfeltöltés speciális...

Tömbfeltöltés speciális karakterekkel. Mi a hiba?

Figyelt kérdés

Sziasztok! Az a feladatom, hogy töltsek fel egy tömböt olyan karakterekkel, amelyeknek az első és a negyedik bitjeik nem egyeznek meg. Amit erre írtam:


#include <stdio.h>

#include <stdlib.h>



char cbe()

{

char s[99];

gets(s);

return s[0];

}



void beker(char *a)

{

int i=0, maszk=0b1010;

char c;

printf("Toltse fel a 15 elemu tombot.\n");

while(i<15)

{

printf("%d. karakter: ", i+1);

cbe(c);

if(c & maszk == 0)

{

*(a+i)=c;

i++;

}

else

{

printf("Nem megfelelo karakter.\n");

}

}

}



int main()

{

char tomb[15];

beker(tomb);

return 0;

}


akármilyen karaktert ütök be, az else függvény fut le.. valami a maszkolás környékén lehet rossz, de nem tudok rájönni a megoldásra.. Valaki hozzáértő átfutná, hogy mi a hiba, és ötletelne egy keveset, hogy hogyan oldaná meg? Köszi előre is!



2013. máj. 14. 01:02
 1/3 zsomkovacs ***** válasza:
Nem tudom, honnan indexelitek a biteket, de a maszk mindenképpen rossz. Ha 0-tól indexeltek, akkor az 1. és 3., ha 1-től, akkor a 2. és 4. bit van megadva. A c&maszk kifejezés értéke akkor 0, ha a maszkban szereplő 1-ek helyén 0 áll a c-ben, ez nagyon nem az, ami kell neked. A feltétel helyesen: ((c&maszk!=maszk) && (c&maszk>0)). Lehet, hogy egyszerűbben is megoldható. Ez akkor igaz, ha a karakter megfelelő bitjein nem áll mindkét helyen 1 (különben c&maszk értéke maszk lenne), és ugyanezeken a biteken nem áll mindkét helyen 0 (különben c&maszk is 0 lenne).
2013. máj. 14. 08:01
Hasznos számodra ez a válasz?
 2/3 iostream ***** válasza:

char ch; //bekérsz ebbe valamit

char maszk1 = 1 << 0;

char maszk2 = 1 << 3

if ((ch & maszk1) ^ (ch & maszk2))

{

//1. és 4. bitje nem egyezik meg

}

2013. máj. 14. 11:14
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:
Valóban hülyeséget írtam, az első és a harmadik bitre gondoltam. Kösz szépen a segítséget, megoldódott a dolog, a bitenkénti kizáró vagy operátorról pedig teljesen megfeledkeztem, pedig valóban leegyszerűsíti a dolgot ha két maszkot deklarál az ember.. Mennek a zöldek.
2013. máj. 14. 12:17

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!