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

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

Δημοσ.

Θέλω να φτιάξω ένα πρόγραμμα που θα πέρνει τις λύσεις ενός σουντόκου δλδ ένα πίνακα 9Χ9 και θα εμφανίζει αν τελικά είναι σουντόκου η όχι...Αν δεν είναι θα εμφανίζει με σχετικό μνμ τις γραμμές τις στήλες και τα μπλόκς που είναι λαθός...

Να παραθέσω τον κώδικα που έχω γράψει να μου πείτε που κάνω λάθος;;

Δημοσ.

Γεια σου φιλε αν μπορεις κανε παραθεση τον

κωδικα μηπως μπορω να βοηθησω. Γιατι δεν γνωριζω

τη λογικη του σουντοκου δεν εχω ασχοληθει ποτε!

Δημοσ.

> #include <stdio.h>
#include <stdlib.h>
#define N 9
main()
{
  	  int i,j;
  int col;
  int row;
  	  int r=0;
  	  int c=0;
  int b=0;
  int falseRows[N]={0};
  int falseCols[N]={0};
  int falseBlocks[N]={0};
        int array[N] [N];
  
  
	for (i = 0; i < N; i++) {
		for(j=0; j< N; j++) {

              	   printf("array[%d] [%d]=", i,j);
              	   scanf("%d, %d", &array[i] [j]);
                
     	      }
	}

for(i=0;i<N;i++){
	for(j=0;j<N && c==0;j++){
		for(row=0; (row<N) && (c==0);row++){
			if (row != i && array[i] [j] == array[j] [row]){
                                        r=1;
				        falseRows[i]=i+1;
			}
		}
	}
}
for(i=0;i<N;i++){
	for(j=0;j<N;j++){
		for(col=0;col<N;col++){
			if(array[j] [i] == array[col] [i]) && col !=j){
				c=1;
				falseCols[i]=i+1;
			}
		}
	}
}
for(i=0;i<N;i++){
	for(j=0;j<N;j++){
		for(row=(i/3)*3;row<(i/3)*3+3;row++){
			for(col=(j/3)*3;col<(j/3)*3+3;col++){
				if (row!=i && col!=j &&array[row] [col] == array [i] [j]){
                                                if (i<3 && j<3){ 
					         falseBlocks[0] = 1;
                                                }else if (i<3 && j<6){
                                                falseBlocks[1] = 2;
                                                }else if(i<3 && j<9){
						   falseBlocks[2] = 3;
					         }else if(i<6 && j<3){
                                                falseBlocks[3]  = 4;
						  }else if(i<6 && j<6){
                                                falseBlocks[4] = 5;
						  }else if(i<6 && j<9){
						  falseBlocks[5] = 6;
						  }else if(i<9 && j<3){
						  falseBlocks[6] = 7;
						  }else if(i<9 && j<6){
						  falseBlocks = 8;
						  } else {
						  falseBlocks = 9;
						  }
			      }
			}
		}
	}
}
      












} 

 

Αν αυτό είναι οκ θα συνεχίσω και για την εμφάνιση του μνμτος που ζητάει η άσκηση

Δημοσ.

Κοιτα οταν οταν το ετρεξα στο visual studio

μου εβγαλε καποια συντακτικα λαθοι τσεκαρε τα.

Επειδη δεν ξερω οπως σου ειπα παραπανω τη λογικη

του σουντοκου δεν ξερω να το διορθοσω. κοιτα τα λαθοι που

μου βγαζει στην παρκατω εικονα.

post-199916-0-01407000-1322315575_thumb.png

Δημοσ.

Με DevC++ βλέπω τα παρακάτω συντακτικά λάθη..

 

> #include <stdio.h>
#include <stdlib.h>
#define N 9
main()
{
  	  int i,j;
  int col;
  int row;
  	  int r=0;
  	  int c=0;
  int b=0;
  int falseRows[N]={0};
  int falseCols[N]={0};
  int falseBlocks[N]={0};
        int array[N] [N];
  
  
	for (i = 0; i < N; i++) {
		for(j=0; j< N; j++) {

              	   printf("array[%d] [%d]=", i,j);
              	   scanf("%d, %d", &array[i] [j]);
                
     	      }
	}

for(i=0;i<N;i++){
	for(j=0;j<N && c==0;j++){
		for(row=0; (row<N) && (c==0);row++){
			if (row != i && array[i] [j] == array[j] [row]){
                                        r=1;
				        falseRows[i]=i+1;
			}
		}
	}
}
for(i=0;i<N;i++){
	for(j=0;j<N;j++){
		for(col=0;col<N;col++){
			if(array[j] [i] == array[col] [i]) && col !=j){ //η παρένθεση
				c=1;
				falseCols[i]=i+1;
			}
		}
	}
}
for(i=0;i<N;i++){
	for(j=0;j<N;j++){
		for(row=(i/3)*3;row<(i/3)*3+3;row++){
			for(col=(j/3)*3;col<(j/3)*3+3;col++){
				if (row!=i && col!=j &&array[row] [col] == array [i] [j]){
                                                if (i<3 && j<3){ 
					         falseBlocks[0] = 1;
                                                }else if (i<3 && j<6){
                                                falseBlocks[1] = 2;
                                                }else if(i<3 && j<9){
						   falseBlocks[2] = 3;
					         }else if(i<6 && j<3){
                                                falseBlocks[3]  = 4;
						  }else if(i<6 && j<6){
                                                falseBlocks[4] = 5;
						  }else if(i<6 && j<9){
						  falseBlocks[5] = 6;
						  }else if(i<9 && j<3){
						  falseBlocks[6] = 7;
						  }else if(i<9 && j<6){
						  falseBlocks = 8;  //καταχώρηση σε πίνακα
						  } else {
						  falseBlocks = 9;
						  }
			      }
			}
		}
	}
}
    

} 

 

Δημοσ.

Οκ φίλε σε ευχαριστώ πολύ...Δεν βλέπω καλά μάλλον

 

 

 

Η λογική του αλγορίθμου μου πώς σου φαίνεται;

Δημοσ.

Η λογικη του αλγοριθμου σου μου φαινεται σωστα δομημενη αλλα

πρεπει να κοιταξεις λιγο τις παραμετρους και αν τα

εχεις ορισει ολα σωστα βαση το πως λειτουργει το σουντοκου.

παντως για να μην πονοκεφαλιαζεις λογικα αμα ψαξεις στο ιντερνετ

μπορει να βρεις και παρομοιο κωδικα. Ωραιο προγραμματακι παντως αμα το

το τελειωσεις κανε καμια παραθεση να το δουμε.

Δημοσ.

Δεν λέει αν το βρω έτοιμο...

Θέλω να κάνω το ίδιο και με δυναμική διαχείρηση μνήμης...Ελπίζω να προλάβω...

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

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

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

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

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

Σύνδεση

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

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