WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   "C" arrays vergeleichen != werte (http://www.wcm.at/forum/showthread.php?t=212186)

Bastet 17.03.2007 15:38

"C" arrays vergeleichen != werte
 
hallo
erst mal eine erklärung zu dem was ich möchte.
reines "C"
eine funktion erstellen die in meinem fall ein schifffeld mit einem spielfeld vergleicht. ich möchte also 2 2-dimensionale arrays vergleichen die aber nicht den selben wert an den selben stellen haben sondern unterschiedliche vorgegebene werte.

ich habe bereits einen code und umgeschrieben allerdings hänge ich bei dem vergleichen der werte, wenn wer eine idee hat wäre ich dankbar^^.

Code:

int A[10][10] ,B[10][10];
int i,j;

  for(i=0; i<=10; i++)
      {
        for (j=0; j<=10, j++)
              {
        if(A[i,j] == B [i,j])      //gleicher wert
          {
              anweisungen
          }
        }

       
if (A[i, j] == '0' && B[i, j] == '1') //verschiedener wert
{
        anweisungen
}


pong 17.03.2007 17:10

Befüllung/Initialisierung der Arrays wäre kein Fehler

Code:

if (A[i, j] == '0' && B[i, j] == '1') //verschiedener wert
Wenn das darstellen so, was ich denke, was du damit meinst, dann frag doch einfach mit "!=" ab, ansonsten gehört ein Oder als Verknüpfungsoperator

pong

Bastet 17.03.2007 18:15

also ich kann mit deinem "nicht" und "oder" nix anfangen :(

ok. es geht eigentlich darum ein schiffe versenken programm zu erstellen. es ist eine projektarbeit. einer macht ne funktion zur initialisierung der 2 arrays einer macht den ablauf, etc. meine aufgabe ist es eigentlich den trefferscore zu aktualisieren und bei versenken des schiffes eine ausgabe zu tätigen.
ich habe ein struct mit schiffsnummer, schiffswert,score. wenn also im array A ein schiffswert gefunden wird und im array B ein treffer auf diesem feld ist so soll er im struct eingetragen werden.

irgendwie hab ich aber probleme nur mit formel zum vergleichen des feldes mit verschiedenen werten.

die logik von mir dabei wäre eben:

if (A[i, j] == '0' && B[i, j] == '1') // 1.schiff

if (A[i, j] == '1' && B[i, j] == '1') // 2.schiff

if (A[i, j] == '2' && B[i, j] == '1') // 3.schiff

wenn in A koord x,y der wert '0' ist und in B koord x,y der wert '1' ist dann greife auf struct zu und lese-schreibe score.

pong 17.03.2007 20:56

Zitat:

funktion zur initialisierung der 2 arrays
und diese wäre ganz vernünftig zu kennen, wie was wann mit welchen Werten befüllt ist

An sich brauchst ja nur eine struct Definition, welche Spielerseite, eine Schalter Variable für den versenkt-Status und Anfangs und Endkoordiante des Schiffes beinhaltet. Im Programm hast ein Array für jede Spielerseite welche das komplette Spielfeld darstellt und in welchemst den Status des Feldes (verwendet oder nicht) speicherst. Bei einem Schuss von Spieler A , rennst das Array durch, ob das Feld nicht schon beschossen und im Falle dessen, lässt einen weiteren Schuss zu, wenn nicht beschossen, suchst dir in deiner Liste raus, obs ein Schiff ist und setzt im Falle eines Treffers den passenden Wert ins Array, ratterst mit einer Schleife von Anfangs bis Ende-koordiante das Array durch, wenns lauter Treffer waren, ist das Schiff versenkt und aktualierst das Ganze im Struct... voila... ein komplettes Schiffeversenken

pong

Bastet 17.03.2007 21:37

ich befürchte wir 2 reden absolut aneinander vorbei :(

das einzige was ich wissen möchte ist die syntax ein array zu vergleichen mit einem wert den ich vorgebe.


if(A[i,j] == B [i,j])

bedeutet eben wenn beide inhalte der arrays gleich sind - ich möchte aber nicht das die werte gleich sind oder ungleich sondern ich möchte direkt dort einen wert angeben. also wenn der wert A=5 und der wert B=1 ist, aber die syntax dazu ist mir eben unklar.

flocky 17.03.2007 21:49

Zitat:

Original geschrieben von Bastet
also wenn der wert A=5 und der wert B=1 ist, aber die syntax dazu ist mir eben unklar.
if (A[i, j] == '5' && B[i, j] == '1')

also wenns das nicht is was du suchst dann versteh ich überhaupt nix mehr ;)

Bastet 18.03.2007 07:57

Zitat:

Original geschrieben von flocky
if (A[i, j] == '5' && B[i, j] == '1')

also wenns das nicht is was du suchst dann versteh ich überhaupt nix mehr ;)

ah gut dann hab ich mich nicht geirrt.
war mir nicht sicher, ob hochkommma oder nicht, bei den zahlen.


danke jedenfalls

Who-T 19.03.2007 01:22

'1' ist nicht das gleiche wie 1.
'1' ist der ascii wert von dem zeichen 1, nicht die zahl 1.
da du int arrays verwendest glaub ich nicht dass du '1' darin haben wirst/willst.

(A[i,j] == 5 && B[i,j] == 1) tut das gleiche fuer die tatsaechlichen zahlenwerte.

generell gilt: nie hochkomma, ausser du arbeitest mit character werten.

Bastet 22.03.2007 14:04

ah ja danke.
ich bringe manches immer durcheinandner. die zuweisung mit einem = und das gleichstellen == deshalb hab ich vorher ein hochkomma benutzt.


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag