• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 03:01
CEST 09:01
KST 16:01
  • 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
Code S Season 1 (2026) - RO4 & Finals Preview4[ASL21] Ro4 Preview: On Course12Code S Season 1 - RO8 Preview7[ASL21] Ro8 Preview Pt2: Progenitors8Code S Season 1 - RO12 Group A: Rogue, Percival, Solar, Zoun13
Community News
Code S Season 1 (2026) - RO8 Results2Weekly Cups (May 4-10): Clem, MaxPax, herO win1Maestros of The Game 2 announcement and schedule !11Weekly Cups (April 27-May 4): Clem takes triple0RSL Revival: Season 5 - Qualifiers and Main Event12
StarCraft 2
General
Team Liquid Map Contest #22 - The Finalists Code S Season 1 (2026) - RO4 & Finals Preview Code S Season 1 (2026) - RO8 Results Code S Season 1 (2026) - RO12 Results MaNa leaves Team Liquid
Tourneys
GSL Code S Season 1 (2026) Sparkling Tuna Cup - Weekly Open Tournament KSL Week 89 2026 GSL Season 2 Qualifiers Maestros of The Game 2 announcement and schedule !
Strategy
Custom Maps
[D]RTS in all its shapes and glory <3 [A] Nemrods 1/4 players
External Content
The PondCast: SC2 News & Results Mutation # 526 Rubber and Glue Mutation # 525 Wheel of Misfortune Mutation # 524 Death and Taxes
Brood War
General
vespene.gg — BW replays in browser Data needed BGH Auto Balance -> http://bghmmr.eu/ Pros React to: TvT Masterclass in FlaSh vs Light BW General Discussion
Tourneys
[ASL21] Semifinals B [BSL22] RO8 Bracket Stage + Another TieBreaker [ASL21] Ro8 Day 4 Escore Tournament StarCraft Season 2
Strategy
Muta micro map competition Fighting Spirit mining rates [G] Hydra ZvZ: An Introduction Simple Questions, Simple Answers
Other Games
General Games
Stormgate/Frost Giant Megathread Warcraft III: The Frozen Throne Nintendo Switch Thread Path of Exile Starcraft Tabletop Miniature Game
Dota 2
The Story of Wings Gaming
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Vanilla Mini Mafia Mafia Game Mode Feedback/Ideas TL Mafia Community Thread Five o'clock TL Mafia
Community
General
US Politics Mega-thread European Politico-economics QA Mega-thread YouTube Thread Russo-Ukrainian War Thread UK Politics Mega-thread
Fan Clubs
The herO Fan Club!
Media & Entertainment
[Manga] One Piece Anime Discussion Thread [Req][Books] Good Fantasy/SciFi books
Sports
2024 - 2026 Football Thread McBoner: A hockey love story Formula 1 Discussion
World Cup 2022
Tech Support
streaming software Strange computer issues (software) [G] How to Block Livestream Ads
TL Community
Travel Agencies vs Online Booking Platforms The Automated Ban List
Blogs
Why RTS gamers make better f…
gosubay
How EEG Data Can Predict Gam…
TrAiDoS
ramps on octagon
StaticNine
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1707 users

c++ help? - Page 2

Blogs > tossinYoSalad
Post a Reply
Prev 1 2 3 Next All
prOxi.swAMi
Profile Blog Joined November 2004
Australia3091 Posts
October 14 2009 03:48 GMT
#21
Wow, that's messy :S needs mass refactoring.
A tip for writing procedurally complex code like that is to employ comment-first coding which allows you to understand exactly what it is you need to do before you even write it. This code was obviously written "as you went along".

Start fresh, write a bunch of pseudocode in comments, then all you should have to do is fill in the logic under the comments.
Oh no
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
October 14 2009 03:53 GMT
#22
On October 14 2009 12:48 prOxi.swAMi wrote:
Wow, that's messy :S needs mass refactoring.
A tip for writing procedurally complex code like that is to employ comment-first coding which allows you to understand exactly what it is you need to do before you even write it. This code was obviously written "as you went along".

Start fresh, write a bunch of pseudocode in comments, then all you should have to do is fill in the logic under the comments.


uhh were you looking at the most recent version? cuz its very simple now lol. and.. this is due in 10 mins so i dont really have time to do it. its logically correct, ive had 4 people look at it and agree, but for some reason its endlessly looping between 4 method calls and.. well idk. ill just submit it as is and hope for the best. oddly enough correctness is NOT a huge part of our project grades.

