Generator sudoku - zamiana printf na cout

0

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

Przeczytaj dokumentacje dla printf oraz dla cout po czym zrobisz to bez problemów.
Poza tym C++ pozwala na użycie printf - więc nie musisz zamieniać.

0

Właśnie czytam, próbuję ale coś nie wychodzi. Mógłbyś mnie jakoś naprowadzić? Na jakimś przykładzie albo kawałku tego kodu co wrzuciłem.

0

Chociażby printf("%d ", tablica[i][j]); -> std::cout << tablica[i][j];

1 użytkowników online, w tym zalogowanych: 0, gości: 1