• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 19:09
CEST 01:09
KST 08:09
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
Serral wins Maestros of the Game 231ByuL, and the Limitations of Standard Play3Team Liquid Map Contest #22: Results and Winners7Code S Season 2 (2026): RO4 and Finals Preview12TL.net Map Contest #22 - Voting & Ladder Map Selection7
Community News
Weekly Cups (June 29-July 5): Solar Doubles0MC vs IdrA, Boxer vs Nal_rA to be Legacy Matches @ BlizzCon415.0.16 Hotfix (June 30) - Balance + Bug Fixes40Weekly Cups (June 22-28): Zergs thrive in new patch5[TLMC] Summer 2026 Ladder Map Rotation0
StarCraft 2
General
Serral wins Maestros of the Game 2 Is the larve respawn broken? 5.0.16 patch for SC2 goes live (8 worker start) 5.0.16 Hotfix (June 30) - Balance + Bug Fixes Weekly Cups (June 29-July 5): Solar Doubles
Tourneys
Crank Gathers Season 4: BW vs SC2 Team League GSL CK #5 Race War HomeStory Cup 29 RSL Revival: Season 6 - Qualifiers and Main Event Vespene Cup #1 — $300+ USD, July 10
Strategy
[G] Having the right mentality to improve
Custom Maps
New Map Maker - Looking for Advice - Love or Hate Work In Progress Melee Maps [D]RTS in all its shapes and glory <3
External Content
Mutation # 533 Die Together The PondCast: SC2 News & Results Mutation # 532 Nuclear Family Mutation # 531 Experimental Artillery
Brood War
General
Snow On New ASL S22 Map, Zerg Nerf ASL 22 Proposed Map Pool BW General Discussion BGH Auto Balance -> http://bghmmr.eu/ Starcraft vs Retro Category on Twitch
Tourneys
CSLAN 4 is Coming! Escore Tournament StarCraft Season 2 The Casual Games of the Week Thread [Megathread] Daily Proleagues
Strategy
Simple Questions, Simple Answers Creating a full chart of Zerg builds Relatively freeroll strategies Why doesn't anyone use restoration?
Other Games
General Games
Stormgate/Frost Giant Megathread Dawn of War IV Nintendo Switch Thread Summer Games Done Quick 2026! ZeroSpace at Steam NextFest - Last free demo
Dota 2
Looking for a Dota Mentor Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
NeO.D_StephenKing vs This Guy From 1 Million Dance TL Mafia Community Thread TL Mafia Power Rank Vanilla Mini Mafia
Community
General
Russo-Ukrainian War Thread US Politics Mega-thread UK Politics Mega-thread YouTube Thread Canadian Politics Mega-thread
Fan Clubs
The HerO Fan Club!
Media & Entertainment
Anime Discussion Thread Movie Discussion! Series you have seen recently... [Req][Books] Good Fantasy/SciFi books [TV/BOOK] *SPOILERS* Game of Thrones Discussion
Sports
2024 - 2026 Football Thread McBoner: A hockey love story Tennis[sport] Formula 1 Discussion TeamLiquid Health and Fitness Initiative For 2023
World Cup 2022
Tech Support
FPS when play League Of Legend on laptop How to clean a TTe Thermaltake keyboard? Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List
Blogs
Major Shifts in the Gaming I…
TrAiDoS
An Exploration of th…
waywardstrategy
Gauntlet SC2: A Retrospectiv…
Ctone23
ramps on octagon
StaticNine
Funny Nicknames
LUCKY_NOOB
Evil Gacha Games and the…
ffswowsucks
Customize Sidebar...

Website Feedback

Closed Threads



Active: 9234 users

The Big Programming Thread - Page 158

Forum Index > General Forum
Post a Reply
Prev 1 156 157 158 159 160 1032 Next
Thread Rules
1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution.
2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20)
3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible.
4. Use [code] tags to format code blocks.
SiPa
Profile Joined July 2010
Germany129 Posts
August 22 2012 07:22 GMT
#3141
What is wrong with this lines of code

#include <glib.h>


GArray *position1;
GArray *position2;
GArray *velocity1;
GArray *velocity2;

position1 = g_array_new(FALSE, FALSE, sizeof (double));
position2 = g_array_new(FALSE, FALSE, sizeof (double));
velocity1 = g_array_new(FALSE, FALSE, sizeof (GArray));
velocity2 = g_array_new(FALSE, FALSE, sizeof (GArray));


Compiler says something about "int" and "int *", also something about a Constant and that "this declaration has no storage class or type specifier".