thanks for help everyone, especially yenta.
SonuvBob
Profile Blog Joined October 2006
Aiur21550 Posts
Last Edited: 2009-10-14 03:59:16
October 14 2009 03:56 GMT
#23
Did you move gridCopy[curr_x][curr_y] = 0; to before the recursive calls?

On October 14 2009 12:53 tossinYoSalad wrote:
oddly enough correctness is NOT a huge part of our project grades.

Yeah, I'd take clean code that doesn't quite work over that mess you started with any day. Adding anything to that would be a nightmare, but fixing the newer version should be easy.
Administrator
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
Last Edited: 2009-10-14 04:00:06
October 14 2009 03:58 GMT
#24
On October 14 2009 12:56 SonuvBob wrote:
Did you move gridCopy[curr_x][curr_y] = 0; to before the recursive calls?


yes i did



edit: haha well thats what i get when i wait till last day to do programming assignments. this is like the 10th class ive taken involving programming and this is the only assignment ive EVER had problems with.
yenta
Profile Blog Joined April 2006
Poland1142 Posts
October 14 2009 04:00 GMT
#25
On October 14 2009 12:35 yenta wrote:
Show nested quote +
On October 14 2009 11:34 tossinYoSalad wrote:
On October 14 2009 11:29 yenta wrote:
On October 14 2009 11:16 tossinYoSalad wrote:
On October 14 2009 11:12 yenta wrote:
What are the INPUTs and OUTPUTs of this function supposed to be?


all it does is count the number of blobs and keep track of the recursion depth. numBlobs is incremented immediately after the while loop and recDepth is incremented at the end of the function.

i know its a horrible implementation believe me.


Rewrite it like this:

RECURSIVE CALLER
Initialize count
Initialize array of array with flags (w/e you want)
FOR( 0...x )
FOR( 0..y )
if point @ x,y is unchecked & x.y is a space, call recursive worker
//FOR
//FOR
return w/e

RECURSIVE WORKER ( root, current_x, current_y, pointer to 2D array, ref to count )
base case:
return if out of bounds
return if space you're looking has been marked 'looked at'
recursive case:
count adj spaces by calling self with: ( x-1,y ), ( x+1, y), (x, y+1), (x, y-1) + diagonals if they count.
if adj spaces > 0 & root == true, increment counter //endif
mark current space as read
END


thanks alot, what do you mean by root though? and because the 2d array is a class var i dont need to pass it though do i?

look at this:
http://pastebin.com/m7c4ab47d


quoting myself incase you missed the solution i posted :p
Trutacz Practice Discord - https://discord.gg/PWF7Pv
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
October 14 2009 04:07 GMT
#26
On October 14 2009 13:00 yenta wrote:
Show nested quote +
On October 14 2009 12:35 yenta wrote:
On October 14 2009 11:34 tossinYoSalad wrote:
On October 14 2009 11:29 yenta wrote:
On October 14 2009 11:16 tossinYoSalad wrote:
On October 14 2009 11:12 yenta wrote:
What are the INPUTs and OUTPUTs of this function supposed to be?


all it does is count the number of blobs and keep track of the recursion depth. numBlobs is incremented immediately after the while loop and recDepth is incremented at the end of the function.

i know its a horrible implementation believe me.


Rewrite it like this:

RECURSIVE CALLER
Initialize count
Initialize array of array with flags (w/e you want)
FOR( 0...x )
FOR( 0..y )
if point @ x,y is unchecked & x.y is a space, call recursive worker
//FOR
//FOR
return w/e

RECURSIVE WORKER ( root, current_x, current_y, pointer to 2D array, ref to count )
base case:
return if out of bounds
return if space you're looking has been marked 'looked at'
recursive case:
count adj spaces by calling self with: ( x-1,y ), ( x+1, y), (x, y+1), (x, y-1) + diagonals if they count.
if adj spaces > 0 & root == true, increment counter //endif
mark current space as read
END


thanks alot, what do you mean by root though? and because the 2d array is a class var i dont need to pass it though do i?

look at this:
http://pastebin.com/m7c4ab47d


quoting myself incase you missed the solution i posted :p



holy shit i didnt see that before lol. thanks man but its too late now. you can see my final solution at http://pastebin.com/d3918f10e.

