Witam. Mam następujący problem. Mam program Generator sudoku. W kodzie zawarty jest printf
niestety potrzebuję zamienić to na cout
lecz nie wiem jak. Czy ktoś może mi podpowiedzieć albo pomóc?
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <conio.h>
struct sudoku { //nazwa struktury
int p; //przechowuje liczby
int b; //odpowiada za wyswietlanie/chowanie liczb w ukrytej tablicy
};
int sudoku(struct sudoku tablica[9][9],int x, int y){
// printf("%d %d", x,y);
int tab[9] = {1,1,1,1,1,1,1,1,1};//same jedynki
int i,j;
for(i=0;i<y;++i){//sprawdza x;sy
tab[tablica[x][i].p-1]=0; //jesli jest to dajesz 0
}
for(i=0;i<x;++i){//sprawdza y'ki
tab[tablica[i][y].p-1]=0; //jesli jest to to dajesz
}
for(i=(3*(x/3));i<(3*(x/3)+3);++i){ //znajduje pierwszy pjt w kwadracie, wpierw x
for(j=(3*(y/3));j<y;++j){ //...potem y'k
tab[tablica[i][j].p-1]=0; //sprawdza jaka liczba jest i wstawia 0 jesli nie mozna juz jej wstawić
}
}
int n=0;
for(i=0;i<9;++i){
n=n+tab[i];//sprawdza wielkosc tablicy
}
int *tab2; //nowa tablica z rozmiarem n
tab2=(int*)malloc(sizeof(int)*n);
j=0; //bedzie potrzebny do wskazania punktu
for(i=0;i<9;++i){
if(tab[i]==1){
tab2[j]=i+1;
j++;
}
}
// int los=rand()%n;//losuje indeks z tabliczy liczb
// tablica[x][y]=tab2[los];//przypisuje do tablicy x y wylosowana liczbe z tab2 z indeksem [los]
// tab2[los]=tab2[n-1]; //mam tab2 z liczbami i zmniejszam tablice o jeden
// //wylosowana liczbe zabieramy, a ostatnia wstawiamy na jej miejsce
// n--;//skrocenie tablicy
int ny, nx;// odpowiadaja za pozycje
if(x==8){
ny=y+1; //wiekszamy y'k
nx=0; //zeruje x zeby przesunac na kolejny wiersz "potem"
}
else {
ny=y; //bez zmian
nx=x+1;//przesuwamy x w prawo
}
// int spr;
// printf("\n\n\t\tnx %d, ny %d", nx, ny);
// scanf("%d", &spr);
while(n>0){
int los=rand()%n;//losuje indeks z tabliczy liczb
tablica[x][y].p=tab2[los];//przypisuje do tablicy x y wylosowana liczbe z tab2 z indeksem [los]
tab2[los]=tab2[n-1]; //mam tab2 z liczbami i zmniejszam tablice o jeden
n--;
if(x==8 && y==8) {
free(tab2); // unikam wycieku pamieci
return 1;
}
if (sudoku(tablica,nx,ny)==1){
free(tab2); // unikam wycieku pamieci
return 1;
} //jesli zwraca 1 to znaczy ze sie udalo to losuj kolejny raz nowa
}
free(tab2); // unikam wycieku pamieci
return 0;
}
int pokazt(struct sudoku tablica[9][9]){ //pokaz tablice w ktorej nie ukrylem cyfr, tablica prawidlowa
int i=0,j=0;
printf("\nP R A W I D L O W A T A B L I C A\n\n");
for(i=0;i<9;++i){
for(j=0;j<9;++j){
printf("%d ", tablica[i][j]);
if(j==2 || j==5) printf("| ");
if(i==2 && j==8 || i==5 && j==8) printf("\n- - - - - - - - - - -");
}
printf("\n");
}
}
int ukryjl(struct sudoku tablica[9][9]){//funkcja ukrywa liczby
int i=0,j=0;//zmienne potrzebne
for(i=0;i<9;++i){//robie zeby ukryte pola byly zresetowane
for(j=0;j<9;++j){
tablica[i][j].b=0;
}
}
for(i=0;i<28;++i){
tablica[rand()%9][rand()%9].b=1;
}
}
int wypisz(struct sudoku tablica[9][9]){
int i=0,j=0;
printf("U K R Y T A T A B L I C A\n"
"Gra polega na wstawieniu liczb od 1 do 9 w kazdym kwadracie\n"
"tak aby zadna z liczb nie powtarzala sie ani w wierszu, ani w kolumnie,\nani w zadnym kwadracie.\n"
"Wystarczy przepisac na kartke i zaczynamy gre :) Powodzenia!\n\n");
for(i=0;i<9;++i){
for(j=0;j<9;++j){
if(tablica[i][j].b==0){
printf(". ");
} //nic nie ma
else printf("%d ", tablica[i][j].p);
if(j==2 || j==5) printf("| ");
if(i==2 && j==8 || i==5 && j==8) printf("\n- - - - - - - - - - -");
}
printf("\n");
}
}
int main(){
srand(time(NULL));
int i=0,j=0;
struct sudoku tablica[9][9];//[x][y]
sudoku(tablica,0,0);//pierwsze wywolanie
ukryjl(tablica);
wypisz(tablica);
pokazt(tablica);
//getch();
return 0;
}