fearpLug
Profile Joined July 2011
Germany153 Posts
August 22 2012 07:30 GMT
#3142
On August 22 2012 16:22 SiPa wrote:
What is wrong with this lines of code

#include <glib.h>


GArray *position1;
GArray *position2;
GArray *velocity1;
GArray *velocity2;

position1 = g_array_new(FALSE, FALSE, sizeof (double));
position2 = g_array_new(FALSE, FALSE, sizeof (double));
velocity1 = g_array_new(FALSE, FALSE, sizeof (GArray));
velocity2 = g_array_new(FALSE, FALSE, sizeof (GArray));


Compiler says something about "int" and "int *", also something about a Constant and that "this declaration has no storage class or type specifier".



I've not coded in a very long time, but is there supposed to be a "space" between the sizeof function and the brackets of that very function?
And i think a clear compiler message, would help alot =)
SiPa
Profile Joined July 2010
Germany129 Posts
August 22 2012 07:34 GMT
#3143
On August 22 2012 16:30 fearpLug wrote:
Show nested quote +
On August 22 2012 16:22 SiPa wrote:
What is wrong with this lines of code

#include <glib.h>


GArray *position1;
GArray *position2;
GArray *velocity1;
GArray *velocity2;

position1 = g_array_new(FALSE, FALSE, sizeof (double));
position2 = g_array_new(FALSE, FALSE, sizeof (double));
velocity1 = g_array_new(FALSE, FALSE, sizeof (GArray));
velocity2 = g_array_new(FALSE, FALSE, sizeof (GArray));


Compiler says something about "int" and "int *", also something about a Constant and that "this declaration has no storage class or type specifier".



I've not coded in a very long time, but is there supposed to be a "space" between the sizeof function and the brackets of that very function?
And i think a clear compiler message, would help alot =)


Error messages are in german, what i gave you are pretty "clear" translations.
Well, error-codes are:
error C2143 in line 4-7
errors C2040 and 2099 in line 9-12
"IntelliSense: this declaration has no storage class or type specifier" in line 9-12
Also: although i told my compiler (Microsoft VisualStudio 2010 to compile in C, it produces errors even in garray.h
I now believe there's something wrong with my GLib stuff :S
fearpLug
Profile Joined July 2011
Germany153 Posts
Last Edited: 2012-08-22 07:49:46
August 22 2012 07:42 GMT
#3144
Ich würde dir raten, hier nochmal nach zu lesen =)
http://developer.gnome.org/glib/2.31/glib-Arrays.html#GArray
Also so wie ich das sehe, ich habe nämlich grade nochmal durchgeschaut, machst du das richtig..
und MSDN sagt auch lustige sachen über die fehler..

User was warned for this post
SiPa
Profile Joined July 2010
Germany129 Posts
Last Edited: 2012-08-22 07:52:09
August 22 2012 07:49 GMT
#3145
 


#include <stdlib.h>
#include <stdio.h>

#include <glib.h>

int main(void)
{
//Random stuff, that works!
int x = 3;
int y = 2;
int z = 0;
int i = 0;
for (i= 0; i<=100000000; ++i)
{
z = x + y;
printf("%d\n", z);
}

//Stuff that doesnt work
GArray *position1;
GArray *position2;
GArray *velocity1;
GArray *velocity2;

position1 = g_array_new(FALSE, FALSE, sizeof(double));
position2 = g_array_new(FALSE, FALSE, sizeof(double));
velocity1 = g_array_new(FALSE, FALSE, sizeof(GArray));
velocity2 = g_array_new(FALSE, FALSE, sizeof(GArray));

return 0;
}


http://imgur.com/L2Umo

I will commence writing in english, so other ppl dont get annoyed; only thing in german will be the errors...
Sooo
I dont see much difference between this and the example-code, exept for me using double and GArray for sizeof().
fearpLug
Profile Joined July 2011
Germany153 Posts
August 22 2012 07:55 GMT
#3146
so the problem is, that ur compiler wont accept the declaration of the Garray data type, therefore everything that follows wont work. thats what the compiler said ;D
SiPa
Profile Joined July 2010
Germany129 Posts
August 22 2012 07:58 GMT
#3147
any idea what i can do?
I'm kinda lost here...
fearpLug
Profile Joined July 2011
Germany153 Posts
Last Edited: 2012-08-22 08:15:08
August 22 2012 08:02 GMT
#3148
gimme a sec ill install a compiler and test it my self, 5 mins^^
edit: sorry cant seem to get the compiler working at my company pc, damn security and all 8/