i modified your solution slightly to simply have every call of processWork mark off an entire blob and then every iteration of the loop in processGrid increment the number of blobs.
ph33r
Profile Joined June 2007
Canada58 Posts
October 14 2009 04:10 GMT
#27
line 13:
you have an assignment instead of condition
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
October 14 2009 04:14 GMT
#28
[image loading]


hey if anyone is curious.. i fixed it, 10 minutes after project was due. sonovbob found the broken code like 10 posts back i just missed it lol. it was the comparison == , and i was using =. fucking stupid c++ compiler should catch that lol.

anyway... thats what it does.
AeTheReal
Profile Joined June 2009
United States108 Posts
October 14 2009 05:16 GMT
#29
On October 14 2009 13:14 tossinYoSalad wrote:
sonovbob found the broken code like 10 posts back i just missed it lol.

... did he now?
Slithe
Profile Blog Joined February 2007
United States985 Posts
October 14 2009 05:19 GMT
#30
The compiler's not going to catch it because it's a legal operation, not an error. When you do an assignment, the assigned variable is the return value.
imDerek
Profile Blog Joined August 2007
United States1944 Posts
Last Edited: 2009-10-14 06:06:30
October 14 2009 06:00 GMT
#31
Least favorite progamers: Leta, Zero, Mind, Shine, free, really <-- newly added
GogoKodo
Profile Blog Joined April 2003
Canada1785 Posts
October 14 2009 06:07 GMT
#32
On October 14 2009 13:14 tossinYoSalad wrote:

hey if anyone is curious.. i fixed it, 10 minutes after project was due. sonovbob found the broken code like 10 posts back i just missed it lol. it was the comparison == , and i was using =. fucking stupid c++ compiler should catch that lol.

anyway... thats what it does.

It's not a compile error so it shouldn't catch that. Doing assignment within a conditional is a pretty normal thing to do.
If you want some help from the compiler I believe there are certain warning flags you can set that will give a warning if you do not parenthesize the assignment within the conditional.

if( something = newSomething)
...
Could be set up to give you a compiler warning which would then go away if it was changed to
if( (something = newSomething) )
...

Can't remember the exact flag you need but I'm sure you can google it easily enough.
twitter: @terrancem
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
Last Edited: 2009-10-14 06:32:55
October 14 2009 06:31 GMT
#33
On October 14 2009 14:16 AeTheReal wrote:
Show nested quote +
On October 14 2009 13:14 tossinYoSalad wrote:
sonovbob found the broken code like 10 posts back i just missed it lol.

... did he now?



yes.. yes.. he did.


as to the assignment within a conditional, yeah i know its a legal operation i was just mad that i didnt catch it lol. I normally don't mess that up so I don't think to check it.

also, when would you need to do an assignment within a conditional? i cant really find a use for that..
SonuvBob
Profile Blog Joined October 2006
Aiur21550 Posts
October 14 2009 06:32 GMT
#34
On October 14 2009 14:16 AeTheReal wrote:
Show nested quote +
On October 14 2009 13:14 tossinYoSalad wrote:
sonovbob found the broken code like 10 posts back i just missed it lol.

... did he now?

I must've used my admin powers to post it as someone else.
Administrator
EtherealDeath
Profile Blog Joined July 2007
United States8366 Posts
October 14 2009 06:40 GMT
#35
On October 14 2009 13:14 tossinYoSalad wrote:
[image loading]


hey if anyone is curious.. i fixed it, 10 minutes after project was due. sonovbob found the broken code like 10 posts back i just missed it lol. it was the comparison == , and i was using =. fucking stupid c++ compiler should catch that lol.

anyway... thats what it does.



Recursion depth 534 o.O
Didn't read the code, though that seems like a lot of recursion. Prolly would've done it by recursively calling hasBlobProperty() and having the outer layer go through every array position that hasn't already been marked as having a part of a blob there, and the second layer would keep track of the # of blobs. But apparently your method works so it's all good =)
Amnesia
Profile Blog Joined September 2009
United States3818 Posts
October 14 2009 06:41 GMT
#36
Jesus christ, you guys are so awesome. I wish I knew a programming language. Just looking at the way you talk makes my head hurt.

Is C++ hard to learn?
EtherealDeath
Profile Blog Joined July 2007
United States8366 Posts
Last Edited: 2009-10-14 06:45:47
October 14 2009 06:43 GMT
#37
nah C++ is pretty easy, although nowadays I suggest you learn Java or C#

