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

πρόβλημα με προγραμματάκι c


dinak

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

Δημοσ.

προσπαθώ να φτιάξω ένα προγραμματάκι ναυμαχίας. Το πρόβλημα είναι ότι στις περισσότερες συναρτήσεις μου, στους πίνακες εμφανίζονται κάποιοι αριθμοί από το πουθενά. Όταν είναι να τοποθετήσω τα πλοία μου θέλω να εμφανίζεται '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' και δε μπορώ να καταλάβω γιατί.

Δημοσ.

>
#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;
}

 

Ίσως αυτό να σου δώσει μία ιδέα στο πως να ξεκινήσεις...

Δημοσ.

και μια τελευταία ερώτηση έχω την εξής συνάρτηση για παραγωγή τυχαίου αριθμού σε καθορισμένο διάστημα

 

>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

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...