Hm if i had to take a guess, its either a wrong compiler and implemented glib or ur compiler isnt liking glib at( buggy ).
U could test to either do a new document and see if this fixes it, or could try another compiler.
If both dont seem to be the error, well then there not much i can think of, cause ur syntax seems 2 be right.
SiPa
Profile Joined July 2010
Germany129 Posts
Last Edited: 2012-08-22 09:55:26
August 22 2012 08:17 GMT
#3149
Hmk, i guess i dont really have to use GLib...it wouldve been just so much easier.
Well thx for your time and all ^^
Pimpmuckl
Profile Joined March 2011
Germany528 Posts
August 22 2012 10:20 GMT
#3150
Hmm stayed in this thread for 12 hours straight, should maybe Grab some food...

Now to my question: I've spent the Last half year working on a OS written in C for a microcontroller on with a Studio called Avr Studio 4 where for example different types of integers (u_int8) and several Hardware specific small "Extras" were used, how well did that teach me "General" C? I'm a bit curios, which Ressource to Test my skills can you guys recommend? Thanks in advance.

Sorry for Bad spelling my german autocorrect runs crazy on my phone TT.
twitter.com/pimpmuckl
waxypants
Profile Blog Joined September 2009
United States479 Posts
Last Edited: 2012-08-24 04:32:52
August 24 2012 04:32 GMT
#3151
On August 22 2012 16:49 SiPa wrote:

...

http://imgur.com/L2Umo

I will commence writing in english, so other ppl dont get annoyed; only thing in german will be the errors...
Sooo
I dont see much difference between this and the example-code, exept for me using double and GArray for sizeof().


All variables need to be declared at the top. So you can you do this:


int main(void)
{
//Random stuff, that works!
int x = 3;
int y = 2;
int z = 0;
int i = 0;
GArray *position1;
GArray *position2;
GArray *velocity1;
GArray *velocity2;

for (i= 0; i<=100000000; ++i)
{
z = x + y;
printf("%d\n", z);
}

position1 = g_array_new(FALSE, FALSE, sizeof(double));
position2 = g_array_new(FALSE, FALSE, sizeof(double));
velocity1 = g_array_new(FALSE, FALSE, sizeof(GArray));
velocity2 = g_array_new(FALSE, FALSE, sizeof(GArray));

return 0;
}


or this:


int main(void)
{
//Random stuff, that works!
int x = 3;
int y = 2;
int z = 0;
int i = 0;
GArray *position1 = g_array_new(FALSE, FALSE, sizeof(double));
GArray *position2 = g_array_new(FALSE, FALSE, sizeof(double));
GArray *velocity1 = g_array_new(FALSE, FALSE, sizeof(GArray));
GArray *velocity2 = g_array_new(FALSE, FALSE, sizeof(GArray));

for (i= 0; i<=100000000; ++i)
{
z = x + y;
printf("%d\n", z);
}

return 0;
}
waxypants
Profile Blog Joined September 2009
United States479 Posts
Last Edited: 2012-08-24 04:47:38
August 24 2012 04:42 GMT
#3152
On August 22 2012 19:20 Pimpmuckl wrote:
Hmm stayed in this thread for 12 hours straight, should maybe Grab some food...

Now to my question: I've spent the Last half year working on a OS written in C for a microcontroller on with a Studio called Avr Studio 4 where for example different types of integers (u_int8) and several Hardware specific small "Extras" were used, how well did that teach me "General" C? I'm a bit curios, which Ressource to Test my skills can you guys recommend? Thanks in advance.

Sorry for Bad spelling my german autocorrect runs crazy on my phone TT.


I'm not sure I entirely understand your question. Are you worried because standard C doesn't have a "u_int8" type? If so, then don't worry, people define their integer types in sorts of ways and you can always define it yourself if you want to use a certain type-scheme. Like: typedef unsigned char uint_8; If your OS class was as hard as mine was, then I'm sure that all that you learned will make you a much better "general" C programmer. To test your skills, find more shit to program
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
August 24 2012 07:25 GMT
#3153
On August 22 2012 19:20 Pimpmuckl wrote:
Hmm stayed in this thread for 12 hours straight, should maybe Grab some food...

Now to my question: I've spent the Last half year working on a OS written in C for a microcontroller on with a Studio called Avr Studio 4 where for example different types of integers (u_int8) and several Hardware specific small "Extras" were used, how well did that teach me "General" C? I'm a bit curios, which Ressource to Test my skills can you guys recommend? Thanks in advance.

