Hogy kell keresni const structban?
Adott egy struct ez, abban egy tabla nevezetu, ami 4x4 es tábla. Hogy kell olyan funkciót írni, ami megkeresi, hogy abban a 4x4 mezoben megtalálható-e pl. a B betu? Eddig egyenlore csak az x t tengelyen probalkoztam, s ezt a programot irtam meg:
struct ez ez = {
.tabla = {
{'Z', ' ', 'B', 'D'},
{' ', ' ', ' ', 'R'},
{' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' '}
};
bool is_found(const struct ez ez){
char finish[] = "B";
for(int x=0; x < 4; x++){
if (ez.tabla == finish){
return true;
break;
}
}
return false;
}
de egyáltalán nem mukodik. Hogy lehetne helyesen megírni? Tuti, nagyon rosszul csináltam, mmég kezdo vagyok
elindításnál ezt a hibát dobja ki:
error: comparison of distinct pointer types lacks a cast [-Werror]
if (&game.board == finish){
^





#include <stdio.h>
typedef struct ez_t {
char tabla[4][4];
} az ;
// Returns true, if the character c is found in the array a.
bool is_found(ez_t a, char c) // Amit keresel, azt a paraméterben kell megadni.
{
int x, y;
for(y = 0; y < 4; y++) { // Kétdimenziós tömböt két egybe ágyazott ciklussal kell feldolgozni.
for(x = 0; x < 4; x++) {
if (a.tabla[y][x] == c) { // A tömb elemeinek értékeihez az indexek segítségével lehet hozzáférni.
return true; // Ez a parancs megszakítja a ciklust. Felesleges ide a break parancs is.
}
}
}
return false;
}
int main(int argc, char *argv[])
{
ez_t b =
{
{
{'Z', ' ', 'B', 'D'},
{' ', ' ', ' ', 'R'},
{' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' '}
}
};
bool f = is_found(b, 'B');
if (f) {
printf("Found\n");
} else {
printf("Not found\n");
}
return 0;
}
de még azon is gondolkodtam, hogy valahogy meg lehetne oldani bsearch-el is, csak az a baj, hogy nem tudom pontosan hogy kell megadni benne néhány elemet:
void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
base (vagyis a kezdete - próbáltam a .tabla-t, nem vált be), nmembe (az elemek szama - esetleg ez 16?), valamint a compar -t nem tudtam hogyan megadni
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!