Gå til innhold

[LØST] [C++] Hvordan sammenligne to tegn i flerdimensjonale char-arrays?


Anbefalte innlegg

Hei!

Problemet er som følger: Jeg har et 3x3 char array, altså char values[3][3], hvor jeg prøver å sammenligne values[0][0] med values[1][1] (og values[2][2] hvis det er mulig å sammenligne 3 samtidig).

Jeg har prøvd følgende:

if(values[0][0] == values[1][1]) {...}
// Som ikke uventet aldri ble 'true'.

if(strcmp(values[0][0], values[1][1]) == 0) {...}
// Som klager på "error: invalid conversion from 'char' to 'const char*"

if(strcmp((char*)&values[0][0], (char*)&values[1][1]) == 0) {...}
// Som fjerner feilmeldingen, men som heller aldri blir 'true'

 

All hjelp tas imot med takk! :)

Endret av javanuben
Lenke til kommentar
Videoannonse
Annonse

Det er da ikke noe problem å sammenligne char-verdier, og ej heller tre eller flere om gangen. Så lenge du bare "deler" opp problemet litt..:

 

#include <iostream>

using namespace std;

int main(void)
{
char MittArray[3][3];

int x, y;
for (x = 0; x < 3; x++)
   	for (y = 0; y < 3; y++)
       	MittArray[x][y] = 'A';

if (MittArray[0][0] == MittArray[1][1])
  	if (MittArray[0][0] == MittArray[2][2])
     	if (MittArray[1][1] == MittArray[2][2])
			cout << "Likhet." << endl << endl;

// system("pause");
}

 

Operatøren '==' tar kun to verdier på en gang, for den er av typen 'binary', så da må du bare "trikse litt"..

 

if-setningene i eksempelet kan du selvsagt flytte sammen, og lage en stor setning, hvis du heller vil det. Alt du trenger er && og nok med paranteser.

 

edit: Grunnen til at du ikke fikk brukt 'strcmp' er fordi dette er for strenger. Om du heller vil bruke denne må du gjøre om enten arrayet som holder på informasjonen din, eller datatypen som verdiene dine er av, før de sammenlignes..

Endret av greygenic
  • Liker 1
Lenke til kommentar

Hmm, pussig... Som du ser i min første post, så prøvde jeg med ==, men jeg fikk det aldri til å bli 'true'. Mulig jeg har gjort noe annet galt. Skal undersøke det. Takk for svar! :)

 

EDIT: Det funket nå! Var en annen bug som gjorde at det aldri ble 'true'! Takk igjen, greygenic! :)

Endret av javanuben
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...