Sorry for Bad spelling my german autocorrect runs crazy on my phone TT.


I dabbled in microprocessor programming and while it teaches you a lot about memory management and such, it also teaches you a horrible style that is very focussed on keeping the program and memory footprint small. That is nice in normal C applications but in many cases completely destroys the maintainability of the software.

In normal programming, wasting memory and processing time is in 99.9% of the cases better than writing ugly but efficient code (as long as it's not "leaking memory").

As for testing your skills, i liked http://projecteuler.net/ a lot, though it is not directly for programming and very math focussed but you can improve your problem solving and logic skills through it.
FinnGamer
Profile Blog Joined December 2010
Germany2426 Posts
Last Edited: 2012-08-25 15:03:20
August 25 2012 14:55 GMT
#3154
EDIT: Nevermind changing repaint to paint(getGraphics()); solved my problem
"hopefully swing the favor in your advantage." - Day[9]
TheRabidDeer
Profile Blog Joined May 2003
United States3806 Posts
August 25 2012 21:39 GMT
#3155
So, I am just starting college again (majoring in CS specialized in programming) and I really hate my job at the moment. I was wondering if anybody knew what kind of programming language could net decent part time pay or can nab random jobs for a couple hundred here and there off craigslist or something. My mom was telling me that drupal or wordpress would be a good start and is in high demand, but I wanted to check around and see what other people think.
KainiT
Profile Joined July 2011
Austria392 Posts
August 27 2012 09:24 GMT
#3156
Hey you programming pros, i need some help as I have problems with the sudoku backtracking algorithm.
I am pretty sure my other programm parts are fine and it is just the actual algorithm.

Here is the code:


void solve(int r=0, int c=0, bool forward=1) //solving algorithm
{
cout << "funktionseinstieg"<<endl; //debugging information
if(vordefiniertefelderarray[r][c]==0) //see if field is predefined
{
for(int i=0; i<9; i++)
{
cout <<"schleifenanfang"<<endl; //debugging information
sudfeld[r][c]+=1; //increase value until it fits
feldausgeben(sudfeld); //debugging information
if(!check(r,c,sudfeld[r][c])) //see if value fits
{
cout << "check war negativ"<<endl;
if(c==8&&r==8) //solving should end here if it's already the last field
{
feldausgeben(sudfeld);
return;
}
i=9; //not really sure if i need this, probably not
if(c<8) //go to next field after right value was found
solve(r,c+1,true);
else solve(r+1,0,true);

}
else //go to previous field if right value coul not be found and set current value to 0 again
{
if(sudfeld[r][c]==9)
{
sudfeld[r][c]=0;
if(c>0)
solve(r,c-1,false);
else solve(r-1,8,false);
}
}
}
}
else //if field was predefined
{
cout<<"feldschonbelegt"; //debugging information
if(c==8&&r==8) ////solving should end here if it's already the last field
{
feldausgeben(sudfeld); //debugging information
return;
}
if(forward) //go to next field if forward value is true, previous field if not
{
if(c<8)
solve(r,c+1,true);
else solve(r+1,0,true);
}
else
{
if(c>0)
solve(r,c-1,false);
else solve(r-1,8,false);
}

}
}


I hope you don't mind to much that some function's names are in german. I commented extensively in english to make up for that.
The problems appearantly start when the programm needs to go to a previous field. Possibly involving predefined values.
Thanks in advance.
If somebody would like to see the whole code:

+ Show Spoiler +


#include <iostream>
using namespace std;

int sudfeld[9][9];
int vordefiniertefelderarray[9][9];
void feldausgeben(int feld[9][9])
{
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
cout<<feld[i][j];
if(j==8)
cout << endl;
if(i==8&&j==8)
cout << endl;
}
}
}


bool box(int row, int column, int wert)
{
sudfeld[row][column]=10;
int r= (row/3)*3;
int c= (column/3)*3;
for(int i=r;i<(r+3);i++)
{
for(int j=c;j<(c+3);j++)
{
if(sudfeld[i][j]==wert)
{

cout<<"inboxgefunden";
sudfeld[row][column]=wert;
return true;
}
}
}
sudfeld[row][column]=wert;
return false;
}

bool zeile(int row,int column, int wert)
{
sudfeld[row][column]=10;
for(int i=0;(i<9);i++)
{
if(sudfeld[row][i]==wert)
{
cout<<"inzeilegefunden";
sudfeld[row][column]=wert;
return true;
}
}
sudfeld[row][column]=wert;
return false;
}



