• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 23:03
CEST 05:03
KST 12:03
  • 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
[ASL22] Ro4 Preview: Mirror Mirror4[ASL22] Ro8 Preview: Within Reach5[ASL22] Ro8 Preview: In A Tizzy11[ASL22] Ro16 Preview: Holy Diver5[ASL22] Ro16 Preview: Rough Waters10
Community News
Rollback Netcode in Brood War395.0.17 Patch Notes - October 7, 202621Weekly Cups Results (Sep 28-Oct 4)0SC4ALL: II SC2 Complete Invited Player Lineup10StarCraft II 5.0.17 PTR Patch Notes (Sept 30, 2026)78
StarCraft 2
General
5.0.17 Patch Notes - October 7, 2026 [Old] StarCraft 3 Reportedly in Development StarCraft II 5.0.17 PTR Patch Notes (Sept 30, 2026) How do you feel about the mass reverts in the 5.0.17 PTR? Weekly Cups Results (Sep 28-Oct 4)
Tourneys
ScienceCraft (October 24-25) - Live Event RSL 2026 Offline Finals LCQ Sign-Ups Stellar Fest TWO the Moon (Dec 16-20) ISSL (IntoTheTV x SOOP SC2 League): Premier Sparkling Tuna Cup - Weekly Open Tournament
Strategy
[H] ZvP Mid-Late Game: Stalkers Collossi HT
Custom Maps
[M] (2) Sweltering Sands [M] (2) Frigid Storage
External Content
Mutation # 546 Catch the Train The PondCast: SC2 News & Results Mutation # 545 And Drops and Rifts Mutation # 544 Double Trouble
Brood War
General
TL Sidebar missing streams Rollback Netcode in Brood War Bot on ladder Repalyzer - replay analysis app for StarCraft: Rem Making an Online Broodwar Manager Game
Tourneys
[Megathread] Daily Proleagues [ASL22] Semifinal A [ASL22] Semifinal B [ASL22] Ro8 Day 4
Strategy
Simple Questions, Simple Answers Cliff Jump Revisited (1 in a 1000 strategy) Replay Review Process - What do you do?
Other Games
General Games
Nintendo Switch Thread General RTS Discussion Thread Warcraft III: The Frozen Throne Stormgate/Frost Giant Megathread Total Annihilation Zero
Dota 2
Dota 2 Champions League Season 3 Begins April 25! Official 'what is Dota anymore' discussion
League of Legends
[TL LoL EUW IHs] Teemo shall perish
Heroes of the Storm
Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
TL Mafia Community Thread
Community
General
US Politics Mega-thread Things Aren’t Peaceful in Palestine Russo-Ukrainian War Thread Artificial Intelligence Thread Canadian Politics Mega-thread
Fan Clubs
Serral Fan Club
Media & Entertainment
[Manga] One Piece Movie Discussion! Diablo Animated Series on Netflix
Sports
TeamLiquid Health and Fitness Initiative For 2023 Football (Soccer) Thread MLB/Baseball 2023
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
Recent Gifted Posts
Blogs
[ASL22] Ro4 Day1 Ticket Giv…
bITt.mAN
Escaping Into Video Games: G…
TrAiDoS
38 yo Retired SWE loo…
PurE)Rabbit-SF
Can Bots Beat Pros?? Starcr…
namkraft
[meme] I finally understa…
LUCKY_NOOB
Customize Sidebar...

Website Feedback

Closed Threads



Active: 9445 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
Aiur21552 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
Poland1143 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
Aiur21552 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
08:00
OSC Elite Rising Star #21
CranKy Ducklings54
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
RuFF_SC2 167
PiLiPiLi 44
StarCraft: Brood War
Rain 2830
ViBE146
Bale 22
Dota 2
monkeys_forever412
NeuroSwarm208
Counter-Strike
summit1g7343
taco 574
Other Games
JimRising 588
WinterStarcraft361
C9.Mang0317
Organizations
Other Games
gamesdonequick1036
BasetradeTV166
[ Show 14 non-featured ]
StarCraft 2
• CranKy Ducklings SOOP104
• Hupsaiya 94
• davetesta28
• practicex 24
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• Migwel
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Other Games
• Scarra1114
• Shiphtur303
Upcoming Events
Big Brain Bouts
6h 57m
Rex vs INexorable
GgMaChine vs HeRoMaRinE
Reynor vs herO
Online Event
8h 57m
AI Arena Tournament
13h 57m
BSL: Ladder Tournament
15h 57m
Sparkling Tuna Cup
1d 6h
Patches Events
1d 11h
BSL Open Qualifier
1d 15h
BSL Open Qualifier
1d 15h
OSC
2 days
WardiTV Weekly
3 days
[ Show More ]
PiGosaur Cup
3 days
The PondCast
5 days
Online Event
6 days
Korean StarCraft League
6 days
Liquipedia Results

Completed

Acropolis #5 - GSB
Blizzard Classic Cup 2026
Copium Cup

Ongoing

ASL Season 22
Super Anchor Qualifying S3
Acropolis #5
HCC Season 3
ESL Pro League Season 24
Stake Ranked Episode 4
1win Private Club #1
Logitech G Play Connect 2026
SL StarSeries Fall 2026
FISSURE Playground #3
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026

Upcoming

Acropolis #5 - GSC
BSL Season 23
SC4ALL II: Brood War
BSL 23: Non-Korean Championship
HSC XXX
Stellar Fest 2: Lunar Cup
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
RSL Offline Finals
eXTREMESLAND 2026
PGL Major Singapore 2026
Stake Ranked Episode 6
BLAST Rivals Fall 2026
IEM Beijing 2026
Stake Ranked Episode 5
PGL Masters Bucharest 2026
1win Private Club #2
Thunderpick World Champ. '26
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.