Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Βρήκα το λάθος ευτυχώς. Σας ευχαριστώ παααρα πολύ πραγματικά.

Δύο τελευταία warning μου βγάζει για το ίδιο πράγμα εκεί που έχω βελάκι

main1.c:1070:15: warning: statement with no effect [-Wunused-value]

 

 

 

>
void transformToK(char board[8][8])
{
	int i;
	for(i=0;i<8;i++)
	{
         if(board[0][i]=='O')
         {
             board[0][i]=='k'; //<--------------------------
         }
         else if(board[7][i]=='X')
         {
             board[7][i]=='K'; //<----------------------
         }
	}
}

 

 

να τους δώσω σημασία η όχι?

 

Πάντα να δίνεις σημασία στα warnings και πάντα να κάνεις compile με -Wall -Wextra. Στο συγκεκριμένο το πρόβλημα είναι πως μέσα στο κυρίως σώμα της if και της else αντί να κάνεις ανάθεση κάνεις σύγκριση.

Δημοσ.

Δύο συμβουλές:

1. Η changeTurn(int) πιθανότατα δεν δουλεύεις όπως "περιμένεις"

2. Πολλά if-else if έχεις... Τα πιο πολλά με μια πρώτη ματιά είτε είναι περιττά είτε μπορούν να "συμπυκνωθουν"

Δημοσ.

Μάλλον είναι ώρα για διάλειμα δε βλέπω λάθοι που είναι μπροστά μου. Ευχαριστώ πολύ και πάλι! :)

Και όμως δεν το βρήκα. να γράψω if(strcmp(board[0], "O")==0)?

 

Όπως είπαν τα παιδιά, πάντα μα πάντα να δίνεις προσοχή στα warnings. Όταν αποκτήσεις μεγαλύτερη εμπειρία θα καταλάβεις ότι αν ακούσεις κάποιον να λέει "έχω ένα πρόγραμμα που δουλεύει σωστά αλλά μου βγάζει 100 warnings" αυτό που συμβαίνει είναι ότι έχει ένα πρόγραμμα να το κάνει ο Δίας το οποίο υπό συγκεκριμένες συνθήκες κατα τύχη δουλεύει στο περίπου. Αν συγκρίνεις το πρόγραμμα που είχες αρχικά με αυτό που θα προκύψει αν φτιάξεις όλα τα warnings νομίζω πως θα συμφωνήσεις μαζί μου (σημαντική παρατήρηση: "φτιάχνω το warning" και "κάνω τον compiler να το βουλώσει γιατί ενοχλεί" είναι δυο τελείως διαφορετικά πράγματα).

 

Για τη χρήση αυτή ακριβώς υπάρχει και η επιλογή -Werror με την οποία όλα τα warnings προάγονται σε σφάλματα, επομένως αν έχεις έστω και ένα ο compiler θα αρνηθεί να κάνει compile. Η C++ είναι δύσκολη γλώσσα που σου κάνει και τη ζωή δύσκολη και πρέπει να την αντιμετωπίζεις με τον ανάλογο σεβασμό.

 

Τέλος, νομίζω ότι δεν έχεις καταλάβει βασικά πράγματα για το πως λειτουργούν char και char* ("string") στην C. To strcmp(board[0], "O")==0 όχι απλά δεν είναι σωστό αλλά δε θα κάνει καν compile γιατί το board[0] είναι τύπου char και όχι char*. Θα ήταν νομίζω σκόπιμο να ασχοληθείς λίγο με πιο βασικά πράγματα πρωτού προχωρήσεις, αλλιώς με μαθηματική ακρίβεια θα κάνεις συστηματικά λάθη τα οποία θα μπορούσαν να είχαν αποφευχθεί.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...