bool spalte(int row, int column, int wert)
{
sudfeld[row][column]=10;
for(int i=0;i<9;i++)
{
if(sudfeld[i][column]==wert)
{

cout<<"inspaltegefunden"<<endl;
sudfeld[row][column]=wert;
return true;
}
}
sudfeld[row][column]=wert;
return false;
}


bool check(int row, int column, int wert)
{
if(box(row,column,wert)||zeile(row,column,wert)||spalte(row,column,wert))
{
cout<<"iwogefunden"<<endl;
return true;

}
else
return false;
}


void solve(int r=0, int c=0, bool forward=1) //solving algorithm
{
cout << "funktionseinstieg"<<endl; //debugging information
if(vordefiniertefelderarray[r][c]==0) //see if field is predefined
{
for(int i=0; i<9; i++)
{
cout <<"schleifenanfang"<<endl; //debugging information
sudfeld[r][c]+=1; //increase value until it fits
feldausgeben(sudfeld); //debugging information
if(!check(r,c,sudfeld[r][c])) //see if value fits
{
cout << "check war negativ"<<endl;
if(c==8&&r==8) //solving should end here if it's already the last field
{
feldausgeben(sudfeld);
return;
}
i=9; //not really sure if i need this, probably not
if(c<8) //go to next field after right value was found
solve(r,c+1,true);
else solve(r+1,0,true);

}
else //go to previous field if right value coul not be found and set current value to 0 again
{
if(sudfeld[r][c]==9)
{
sudfeld[r][c]=0;
if(c>0)
solve(r,c-1,false);
else solve(r-1,8,false);
}
}
}
}
else //if field was predefined
{
cout<<"feldschonbelegt"; //debugging information
if(c==8&&r==8) ////solving should end here if it's already the last field
{
feldausgeben(sudfeld); //debugging information
return;
}
if(forward) //go to next field if forward value is true, previous field if not
{
if(c<8)
solve(r,c+1,true);
else solve(r+1,0,true);
}
else
{
if(c>0)
solve(r,c-1,false);
else solve(r-1,8,false);
}

}
}

int main()
{
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
sudfeld[i][j]=0;
}
}

for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
vordefiniertefelderarray[i][j]=0;
}
}


vordefiniertefelderarray[0][5]=2;
vordefiniertefelderarray[1][6]=2;
vordefiniertefelderarray[1][7]=9;
vordefiniertefelderarray[1][8]=8;
vordefiniertefelderarray[2][2]=2;
vordefiniertefelderarray[2][3]=7;
vordefiniertefelderarray[2][6]=5;
vordefiniertefelderarray[2][8]=3;
vordefiniertefelderarray[3][1]=2;
vordefiniertefelderarray[3][4]=8;
vordefiniertefelderarray[3][5]=6;
vordefiniertefelderarray[3][8]=5;
vordefiniertefelderarray[4][2]=1;
vordefiniertefelderarray[4][6]=7;
vordefiniertefelderarray[5][1]=6;
vordefiniertefelderarray[5][2]=9;
vordefiniertefelderarray[5][3]=5;
vordefiniertefelderarray[5][5]=7;
vordefiniertefelderarray[5][6]=4;
vordefiniertefelderarray[6][2]=3;
vordefiniertefelderarray[6][4]=7;
vordefiniertefelderarray[7][0]=9;
vordefiniertefelderarray[7][2]=7;
vordefiniertefelderarray[7][5]=3;
vordefiniertefelderarray[8][1]=4;
vordefiniertefelderarray[8][2]=6;
vordefiniertefelderarray[8][3]=8;
vordefiniertefelderarray[8][4]=2;
vordefiniertefelderarray[8][5]=9;
vordefiniertefelderarray[8][7]=1;

feldausgeben(vordefiniertefelderarray);


for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
sudfeld[i][j]=vordefiniertefelderarray[i][j];
}
}

solve();

feldausgeben(sudfeld);


return 0;
}

With great power comes great responsibility.
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
Last Edited: 2012-08-27 10:12:40
August 27 2012 10:12 GMT
#3157
On August 27 2012 18:24 KainiT wrote:
Hey you programming pros, i need some help as I have problems with the sudoku backtracking algorithm.
I am pretty sure my other programm parts are fine and it is just the actual algorithm.

Here is the code:

+ Show Spoiler +

