dinak Δημοσ. 23 Μαρτίου 2009 Δημοσ. 23 Μαρτίου 2009 προσπαθώ να φτιάξω ένα προγραμματάκι ναυμαχίας. Το πρόβλημα είναι ότι στις περισσότερες συναρτήσεις μου, στους πίνακες εμφανίζονται κάποιοι αριθμοί από το πουθενά. Όταν είναι να τοποθετήσω τα πλοία μου θέλω να εμφανίζεται '1' εκεί που είναι και σε όλα τα υπόλοιπα 0.Για παράδειγμα στη μία συνάρτησή μου > #include <stdio.h> void init_blue_pos(int blue_pos[4][4]){ int i, j, x, y, a, b, m; for(i=0;i<5;i++){ for(j=0;j<5;j++) blue_pos[i][j]=0; } /*αυτά τα ξεκάρφωτα Printf είναι για να ελέγχω τις τιμές του πίνακα */ for(i=0;i<5;i++){ for(j=0;j<5;j++) printf("%d\n", blue_pos[i][j]); } for(i=0;i<3;i++){ printf("Eisagete tis syntetagmenes tou ploiou twn triwn thesewn: "); scanf("%d%d", &x, &y); blue_pos[x][y]=1; } for(i=0;i<2;i++){ printf("Eisagete tis syntetagmenes tou ploiou twn dyo thesewn: "); scanf("%d%d", &a, &; blue_pos[a][b]=1; } } void main() { int i, j, blue_pos[4][4]; init_blue_pos(blue_pos); for(i=0;i<5;i++){ for(j=0;j<5;j++) printf("%d\n", blue_pos[i][j]); } system("pause"); } το θέμα είναι ότι όταν βάζω τη τελευταία συντεταγμένη του πλοίου των δυο θέσεων μου εμφανίζεται στον πίνακα ένα '2' και ένα '4' και δε μπορώ να καταλάβω γιατί.
bxenos Δημοσ. 23 Μαρτίου 2009 Δημοσ. 23 Μαρτίου 2009 ο πίνακας x[4] έχει τα χ στοιχεια με i απο 0 (περιλαμβάνεται) έως 4 (δεν περιλαμβάνεται)
bokarinho Δημοσ. 23 Μαρτίου 2009 Δημοσ. 23 Μαρτίου 2009 > #include <stdio.h> #include <stdlib.h> int NaymaxiaBoard[5][5]; void InitBoard() { int i,j; for(i = 0; i < 5; i++) { for(j = 0; j < 5; j++) { NaymaxiaBoard[i][j] = 0; } } } void SetShip(int X, int Y) { if(X >= 0 && X < 5 && Y >= 0 && Y < 5) NaymaxiaBoard[X][Y] = 1; else { printf("Out of the sea boarders, can not place a ship in land...\n"); return; } } void PrintSea() { int i,j; printf("\t..THE SEA..\n"); for(i = 0; i < 5; i++) { printf("\t"); for(j=0; j < 5; j++) { printf("%d ", NaymaxiaBoard[i][j]); } printf("\n"); } printf("\n"); } void Hit(int X, int Y) { if(X >= 0 && X < 5 && Y >= 0 && Y < 5) { if(NaymaxiaBoard[X][Y] == 1) { NaymaxiaBoard[X][Y] = 0; printf("Boom...Ship hit...\n"); } else printf("Hit the sea, maybe you are close..\n"); } else { printf("Focus on sea coordinates captain...\n"); return; } } int main(int argc, char *argv[]) { InitBoard(); PrintSea(); SetShip(0,1); SetShip(0,2); SetShip(0,3); SetShip(1,4); Hit(0,4); PrintSea(); Hit(1,1); PrintSea(); Hit(0,2); PrintSea(); printf("Hit enter to continue...."); getchar(); return 0; } Ίσως αυτό να σου δώσει μία ιδέα στο πως να ξεκινήσεις...
dinak Δημοσ. 25 Μαρτίου 2009 Μέλος Δημοσ. 25 Μαρτίου 2009 και μια τελευταία ερώτηση έχω την εξής συνάρτηση για παραγωγή τυχαίου αριθμού σε καθορισμένο διάστημα >int RandomInteger(int low, int high){ int scaled, range; double normalized; range= high-low; normalized=((double)rand()/(double)(RAND_MAX)+1); scaled=(int)(normalized*range); return (scaled+low); } και την εξής συνάρτηση για την τοποθέτηση των πλοίων του υπολογιστή: > void init_red_pos(int red_pos[5][5]){ int colon, offset, row, colon2, i, j; for(i=0;i<5;i++){ for(j=0;j<5;j++) red_pos[i][j]=0; } offset=RandomInteger(0,2); colon=RandomInteger(0,4); for(i=0;i<3;i++) { red_pos[offset][colon]=1; offset++; } row=RandomInteger(0,4); printf("%d\n", row); if(colon<2) { colon2=RandomInteger(2,3); for(i=0;i<2;i++){ red_pos[row][colon2]=1; colon2++; } } else if(colon>2){ colon2=RandomInteger(0,1); for(i=0;i<2;i++){ red_pos[row][colon2]=1; colon2++; } } else if(colon==2){ colon2=3; for(i=0;i<2;i++){ red_pos[row][colon2]=1; colon2++; } } το πρόβλημα είναι ότι η τιμή της colon μου βγαίνει 6 ενώ το ανώτατο όριό της είναι το 4
ippo00 Δημοσ. 25 Μαρτίου 2009 Δημοσ. 25 Μαρτίου 2009 μαλλον αυτό που θές είναι > int RandomInteger(int low, int high) { return (rand()%(1+high-low))+low; }
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.