EDIT: Although, if I recall correctly C# can execute up to 40 times slower than C++, and the JVM means Java is slower as well (but you would learn the details yourself in a Java course). Of course, efficiency usually won't matter too much... though I think most games are not made with Java/C# (WoW for instance is written in C++), but you would use a lot of C# and Java in other programming jobs.
GogoKodo
Profile Blog Joined April 2003
Canada1785 Posts
October 14 2009 06:52 GMT
#38
On October 14 2009 15:31 tossinYoSalad wrote:
Show nested quote +
On October 14 2009 14:16 AeTheReal wrote:
On October 14 2009 13:14 tossinYoSalad wrote:
sonovbob found the broken code like 10 posts back i just missed it lol.

... did he now?



yes.. yes.. he did.


as to the assignment within a conditional, yeah i know its a legal operation i was just mad that i didnt catch it lol. I normally don't mess that up so I don't think to check it.

also, when would you need to do an assignment within a conditional? i cant really find a use for that..


I don't think it's ever a necessity (could be wrong), it's just a nice convenience for a lot of things.
twitter: @terrancem
Disregard
Profile Blog Joined March 2007
China10252 Posts
Last Edited: 2009-10-14 07:00:27
October 14 2009 06:59 GMT
#39
Damn, this looks a lot harder than Java. Does C++ use the same operators?
"If I had to take a drug in order to be free, I'm screwed. Freedom exists in the mind, otherwise it doesn't exist."
Slithe
Profile Blog Joined February 2007
United States985 Posts
October 14 2009 07:14 GMT
#40
The issue with c++ is that there are a lot of nuances to it that gives it a steeper learning curve. As a result, one is a lot more error-prone when writing c++ code.

Regarding the assignment inside a conditional, here's random example code where it might be used:

char[] str = "Hello TeamLiquid!"
char c;
for (int i = 0; (c=str[i]) != 0; i++) {
printf("Letter: %c", c);
}

From a stylistic point of view, I don't think it's usually a particularly good idea, but it would be inconsistent to treat the assignment differently just because it was placed inside a conditional statement.
Prev 1 2 3 Next All
Please log in or register to reply.
Live Events Refresh
OSC
00:00
OSC Elite Rising Star #19
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
WinterStarcraft638
StarCraft: Brood War
Sea 5232
GuemChi 3781
JYJ 452
HiyA 96
NaDa 24
Bale 16
Noble 13
Dota 2
NeuroSwarm119
League of Legends
JimRising 700
Counter-Strike
Coldzera 1719
Stewie2K1099
Super Smash Bros
Westballz22
Other Games
summit1g12496
C9.Mang0275
monkeys_forever218
RuFF_SC239
Organizations
Other Games
gamesdonequick654
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 12 non-featured ]
StarCraft 2
• Berry_CruncH160
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Rush1283
Upcoming Events
Replay Cast
2h
Wardi Open
5h
Monday Night Weeklies
9h
Replay Cast
17h
The PondCast
1d 3h
Kung Fu Cup
1d 4h
GSL
2 days
Replay Cast
2 days
GSL
3 days
WardiTV Spring Champion…
3 days
[ Show More ]
Replay Cast
3 days
Sparkling Tuna Cup
4 days
WardiTV Spring Champion…
4 days
Replay Cast
4 days
RSL Revival
5 days
Classic vs SHIN
Rogue vs Bunny
BSL
5 days
Replay Cast
5 days
Afreeca Starleague
5 days
Flash vs Soma
RSL Revival
6 days
BSL
6 days
Patches Events
6 days
Liquipedia Results

Completed

Escore Tournament S2: W7
2026 GSL S1
Nations Cup 2026

Ongoing

BSL Season 22
ASL Season 21
IPSL Spring 2026
KCM Race Survival 2026 Season 2
Acropolis #4
KK 2v2 League Season 1
BSL 22 Non-Korean Championship
YSL S3
SCTL 2026 Spring
RSL Revival: Season 5
Heroes Pulsing #1
Asian Champions League 2026
IEM Atlanta 2026
PGL Astana 2026
BLAST Rivals Spring 2026
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
BLAST Open Spring 2026
ESL Pro League S23 Finals
ESL Pro League S23 Stage 1&2

Upcoming

Escore Tournament S2: W8
CSLAN 4
Kung Fu Cup 2026 Grand Finals
HSC XXIX
uThermal 2v2 2026 Main Event
Maestros of the Game 2
WardiTV Spring 2026
2026 GSL S2
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
XSE Pro League 2026
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
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.