void solve(int r=0, int c=0, bool forward=1) //solving algorithm
{
cout << "funktionseinstieg"<<endl; //debugging information
if(vordefiniertefelderarray[r][c]==0) //see if field is predefined
{
for(int i=0; i<9; i++)
{
cout <<"schleifenanfang"<<endl; //debugging information
sudfeld[r][c]+=1; //increase value until it fits
feldausgeben(sudfeld); //debugging information
if(!check(r,c,sudfeld[r][c]) //see if value fits
{
cout << "check war negativ"<<endl;
if(c==8&&r==8) //solving should end here if it's already the last field
{
feldausgeben(sudfeld);
return;
}
i=9; //not really sure if i need this, probably not
if(c<8) //go to next field after right value was found
solve(r,c+1,true);
else solve(r+1,0,true);

}
else //go to previous field if right value coul not be found and set current value to 0 again
{
if(sudfeld[r][c]==9)
{
sudfeld[r][c]=0;
if(c>0)
solve(r,c-1,false);
else solve(r-1,8,false);
}
}
}
}
else //if field was predefined
{
cout<<"feldschonbelegt"; //debugging information
if(c==8&&r==8) ////solving should end here if it's already the last field
{
feldausgeben(sudfeld); //debugging information
return;
}
if(forward) //go to next field if forward value is true, previous field if not
{
if(c<8)
solve(r,c+1,true);
else solve(r+1,0,true);
}
else
{
if(c>0)
solve(r,c-1,false);
else solve(r-1,8,false);
}

}
}


I hope you don't mind to much that some function's names are in german. I commented extensively in english to make up for that.
The problems appearantly start when the programm needs to go to a previous field. Possibly involving predefined values.
Thanks in advance.
If somebody would like to see the whole code:

+ Show Spoiler +


#include <iostream>
using namespace std;

int sudfeld[9][9];
int vordefiniertefelderarray[9][9];
void feldausgeben(int feld[9][9]
{
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
cout<<feld[i][j];
if(j==8)
cout << endl;
if(i==8&&j==8)
cout << endl;
}
}
}


bool box(int row, int column, int wert)
{
sudfeld[row][column]=10;
int r= (row/3)*3;
int c= (column/3)*3;
for(int i=r;i<(r+3);i++)
{
for(int j=c;j<(c+3);j++)
{
if(sudfeld[i][j]==wert)
{

cout<<"inboxgefunden";
sudfeld[row][column]=wert;
return true;
}
}
}
sudfeld[row][column]=wert;
return false;
}

bool zeile(int row,int column, int wert)
{
sudfeld[row][column]=10;
for(int i=0;(i<9);i++)
{
if(sudfeld[row][i]==wert)
{
cout<<"inzeilegefunden";
sudfeld[row][column]=wert;
return true;
}
}
sudfeld[row][column]=wert;
return false;
}



bool spalte(int row, int column, int wert)
{
sudfeld[row][column]=10;
for(int i=0;i<9;i++)
{
if(sudfeld[i][column]==wert)
{

cout<<"inspaltegefunden"<<endl;
sudfeld[row][column]=wert;
return true;
}
}
sudfeld[row][column]=wert;
return false;
}


bool check(int row, int column, int wert)
{
if(box(row,column,wert)||zeile(row,column,wert)||spalte(row,column,wert))
{
cout<<"iwogefunden"<<endl;
return true;

}
else
return false;
}


void solve(int r=0, int c=0, bool forward=1) //solving algorithm
{
cout << "funktionseinstieg"<<endl; //debugging information
if(vordefiniertefelderarray[r][c]==0) //see if field is predefined
{
for(int i=0; i<9; i++)
{
cout <<"schleifenanfang"<<endl; //debugging information
sudfeld[r][c]+=1; //increase value until it fits
feldausgeben(sudfeld); //debugging information
if(!check(r,c,sudfeld[r][c]) //see if value fits
{
cout << "check war negativ"<<endl;
if(c==8&&r==8) //solving should end here if it's already the last field
{
feldausgeben(sudfeld);
return;
}
i=9; //not really sure if i need this, probably not
if(c<8) //go to next field after right value was found
solve(r,c+1,true);
else solve(r+1,0,true);

}
else //go to previous field if right value coul not be found and set current value to 0 again
{
if(sudfeld[r][c]==9)
{
sudfeld[r][c]=0;
if(c>0)
solve(r,c-1,false);
else solve(r-1,8,false);
}
}
}
}
else //if field was predefined
{
cout<<"feldschonbelegt"; //debugging information
if(c==8&&r==8) ////solving should end here if it's already the last field
{
feldausgeben(sudfeld); //debugging information
return;
}
if(forward) //go to next field if forward value is true, previous field if not
{
if(c<8)
solve(r,c+1,true);
else solve(r+1,0,true);
}
else
{
if(c>0)
solve(r,c-1,false);
else solve(r-1,8,false);
}

}
}

int main()
{
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
sudfeld[i][j]=0;
}
}

for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
vordefiniertefelderarray[i][j]=0;
}
}


vordefiniertefelderarray[0][5]=2;
vordefiniertefelderarray[1][6]=2;
vordefiniertefelderarray[1][7]=9;
vordefiniertefelderarray[1][8]=8;
vordefiniertefelderarray[2][2]=2;
vordefiniertefelderarray[2][3]=7;
vordefiniertefelderarray[2][6]=5;
vordefiniertefelderarray[2][8]=3;
vordefiniertefelderarray[3][1]=2;
vordefiniertefelderarray[3][4]=8;
vordefiniertefelderarray[3][5]=6;
vordefiniertefelderarray[3][8]=5;
vordefiniertefelderarray[4][2]=1;
vordefiniertefelderarray[4][6]=7;
vordefiniertefelderarray[5][1]=6;
vordefiniertefelderarray[5][2]=9;
vordefiniertefelderarray[5][3]=5;
vordefiniertefelderarray[5][5]=7;
vordefiniertefelderarray[5][6]=4;
vordefiniertefelderarray[6][2]=3;
vordefiniertefelderarray[6][4]=7;
vordefiniertefelderarray[7][0]=9;
vordefiniertefelderarray[7][2]=7;
vordefiniertefelderarray[7][5]=3;
vordefiniertefelderarray[8][1]=4;
vordefiniertefelderarray[8][2]=6;
vordefiniertefelderarray[8][3]=8;
vordefiniertefelderarray[8][4]=2;
vordefiniertefelderarray[8][5]=9;
vordefiniertefelderarray[8][7]=1;

feldausgeben(vordefiniertefelderarray);


for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
sudfeld[i][j]=vordefiniertefelderarray[i][j];
}
}

solve();

feldausgeben(sudfeld);


return 0;
}



Well, one problem is that this is a horrible mess.
You seem to try to write a recursive solution while having no clue of how to actually use recursion. You don't backtrack in recursion, you let it do that for you.

Pseudocode since my C and C++ are a little rusty and i don't have a compiler at hand. sudoku_board is a typedef, i think char** should work for that.
+ Show Spoiler +

sudoku_board solve(sudoku_board current_state, int row, int column)
{
// Makes it easier to exit the recursion than checking all the time if it's 8/8.
if (row == 9) return current_state;

// Variable to record the solved state if found
sudoku_board *solved_state = NULL;

// If the current field is predefined, skip straight to the next
if (current_state[row][column] != 0)
{
solved_state = solve(
new_state,
((column == 8) ? row + 1 : row),
((column == 8) ? 0 : column + 1)
);
}

// We need a copy of the current state to work with inside of the recursion so we don't lose the old state
sudoku_board *new_state = copy_state(current_state);

// We test each value from 1-9
// If the recursion lead to a solution (solved_state != NULL) then we don't need to check the remaining values
for (int test_value = 1; ((test_value <= 9) && (solved_state == NULL)); ++test_value)
{
// Update the new state
new_state[row][column] = test_value;

// Check if the test value is valid
if (check_state(new_state))
{
// If it is valid, solve the next field.
solved_state = solve(
new_state,
((column == 8) ? row + 1 : row),
((column == 8) ? 0 : column + 1)
);
}
}
// Memory leaks are bad, mkay?
delete_state(new_state);

// Return any found solutions. If there are no solutions in this recursive branch, it returns the initial value NULL
return solved_state;
}



Also, why do you call one variable "vordefiniertefelderarray" and others "r" and "c". Writing "array" in the name of a variable is pointless, the name of the variable itself should already say what it is. "predefined_fields" says it's an array because, well, it's plural. And whats with your wierd bracket style? I haven't seen that outside of books about bracket styles in at least a decade. Also, skipping brackets in some situations easily leads to hard to read code like the else in this part actually belonging to another if:
+ Show Spoiler +

if(c<8) //go to next field after right value was found
solve(r,c+1,true);
else solve(r+1,0,true);

}
else //go to previous field if right value coul not be found and set current value to 0 again
{
if(sudfeld[r][c]==9)
{
sudfeld[r][c]=0;
if(c>0)
solve(r,c-1,false);
else solve(r-1,8,false);
}
}
KainiT
Profile Joined July 2011
Austria392 Posts
Last Edited: 2012-08-27 10:51:27
August 27 2012 10:27 GMT
#3158
Thank you for the fast answer. I definitely need that kind of help, although I hoped people wouldn't be that harsh with me :D
I'll try to implement your suggestions and then either thank you for your input or come again crying for help^^

Hmm, I gotta say that I don't get your suggestion. How exactly would this recursion do the backtracking if no value fits the current field?

Edit: I kind of get your idea now but it is a completely different algorith -.- Was hoping mine could be fixed somehow. While I know that it's a mess I would still like to know where my errors inside the mess are :D
With great power comes great responsibility.
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
August 27 2012 10:50 GMT
#3159
On August 27 2012 19:27 KainiT wrote:
Thank you for the fast answer. I definitely need that kind of help, although I hoped people wouldn't be that harsh with me :D
I'll try to implement your suggestions and then either thank you for your input or come again crying for help^^

Hmm, I gotta say that I don't get your suggestion. How exactly would this recursion do the backtracking if no value fits the current field?


Recursion is hard to explain, it basically works that way:

solve()
|->solve()
|->solve()
|->solve()
....


If one of them doesn't find a solution, it returns NULL. That means it returns to the previous function and that then tries the next number and starts the below functions again. That is why every function call needs it's own state of the game. Once it finds a valid and completed game, it passes that down to the previous function which passes it down to it's parent, etc., until it finally arrives at the first function call.


solve(1,1)
|->1: solve(1,2) => valid
|-> 1: solve(1,3) => invalid
|-> 2: solve(1,3) => valid
|-> 1: solve(1,4) => invalid
....
|-> 1: solve(9,9) => valid, return current state

KainiT
Profile Joined July 2011
Austria392 Posts
August 27 2012 10:58 GMT
#3160
While I do admit obviously that my understanding of backtracking was stupid, I would still like to know why my algorithm doesn't work -.-
I will write the code like you suggested now but not knowing why the previous one didn't work is kind of destroying my nerves right now.
With great power comes great responsibility.
Prev 1 156 157 158 159 160 1032 Next
Please log in or register to reply.
Live Events Refresh
OSC
17:00
Mid Season Playoffs
Krystianer vs IbaLIVE!
SteadfastSC241
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
SteadfastSC 241
ViBE160
StarCraft: Brood War
Artosis 127
910 52
Dota 2
NeuroSwarm210
Counter-Strike
summit1g8204
minikerr4
Super Smash Bros
Mew2King95
PPMD25
Other Games
Grubby2961
shahzam550
C9.Mang0284
Day[9].tv42
Organizations
Other Games
gamesdonequick32162
BasetradeTV319
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 14 non-featured ]
StarCraft 2
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• HerbMon 3
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Other Games
• imaqtpie939
• Shiphtur308
• Day9tv42
Upcoming Events
Replay Cast
51m
Replay Cast
10h 51m
CrankTV Team League
11h 51m
OSC
13h 51m
Big Brain Bouts
16h 51m
Replay Cast
1d
RSL Revival
1d 9h
Serral vs Bunny
ByuN vs GgMaChine
CranKy Ducklings
1d 10h
Afreeca Starleague
1d 10h
Snow vs Jaedong
YSC vs hero
RSL Revival
2 days
Solar vs Rogue
Maru vs NightMare
[ Show More ]
Sparkling Tuna Cup
2 days
GSL
3 days
Replay Cast
4 days
WardiTV Weekly
4 days
The PondCast
5 days
Replay Cast
6 days
CrankTV Team League
6 days
Liquipedia Results

Completed

CSL Season 21: Qualifier 2
HSC XXIX
Eternal Conflict S2 E1

Ongoing

IPSL Spring 2026
Acropolis #4
YSL S3
CSL 2026 Summer (S21)
CranK Gathers Season 4: BW vs SC2 Team League
SCTL 2026 Spring
Heroes Pulsing #3
XSE Pro League 2026
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
Asian Champions League 2026
IEM Atlanta 2026
PGL Astana 2026
BLAST Rivals Spring 2026

Upcoming

Escore Tournament S3: W2
ASL Season 22: Wild Card Qualifier
CSLAN 4
Blizzard Classic Cup 2026
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
RSL Revival: Season 6
Light Tournament 2026
Eternal Conflict S2 Finale
Eternal Conflict S2 E3
Eternal Conflict S2 E2
Logitech G Connect 2026
StarSeries Fall 2026
FISSURE Playground #5
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.