monkey90 Δημοσ. 21 Μαΐου 2012 Δημοσ. 21 Μαΐου 2012 Κάνω μία άσκηση(ντάμα η checkers στα αγγλικά) πάνω σε dev c++ εδώ και κάτι μέρες η οποία προς στιγμήν δούλευε μια χαρά(δεν είναι ολοκληρωμένη αλλά τα κομμάτια που έχω κάνει δούλευαν μια χαρά. Έβαλα ubuntu επειδή σε ubuntu πρέπει να τρέχει η άσκηση και πήγα να την τρέξω. Μου έβγαλε ένα error που δε μου εβγαζε στο dev c++ τίποτα σοβαρό το έφτιαξα. Αλλά επίσης μου έβγαλε άπιρα warnings. Τέλοσπάντων παραβλέπω τα warnings και την τρέχω και ενώ στον dev c++ έτρεχε μια χαρά με τον ubuntu κατέρευσε κατευθείαν. Ένα παράδειγμα ξεκινάει το πρόγραμμα δίνει ο χρήστης μία κίνηση και αντί να κάνει την κίνηση λέει. Ο χρήστης Χ έχασε. Το οποίο με τον dev C++ συνέβενε όταν όντως έχανε ο χρήστης. Πως είναι εφικτό να γίνεται τόσο διαφορετικά με 'αλλο compiler.
nspyrou Δημοσ. 21 Μαΐου 2012 Δημοσ. 21 Μαΐου 2012 Γιατί δεν το πας κομμάτι-κομμάτι να δεις που τρώει το σκάλωμα?! Μη ξεχνάς οτι έφυγες από ένα λειτουργικό και πήγες σε άλλο. Χωρίς κώδικα, δεν μπορούμε να βοηθήσουμε και πολύ ...
monkey90 Δημοσ. 21 Μαΐου 2012 Μέλος Δημοσ. 21 Μαΐου 2012 πραγματικά έχω σοκαριστεί θα γράψω όλον τον κώδικα και θα βάλω βελάκι στο 1ο λάθος που βγάζει..ο κώδικας μου είναι πάνω απο 1000 γραμμές. Έχω υποδείξει το 1ο warning που μου βγάζει με βελάκι. ps:χρησιμοποιώ το Geany. > #include <stdio.h> #include <stdlib.h> #include <time.h> typedef struct node { char array[8][8]; struct node *next; }NODE; typedef struct stack { NODE *top; int size; }STACK; typedef struct FourCoords { int x0,y0,x1,y1,x2,y2,x3,y3,t; }FourCoords; void gemisma(char [8][8]); //vazei ta poulia stis arxikes tous theseis void printBoard(char [8][8]); //ektupwnei to tamplo void play(char [8][8]); //ulopoiei to paixnidi int isValidMove(char[8][8], char[] , int, int, FourCoords); //elenxei an mia kinhsh einai egurh int emptyBlock(char[8][8] , int, int); //elenxei ama h sugekrimenh thesh einai kenh void recursion(char[8][8], int, int); //anadromiko "fagwma" kaleitai otan o xrhsths kanei mia egurh kinhsh void help(); //ektypwnei vohtheia struct FourCoords checking(char[8][8], int); // int checkLoose(char[8][8], int); //elenxei an kapoios exei xasei to paixnidi void pushStack(char[8][8], STACK*); //push sth stoiva void popStack(char[8][8], STACK*); //pop apo th stoiva int xfrom(char[]); //kanoun thn allagh gt o xrhsths ousiastika dinei anapoda tis suntetagmenes int yfrom(char[]); //kai epishs metatrpeoun tis syntetagmenes poy dinei o xrhsths se arithmous int xto(char[]); int yto(char[]); void usersMove(char[8][8], char[]); //ulopoiei thn kinhsh tou paixth int changeTurn(int); //allagh seiras void terminating(); //ama epileksei o xrhsths na termatisei to paixnidi char intToChar(int); //metatrepei int se char void transformToK(char[8][8]); //metatrepei X se K kai O se k int main(int argc, char *argv[]) { char board[8][8]; gemisma(board); play(board); system("PAUSE"); return 0; } void play(char board[8][8]) { printf("~~~~~~~~~~New Game~~~~~~~~~~\n"); int pass; int turn=1; //X int k; FourCoords c; char string[10]; STACK stack1; STACK *ptr; ptr= &stack1; stack1.top=NULL; stack1.size=0; do { k=0; pass=1; printBoard(board); if(checkLoose(board, turn)==1) { printf("mpravo exases\n"); exit(1); } printBoard(board); c=checking(board, turn); //lathos me ta oria if(c.x0!=-1) { if(c.x2==-1) { k=1; printf("The disc at the location %c-%d can eat the disc and move at the location %c-%d\n", intToChar(c.y0),c.x0+1,intToChar(c.y1),c.x1+1); printf("You have to move this disc\n"); } else { k=2;//mlkia ena den mporei na faei 2 ektos an einai k printf("The disc at the location %c,%d can eat the disc and move at the location %c,%d\n", intToChar(c.y0),c.x0+1,intToChar(c.y1),c.x1+1); printf("Also the disc at the location %c,%d can eat the disc and move at the location %c,%d\n", intToChar(c.y2),c.x2+1,intToChar(c.y3),c.x3+1); printf("You have to move 1 of these discs\n"); } } if(turn==1) { printf("player X give your move: "); } else { printf("player O give your move: "); } do { scanf("%s", string); if(isValidMove(board, string, turn, k, c)==0) { printf("give a valid move\n"); pass=0; } }while(pass==0); if(string=="z9-z9")//termatismos //<---------------------------------------- { } else if(string=="u9-u9")//anairesh { popStack(board, ptr); turn=changeTurn(turn); } else { usersMove(board, string); if(k!=0)//if the is an eating { recursion(board, xto(string), yto(string)); } pushStack(board, ptr); turn=changeTurn(turn); } transformToK(board); }while(string!="z9-z9"); } void recursion(char board[8][8], int x, int y) { int k1=0,k2=0; srand((int)time(NULL)); if(board[x][y]=='X') { if(board[x+1][y+1]=='O' || board[x+1][y+1]=='k') { if(((x+2)<8) && ((y+2)<8)) { if(emptyBlock(board , x+2, y+2)==1) { k1=1; } } } if(board[x+1][y-1]=='O' || board[x+1][y-1]=='k') { if(((x+2)<8) && ((y-2)>-1)) { if(emptyBlock(board , x+2, y-2)==1) { k2=1; } } } if(k1==1 && k2==1) { if(rand()%2==0) { board[x+2][y+2]=board[x][y]; board[x][y]='.'; board[x+1][y+1]='.'; recursion(board, x+2, y+2); } else { board[x+2][y-2]=board[x][y]; board[x][y]='.'; board[x+1][y-1]='.'; recursion(board, x+2, y-2); } } else if(k1==1) { board[x+2][y+2]=board[x][y]; board[x][y]='.'; board[x+1][y+1]='.'; recursion(board, x+2, y+2); } else if(k2==1) { board[x+2][y-2]=board[x][y]; board[x][y]='.'; board[x+1][y-1]='.'; recursion(board, x+2, y-2); } } else if(board[x][y]=='O') { if(board[x-1][y+1]=='X' || board[x-1][y+1]=='K') { if(((x-2)>-1) && ((y+2)<8)) { if(emptyBlock(board , x-2, y+2)==1) { k1=1; } } } if(board[x-1][y-1]=='X' || board[x-1][y-1]=='K') { if(((x-2)>-1) && ((y-2)>-1)) { if(emptyBlock(board , x-2, y-2)==1) { k2=1; } } } if(k1==1 && k2==1) { if(rand()%2==0) { board[x-2][y+2]=board[x][y]; board[x][y]='.'; board[x-1][y+1]='.'; recursion(board, x-2, y+2); } else { board[x-2][y-2]=board[x][y]; board[x][y]='.'; board[x-1][y-1]='.'; recursion(board, x-2, y-2); } } else if(k1==1) { board[x-2][y+2]=board[x][y]; board[x][y]='.'; board[x-1][y+1]='.'; recursion(board, x-2, y+2); } else if(k2==2) { board[x-2][y-2]=board[x][y]; board[x][y]='.'; board[x-1][y-1]='.'; recursion(board, x-2, y-2); } } } void pushStack(char board[8][8], STACK *s) { int i,j; NODE *p; p=(NODE *)malloc(sizeof(NODE)); if(p==NULL) { printf("System out of memory. Exiting...\n"); exit(1); } for(i=0;i<8;i++) { for(j=0;j<8;j++) { p->array[i][j] = board[i][j]; } } p->next = s->top; s->top = p; (s->size)++; } void popStack(char board[8][8], STACK *s) { int i,j; NODE *p; if(s->size==0) { printf("Sorry, stack is empty. Exiting...\n"); exit(1); } for(i=0;i<8;i++) { for(j=0;j<8;j++) { board[i][j] = (s->top)->array[i][j]; } } p=s->top; s->top=p->next; (s->size)--; free(p); } int checkLoose(char board[8][8], int turn)//etoimh nomizw na prosthesw se ola genika gia ta oria { int r=1,i=0,j=0; //epistrefei 1 an einai na termatistei if(turn==1) { do//to kanw me do while wste na vgei me to pou vrei kapoio { if(board[i][j]=='X') { if(emptyBlock(board, i+1, j+1)==1) { r=0; } else if(board[i+1][j+1]=='O' || board[i+1][j+1]=='k') { if(emptyBlock(board, i+2, j+2)==1) { r=0; } } if(emptyBlock(board, i+1, j-1)==1) { r=0; } else if(board[i+1][j-1]=='O' || board[i+1][j-1]=='k') { if(emptyBlock(board, i+2, j-2)==1) { r=0; } } } else if(board[i][j]=='K') { if(emptyBlock(board, i+1, j+1)==1) { r=0; } else if(board[i+1][j+1]=='O' || board[i+1][j+1]=='k') { if(emptyBlock(board, i+2, j+2)==1) { r=0; } } if(emptyBlock(board, i+1, j-1)==1) { r=0; } else if(board[i+1][j-1]=='O' || board[i+1][j-1]=='k') { if(emptyBlock(board, i+2, j-2)==1) { r=0; } } if(emptyBlock(board, i-1, j+1)==1) { r=0; } else if(board[i-1][j+1]=='O' || board[i-1][j+1]=='k') { if(emptyBlock(board, i-2, j+2)==1) { r=0; } } if(emptyBlock(board, i-1, j-1)==1) { r=0; } else if(board[i-1][j-1]=='O' || board[i-1][j-1]=='k') { if(emptyBlock(board, i-2, j-2)==1) { r=0; } } } j=j+1;// gia na stamataei me to poy vrei kapoio pou mporei na kinithei if(j==8) { i=i+1; } if(j==8) { j=0; } }while(i!=8 && r!=1); } else { do//to kanw me do while wste na vgei me to pou vrei kapoio { if(board[i][j]=='O') { if(emptyBlock(board, i-1, j+1)==1) { r=0; } else if(board[i-1][j+1]=='X' || board[i-1][j+1]=='K') { if(emptyBlock(board, i-2, j+2)==1) { r=0; } } if(emptyBlock(board, i-1, j-1)==1) { r=0; } else if(board[i-1][j-1]=='X' || board[i-1][j-1]=='K') { if(emptyBlock(board, i-2, j-2)==1) { r=0; } } } else if(board[i][j]=='k') { if(emptyBlock(board, i+1, j+1)==1) { r=0; } else if(board[i+1][j+1]=='X' || board[i+1][j+1]=='K') { if(emptyBlock(board, i+2, j+2)==1) { r=0; } } if(emptyBlock(board, i+1, j-1)==1) { r=0; } else if(board[i+1][j-1]=='X' || board[i+1][j-1]=='K') { if(emptyBlock(board, i+2, j-2)==1) { r=0; } } if(emptyBlock(board, i-1, j+1)==1) { r=0; } else if(board[i-1][j+1]=='X' || board[i-1][j+1]=='K') { if(emptyBlock(board, i-2, j+2)==1) { r=0; } } if(emptyBlock(board, i-1, j-1)==1) { r=0; } else if(board[i-1][j-1]=='X' || board[i-1][j-1]=='K') { if(emptyBlock(board, i-2, j-2)==1) { r=0; } } } j=j+1;// gia na stamataei me to poy vrei kapoio pou mporei na kinithei if(j==8) { i=i+1; } if(j==8) { j=0; } }while(i!=8 && r!=0); } return r; } //synarthsh gia to an uparxei anagastiko fagwma struct FourCoords checking(char board[8][8], int turn) //mallon komple { //na valw thn peritpwsh poy exei toixo isws? int i,j,k=0; FourCoords r = {-1,-1,-1,-1,-1,-1,-1,-1,0}; for(i=0;i<8;i++) { for(j=0;j<8;j++) { if(turn==1) { if(board[i][j]=='X' || board[i][j]=='K')//gia X kai K { if(board[i+1][j+1]=='O' || board[i+1][j+1]=='k') { if(((i+2)<8) && ((j+2)<8))//auth einai h diorthosh { if(board[i+2][j+2]=='.') //mporei na vgei eksv apo ta oria na to tsekarw meta { if(k==1) { r.x2=i; r.y2=j; r.x3=i+2; r.y3=j+2; r.t=r.t+1; } else { r.x0=i; r.y0=j; r.x1=i+2; r.y1=j+2; r.t=r.t+1; k=1; } } } } else if(board[i+1][j-1]=='O' || board[i+1][j-1]=='k') { if(((i+2)<8) && ((j-2)>-1)) { if(board[i+2][j-2]=='.') { if(k==1) { r.x2=i; r.y2=j; r.x3=i+2; r.y3=j-2; r.t=r.t+1; } else { r.x0=i; r.y0=j; r.x1=i+2; r.y1=j-2; r.t=r.t+1; k=1; } } } } } if(board[i][j]=='K')//gia K { if(board[i-1][j+1]=='O' || board[i-1][j+1]=='k') { if(((i-2)>-1) && ((j+2)<8)) { if(board[i-2][j+2]=='.') //mporei na vgei eksw apo ta oria na to tsekarw meta { if(k==1) { r.x2=i; r.y2=j; r.x3=i-2; r.y3=j+2; r.t=r.t+1; } else { r.x0=i; r.y0=j; r.x1=i-2; r.y1=j+2; r.t=r.t+1; k=1; } } } } if(board[i-1][j-1]=='O' || board[i-1][j-1]=='k') { if(((i-2)>-1) && ((j-2)>-1)) { if(board[i-2][j-2]=='.') { if(k==1) { r.x2=i; r.y2=j; r.x3=i-2; r.y3=j-2; r.t=r.t+1; } else { r.x0=i; r.y0=j; r.x1=i-2; r.y1=j+2; r.t=r.t+1; k=1; } } } } } } else//turn=2 { if(board[i][j]=='O' || board[i][j]=='k')//gia X kai K { if(board[i-1][j+1]=='X' || board[i-1][j+1]=='K') { if(((i-2)>-1) && ((j+2)<8)) { if(board[i-2][j+2]=='.') //mporei na vgei eksv apo ta oria na to tsekarw meta { if(k==1) { r.x2=i; r.y2=j; r.x3=i-2; r.y3=j+2; r.t=r.t+1; } else { r.x0=i; r.y0=j; r.x1=i-2; r.y1=j+2; r.t=r.t+1; k=1; } } } } else if(board[i-1][j-1]=='X' || board[i-1][j-1]=='K') { if(((i-2)>-1) && ((j-2)>-1)) { if(board[i-2][j-2]=='.') { if(k==1) { r.x2=i; r.y2=j; r.x3=i-2; r.y3=j-2; r.t=r.t+1; } else { r.x0=i; r.y0=j; r.x1=i-2; r.y1=j-2; r.t=r.t+1; k=1; } } } } } if(board[i][j]=='k')//gia K { if(board[i+1][j+1]=='X' || board[i+1][j+1]=='K') { if(((i+2)<8) && ((j+2)<8)) { if(board[i+2][j+2]=='.') //mporei na vgei eksw apo ta oria na to tsekarw meta { if(k==1) { r.x2=i; r.y2=j; r.x3=i+2; r.y3=j+2; r.t=r.t+1; } else { r.x0=i; r.y0=j; r.x1=i+2; r.y1=j+2; r.t=r.t+1; k=1; } } } } if(board[i-1][j-1]=='X' || board[i-1][j-1]=='K') { if(((i+2)<8) && ((j-2)>-1)) { if(board[i+2][j-2]=='.') { if(k==1) { r.x2=i; r.y2=j; r.x3=i+2; r.y3=j-2; r.t=r.t+1; } else { r.x0=i; r.y0=j; r.x1=i+2; r.y1=j+2; r.t=r.t+1; k=1; } } } } } } } } return r; } int emptyBlock(char board[8][8] , int i, int j)//etoimh O_o { int r=0; if(board[i][j]=='.') { r=1; } return r; } int isValidMove(char board[8][8], char n[], int turn, int k, FourCoords l)//mallon etoimh mporei na exei kanena lathos { int r=1,a,b,c,d; a=xfrom(n); b=yfrom(n); c=xto(n); d=yto(n); if(strlen(n)!=5) { printf("The length of the input should be 5 letters long example: b6-c5\n"); r=0; } else if( (isalpha(n[0])==0) || (isdigit(n[1])==0) || (n[2]!='-') || (isalpha(n[3])==0) || (isdigit(n[4])==0) ) { printf("The input should be like this b6-c5\n"); r=0; } else if(n=="z9-z9" || n=="u9-u9") { if(n=="z9-z9") { printf("you choosed to terminate the program\n"); } else { printf("you choosed to recall a move\n"); } } else if(a<0 || a>7 || b<0 || b>7 || c<0 || c>7 || d<0 || d>7) { printf("The input should be like this b6-c5.You can't move out of the board. You can use letter from a to h and numbers from 1 to 8\n"); r=0; } if(turn==1) { if(emptyBlock(board, a, ==1) { printf("there is no disc at the location you choosed\n"); r=0; } else if(board[a][b]=='O' || board[a][b]=='k' ) //ama paizei ta swsta poulia { printf("you can't move your anemies discs\n"); r=0; } else if((c-a)!=1) // ama einai swsth h grammh <-----edw einai to provlhma { if(k==0) //k k=0 an den uparxei anagastiko fagwma { printf("wrong move\n"); r=0; } } else if(b-d!=1 && d-b!=1) //ama einai swsth h sthlh { if(k==0) { printf("wrong move\n"); r=0; } } else if(emptyBlock(board, c, d)==0) { printf("you can't move at the location you choosed because there is oneother disc\n"); r=0; } } else { if(emptyBlock(board, a, ==1) { printf("there is no disc at the location you choosed\n"); r=0; } else if(board[a][b]=='X' || board[a][b]=='K') //ama paizei ta swsta poulia { printf("you can't move your anemies discs\n"); r=0; } else if((a-c)!=1) // ama einai swsth h grammh <--- epishs edw { if(k==0) { printf("wrong move\n"); r=0; } } else if(b-d!=1 && d-b!=1) //ama einai swsth h sthlh { if(k==0) { printf("wrong move\n"); r=0; } } else if(emptyBlock(board, c, d)==0) { printf("you can't move at the location you choosed because there is oneother disc\n"); r=0; } } if(k==1) { if(l.x0!=a || l.y0!=b || l.x1!=c || l.y1!=d) { printf("You have to eat the disc, you aren't allowed to make oneother move\n"); r=0; } } if(k==2) { if((l.x0!=a || l.y0!=b || l.x1!=c || l.y1!=d) && (l.x2!=a || l.y2!=b || l.x3!=c || l.y3!=d)) { printf("You have to eat the disc, you aren't allowed to make oneother move\n"); r=0; } } return r; } void printBoard(char board[8][8])//etoimh { int i,j; printf(" a b c d e f g h\n"); printf(" -------------------\n"); for(i=0;i<8;i++) { printf("%d | ", i+1); for(j=0;j<8;j++) { printf("%c ", board[i][j]); } printf(" | %d\n", i+1); } printf(" -------------------\n"); printf(" a b c d e f g h\n"); } void gemisma(char board[8][8])//etoimh { int i,j; for(i=0;i<8;i++) { for(j=0;j<8;j++) { board[i][j]= '.'; } } board[0][0]='X'; board[0][2]='X'; board[0][4]='X'; board[0][6]='X'; board[1][1]='X'; board[1][3]='X'; board[1][5]='X'; board[1][7]='X'; board[2][0]='X'; board[2][2]='X'; board[2][4]='X'; board[2][6]='X'; board[5][1]='O'; board[5][3]='O'; board[5][5]='O'; board[5][7]='O'; board[6][0]='O'; board[6][2]='O'; board[6][4]='O'; board[6][6]='O'; board[7][1]='O'; board[7][3]='O'; board[7][5]='O'; board[7][7]='O'; } void usersMove(char board[8][8], char string[10]) { if(board[xfrom(string)][yfrom(string)]=='X') { if(yto(string)-yfrom(string)<0) { board[xfrom(string)+1][yfrom(string)-1]='.'; } else { board[xfrom(string)+1][yfrom(string)+1]='.'; } board[xto(string)][yto(string)]=board[xfrom(string)][yfrom(string)]; board[xfrom(string)][yfrom(string)]='.'; } else if(board[xfrom(string)][yfrom(string)]=='O') { if(yto(string)-yfrom(string)<0) { board[xfrom(string)-1][yfrom(string)-1]='.'; } else { board[xfrom(string)-1][yfrom(string)+1]='.'; } board[xto(string)][yto(string)]=board[xfrom(string)][yfrom(string)]; board[xfrom(string)][yfrom(string)]='.'; } else if(board[xfrom(string)][yfrom(string)]=='K') { if(yto(string)-yfrom(string)<0) { if(xto(string)-xfrom(string)<0) { board[xfrom(string)-1][yfrom(string)-1]='.'; } else { board[xfrom(string)+1][yfrom(string)-1]='.'; } } else { if(xto(string)-xfrom(string)<0) { board[xfrom(string)-1][yfrom(string)+1]='.'; } else { board[xfrom(string)+1][yfrom(string)+1]='.'; } } board[xto(string)][yto(string)]=board[xfrom(string)][yfrom(string)]; board[xfrom(string)][yfrom(string)]='.'; } else if(board[xfrom(string)][yfrom(string)]=='k') { if(yto(string)-yfrom(string)<0) { if(xto(string)-xfrom(string)<0) { board[xfrom(string)-1][yfrom(string)-1]='.'; } else { board[xfrom(string)+1][yfrom(string)-1]='.'; } } else { if(xto(string)-xfrom(string)<0) { board[xfrom(string)-1][yfrom(string)+1]='.'; } else { board[xfrom(string)+1][yfrom(string)+1]='.'; } } board[xto(string)][yto(string)]=board[xfrom(string)][yfrom(string)]; board[xfrom(string)][yfrom(string)]='.'; } } int xfrom(char string[10]) { int r; r=(int)string[1]-49; return r; } int yfrom(char string[10]) { int r; r=(int)string[0]-97; return r; } int xto(char string[10]) { int r; r=(int)string[4]-49; return r; } int yto(char string[10]) { int r; r=(int)string[3]-97; return r; } char intToChar(int i) { char c; c=(char)(i+97); return c; } int changeTurn(turn) { if(turn==1) { turn=2; } else { turn=1; } return turn; } 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')//else if gia na mhn xanetai adika xronos afou den einai dunaton na ginoun kai ta duo mazi { board[7][i]=='K'; } } } void help() { printf("bla bla bla bla se voithaw twra bla bla bla\n"); }
computeras13 Δημοσ. 21 Μαΐου 2012 Δημοσ. 21 Μαΐου 2012 Κάνοντας compile μου έβγαλε δύο σφάλματα. Γραμμή 771 και 881 αν θυμάμαι καλά. Έχεις από ένα κεφαλαίο 'Β' σε εκείνες τις γραμμές που δεν είναι δηλωμένο πουθενά αλλού. Μόλις τα έκανα μικρά τρέχει κανονικά ο κώδικας. Τώρα από εκεί και πέρα δεν ξέρω τι συμπεριφορά πρέπει να περιμένω από το εκτελέσιμο για να συνεχίσω.
monkey90 Δημοσ. 21 Μαΐου 2012 Μέλος Δημοσ. 21 Μαΐου 2012 με το Geany μου βγάζει πολλά warnings όχι 2. Τσέκαρε μία αν μπορείς το λάθος που έχω με βελάκι στο spoiler από πάνω. μου γράφει main1.c:114:18: warning: comparison with string literal results in unspecified behavior [-Waddress] δίνει εντολές με τη μορφή θεση που ειναι-θεση που θες να πάει.από περιέργεια τρέχτω και γράψε c3-d4 Κάνοντας compile μου έβγαλε δύο σφάλματα. Γραμμή 771 και 881 αν θυμάμαι καλά. Έχεις από ένα κεφαλαίο 'Β' σε εκείνες τις γραμμές που δεν είναι δηλωμένο πουθενά αλλού. Μόλις τα έκανα μικρά τρέχει κανονικά ο κώδικας. Τώρα από εκεί και πέρα δεν ξέρω τι συμπεριφορά πρέπει να περιμένω από το εκτελέσιμο για να συνεχίσω. Δεν βρίσκς το 'Β' που λες. Σίγουρα είναι σε εκείνη τη γραμή?
computeras13 Δημοσ. 21 Μαΐου 2012 Δημοσ. 21 Μαΐου 2012 Δεν είπα για warning αλλά για error. Είναι η ίδια εντολή και τις δύο φορές. Κάνε μια αναζήτηση για το παρακάτω >if(emptyBlock(board, a, ==1) Από warning μου βγάζει και εμένα αρκετά. Επίσης έχεις ξεχάσει δύο includes > #include <string.h> #include <ctype.h> Μόλις έδωσα πάντως το "c3-d4" μου έβγαλε οτι έχασα. Επιπλέον για να συγκρίνεις string χρησιμοποίησε την strcmp(), όχι όπως το κάνεις εσύ.
monkey90 Δημοσ. 21 Μαΐου 2012 Μέλος Δημοσ. 21 Μαΐου 2012 Σε ευχαριστώ πολύ για τη βοήθεια. Οσο για το Β εμένα μου βγάζει ότι είναι μικρό(στην isValidMove). Μπορεί κάποιος να μου πει ποιο είναι το λάθος σε αυτό? if(string=="z9-z9") Πληροφοριακά το string το δηλώνω έτσι char string[10]; και το χρησιμοποιώ εδώ scanf("%s", string); strcmp() με το dev c++ μια χαρά δεχότανε το =...
migf1 Δημοσ. 22 Μαΐου 2012 Δημοσ. 22 Μαΐου 2012 Βάλε σε ένα spoiler τα warnings που σου βγάζει ο gcc του Ubuntu. Αυτό που πρέπει να κάνεις πάντως πρώτα από όλα είναι να ΑΡΧΙΚΟΠΟΙΗΣΕΙΣ ΟΛΕΣ τις τοπικές μεταβλητές που ορίζεις σε ΟΛΕΣ τις συναρτήσεις. Ο mingw32 gcc (που χρησιμοποιεί και το Dev-C++) έχει την τάση να μηδενίζει αυτόματα μη-αρχικοποιημένες μεταβλητές, κάτι που δεν είναι στάνταρ. Ο κανονικός gcc (του Ubuntu) ΔΕΝ τις μηδενίζει αυτόματα. Κατά πάσα πιθανότητα αυτό είναι το πρόβλημα.
computeras13 Δημοσ. 22 Μαΐου 2012 Δημοσ. 22 Μαΐου 2012 Εγώ πήρα copy paste τον κώδικα που έχεις πιο πάνω. Και εκεί με κεφαλαίο είναι. Τέλος πάντων. Μια χαρά το δέχεται ο compiler ναι. Το θέμα είναι οτι δεν είναι σωστό και δεν κάνει αυτό που νομίζεις οτι κάνει. Στην ουσία χρησιμοποιώντας το '==' ελέγχεις αν οι pointers που δείχνουν αυτά τα string είναι ίδιοι και όχι το περιεχόμενο αυτό καθέ αυτό. Για να συγκρίνεις το περιεχόμενο πρέπει να χρησιμοποιήσεις την strcmp().
migf1 Δημοσ. 22 Μαΐου 2012 Δημοσ. 22 Μαΐου 2012 By the way, το κεφαλαίο B είναι πρόβλημα του code tag εδώ στο φόρουμ. EDIT: Σε ευχαριστώ πολύ για τη βοήθεια. Οσο για το Β εμένα μου βγάζει ότι είναι μικρό(στην isValidMove). Μπορεί κάποιος να μου πει ποιο είναι το λάθος σε αυτό? if(string=="z9-z9") Πληροφοριακά το string το δηλώνω έτσι char string[10]; και το χρησιμοποιώ εδώ scanf("%s", string); strcmp() με το dev c++ μια χαρά δεχότανε το =... Το λάθος είναι πως αντί να συγκρίνεις τα περιεχόμενα των 2 strings συγκρίνεις τις διευθύνσεις τους. Πρέπει να χρησιμοποιήσεις την strcmp() ή ακόμα καλύτερα την strncmp(),. όπως είπε κι ο computeras. Επίσης, βεβαιώσου πως το αρχείο σου είναι σε κωδικοποίηση UTF-8 (έχει σχετική επιλογή το Geany). Αν δεν είναι, κάντο UTF-8 εσύ. Κατά πάσα πιθανότητα θα είναι σε κωδικοποίηση ANSI το αρχείο σου από το Dev-C++, ενώ στο Ubuntu η default κωδικοποίηση είναι η UTF-8.
computeras13 Δημοσ. 22 Μαΐου 2012 Δημοσ. 22 Μαΐου 2012 @migf1 δεν το ήξερα αυτό για το tag. BTW, μου αρέσει που γράφουμε τα ίδια (πέραν της κωδικοποίησης)
migf1 Δημοσ. 22 Μαΐου 2012 Δημοσ. 22 Μαΐου 2012 @migf1 δεν το ήξερα αυτό για το tag. BTW, μου αρέσει που γράφουμε τα ίδια (πέραν της κωδικοποίησης) Είναι επειδή γράφουμε ταυτόχρονα.
monkey90 Δημοσ. 22 Μαΐου 2012 Μέλος Δημοσ. 22 Μαΐου 2012 Βρήκα το λάθος ευτυχώς. Σας ευχαριστώ παααρα πολύ πραγματικά. Δύο τελευταία 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'; //<---------------------- } } } να τους δώσω σημασία η όχι?
computeras13 Δημοσ. 22 Μαΐου 2012 Δημοσ. 22 Μαΐου 2012 Το ίδιο πράγμα με ότι είπαμε πριν ισχύει. Χρησιμοποίησε την strcmp
monkey90 Δημοσ. 22 Μαΐου 2012 Μέλος Δημοσ. 22 Μαΐου 2012 Μάλλον είναι ώρα για διάλειμα δε βλέπω λάθοι που είναι μπροστά μου. Ευχαριστώ πολύ και πάλι! Και όμως δεν το βρήκα. να γράψω if(strcmp(board[0], "O")==0)?
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα