• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EST 03:24
CET 09:24
KST 17:24
  • 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
Behind the Blue - Team Liquid History Book2Clem wins HomeStory Cup 287HomeStory Cup 28 - Info & Preview13Rongyi Cup S3 - Preview & Info3herO wins SC2 All-Star Invitational14
Community News
Weekly Cups (Jan 26-Feb 1): herO, Clem, ByuN, Classic win2RSL Season 4 announced for March-April7Weekly Cups (Jan 19-25): Bunny, Trigger, MaxPax win3Weekly Cups (Jan 12-18): herO, MaxPax, Solar win0BSL Season 2025 - Full Overview and Conclusion8
StarCraft 2
General
Behind the Blue - Team Liquid History Book Clem wins HomeStory Cup 28 How do you think the 5.0.15 balance patch (Oct 2025) for StarCraft II has affected the game? HomeStory Cup 28 - Info & Preview Stellar Fest "01" Jersey Charity Auction
Tourneys
HomeStory Cup 28 $5,000 WardiTV Winter Championship 2026 RSL Season 4 announced for March-April PIG STY FESTIVAL 7.0! (19 Feb - 1 Mar) StarCraft Evolution League (SC Evo Biweekly)
Strategy
Custom Maps
[A] Starcraft Sound Mod
External Content
Mutation # 511 Temple of Rebirth The PondCast: SC2 News & Results Mutation # 510 Safety Violation Mutation # 509 Doomsday Report
Brood War
General
Can someone share very abbreviated BW cliffnotes? [ASL21] Potential Map Candidates Gypsy to Korea StarCraft player reflex TE scores 2024 BoxeR's birthday message
Tourneys
[Megathread] Daily Proleagues Escore Tournament StarCraft Season 1 Small VOD Thread 2.0 KCM Race Survival 2026 Season 1
Strategy
Zealot bombing is no longer popular? Simple Questions, Simple Answers Current Meta Soma's 9 hatch build from ASL Game 2
Other Games
General Games
Diablo 2 thread Battle Aces/David Kim RTS Megathread EVE Corporation Nintendo Switch Thread Path of Exile
Dota 2
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 Heroes of StarCraft mini-set
TL Mafia
Mafia Game Mode Feedback/Ideas Vanilla Mini Mafia
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread YouTube Thread The Games Industry And ATVI Things Aren’t Peaceful in Palestine
Fan Clubs
The herO Fan Club! The IdrA Fan Club
Media & Entertainment
[Manga] One Piece Anime Discussion Thread
Sports
2024 - 2026 Football Thread
World Cup 2022
Tech Support
TL Community
The Automated Ban List
Blogs
Play, Watch, Drink: Esports …
TrAiDoS
My 2025 Magic: The Gathering…
DARKING
Life Update and thoughts.
FuDDx
How do archons sleep?
8882
James Bond movies ranking - pa…
Topin
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1295 users

c++ help?

Blogs > tossinYoSalad
Post a Reply
1 2 3 Next All
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
Last Edited: 2009-10-14 02:15:20
October 14 2009 02:01 GMT
#1
Ok, so this project is due in 2 hours, and I've been working on it all day. It's pretty much done but it's just not working and I just can't stare at it any more. Can someone help?

The project is basically analyzing contiguous spaces in a two-dimensional array (find the blobs). A blob is 2 or more contiguous spaces in the array. I've figured out how to find the blobs using a stack, and I think I implemented it correctly but it's not working for some reason. The code hangs within the while loop so I'm assuming something in there is wrong. here is the code:

http://pastebin.com/d30e116f3

^^pastebin now.

I know its way over commented, I'm a total noob at c++ (mostly code in java,asm, and python) and it got confusing with braces and shit. I also know this could be done way more efficiently but I don't really care at this point, I just need it to work. The following DOES work: importing grid from text file, displaying the grid, and everything else. the above method hangs in the while loop and I can't figure out why. Help PLEASE!

b3h47pte
Profile Blog Joined May 2007
United States1317 Posts
Last Edited: 2009-10-14 02:05:19
October 14 2009 02:05 GMT
#2
Use http://pastebin.com/
it hurts my eyes looking at that...>>
fabiano
Profile Blog Joined August 2009
Brazil4644 Posts
October 14 2009 02:06 GMT
#3
with no identation its impossible to read anything
"When the geyser died, a probe came out" - SirJolt
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
October 14 2009 02:06 GMT
#4
http://pastebin.com/m588911d8

sorry, wish tl had code tags lol.
Eti307
Profile Blog Joined March 2004
Canada3442 Posts
October 14 2009 02:08 GMT
#5
Wow that's way to messy, sorry I'm not touching that
was the //startif //endif comments really necessary? lol

Where exactly does it hang? use the debugger, might give you a clue
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
October 14 2009 02:12 GMT
#6
On October 14 2009 11:08 Eti307 wrote:
Wow that's way to messy, sorry I'm not touching that
was the //startif //endif comments really necessary? lol

Where exactly does it hang? use the debugger, might give you a clue


the startif endif i put it so i could check and see if i was missing a bracket when i was fixing syntax errors. i can clean it real fast.
yenta
Profile Blog Joined April 2006
Poland1142 Posts
October 14 2009 02:12 GMT
#7
What are the INPUTs and OUTPUTs of this function supposed to be?
Trutacz Practice Discord - https://discord.gg/PWF7Pv
Eti307
Profile Blog Joined March 2004
Canada3442 Posts
October 14 2009 02:16 GMT
#8
On October 14 2009 11:12 tossinYoSalad wrote:
Show nested quote +
On October 14 2009 11:08 Eti307 wrote:
Wow that's way to messy, sorry I'm not touching that
was the //startif //endif comments really necessary? lol

Where exactly does it hang? use the debugger, might give you a clue


the startif endif i put it so i could check and see if i was missing a bracket when i was fixing syntax errors. i can clean it real fast.


instead of doing that just type in both brackets each and everytime you are using something with brackets. Prevents those type of errors
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
Last Edited: 2009-10-14 02:21:40
October 14 2009 02:16 GMT
#9
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.

there is no input it acts on a grid held in the class (just a two-dim array of ints) its called gridCopy. theGrid is the same thing only its an arr of chars (this teacher is psycho, i had to do it this way)
i know its a horrible implementation believe me.
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
October 14 2009 02:17 GMT
#10
On October 14 2009 11:16 Eti307 wrote:
Show nested quote +
On October 14 2009 11:12 tossinYoSalad wrote:
On October 14 2009 11:08 Eti307 wrote:
Wow that's way to messy, sorry I'm not touching that
was the //startif //endif comments really necessary? lol

Where exactly does it hang? use the debugger, might give you a clue


the startif endif i put it so i could check and see if i was missing a bracket when i was fixing syntax errors. i can clean it real fast.


instead of doing that just type in both brackets each and everytime you are using something with brackets. Prevents those type of errors


ya i do, i also needed to put a a few lines in specific places at the end and there were 5 braces in a row at the end lol.
yenta
Profile Blog Joined April 2006
Poland1142 Posts
October 14 2009 02:29 GMT
#11
On October 14 2009 11:16 tossinYoSalad wrote:
Show nested quote +
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
Trutacz Practice Discord - https://discord.gg/PWF7Pv
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
October 14 2009 02:34 GMT
#12
On October 14 2009 11:29 yenta wrote:
Show nested quote +
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?
Slithe
Profile Blog Joined February 2007
United States985 Posts
Last Edited: 2009-10-14 02:39:04
October 14 2009 02:38 GMT
#13
I only very briefly skimmed it so I may be way off, but it looks like your bounds checking is wrong?

Your Code:
if (rowPtr-1 > 0)
if(rowPtr+1 < theGrid.getRows())

I'm assuming you're trying to make sure that 0 <= rowPtr < theGrid.getRows(). If that's the case, then shouldn't it be:

if (rowPtr+1 > 0)
if(rowPtr < theGrid.getRows())
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
Last Edited: 2009-10-14 02:50:38
October 14 2009 02:42 GMT
#14
On October 14 2009 11:38 Slithe wrote:
I only very briefly skimmed it so I may be way off, but it looks like your bounds checking is wrong?

Your Code:
if (rowPtr-1 > 0)
if(rowPtr+1 < theGrid.getRows())

I'm assuming you're trying to make sure that 0 <= rowPtr < theGrid.getRows(). If that's the case, then shouldn't it be:

if (rowPtr+1 > 0)
if(rowPtr < theGrid.getRows())


uhh you were sorta right, but you DID point out an error it needs to be if(rowPtr-1 >= 0) otherwise itll never enter those code segments on the leftmost or rightmost bounds.

but yes it needs to be within the bounds of [0,theGrid.getRows()], but because it can only exceed the left bound on a -1, and it can only exceed the right bound on a +1 i ommited those calls.

fixed it to that and still didnt work. I think its a stack error in the original code, but now im rewriting with yenta's suggestion, only thing i dont get is how to actually count the blobs using that method, i can get it to pass over all the blocks, but no way to tell when the end of a blob has been reached.
FaCE_1
Profile Blog Joined December 2006
Canada6183 Posts
October 14 2009 03:02 GMT
#15
due in 2 hours.. if it was due in 2 days, i could help
n_n
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
October 14 2009 03:09 GMT
#16
http://pastebin.com/d3e835a75

its been updated. its almost done, can anyone help finish it?
AeTheReal
Profile Joined June 2009
United States108 Posts
October 14 2009 03:22 GMT
#17
Well, that's a major change from when I started looking at it...

As far as I can tell, the previous version of the code did not work because you never modified the value of a cell when you added it to the stack in the while loop. And since you keep on adding more items to the stack which each added more since nothing was being ruled out on subsequent loops, the while loop never ends. Also, you are probably supposed to check your bounds to be "var >= 0" instead of "var > 0" unless you don't need to check the 0 index for some reason.

In your new code your upper bound should be comparing ">=" theGrid.getRows() instead. Same for the .getCols() one.

else if(gridCopy[curr_x][curr_y] == 0){return;}

Use double equal signs for comparisons. Common mistake.

gridCopy[curr_x][curr_y] = 0;

That should go before you make the recursive calls or you'll get the same error.


Hope this helps.
SonuvBob
Profile Blog Joined October 2006
Aiur21550 Posts
Last Edited: 2009-10-14 03:43:16
October 14 2009 03:29 GMT
#18
No idea what this thing is supposed to do, but your counter doesn't increment.

edit: oh, didn't read the whole OP I guess
Administrator
AeTheReal
Profile Joined June 2009
United States108 Posts
October 14 2009 03:33 GMT
#19
I'm pretty sure that's supposed to count the number of blobs. Unfortunately, the code doesn't ever determine whether each location is part of a blob or not.
yenta
Profile Blog Joined April 2006
Poland1142 Posts
October 14 2009 03:35 GMT
#20
On October 14 2009 11:34 tossinYoSalad wrote:
Show nested quote +
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
Trutacz Practice Discord - https://discord.gg/PWF7Pv
1 2 3 Next All
Please log in or register to reply.
Live Events Refresh
Next event in 2h 36m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
SortOf 80
StarCraft: Brood War
Hyuk 664
Leta 226
Dewaltoss 131
Shine 69
Shuttle 57
sSak 49
Backho 30
GoRush 23
yabsab 4
Dota 2
NeuroSwarm147
febbydoto50
League of Legends
JimRising 660
Super Smash Bros
hungrybox486
Mew2King22
Other Games
Happy454
C9.Mang0284
mouzStarbuck75
Livibee64
Organizations
Other Games
gamesdonequick1084
StarCraft: Brood War
lovetv 32
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 13 non-featured ]
StarCraft 2
• Berry_CruncH134
• practicex 51
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Jankos973
Upcoming Events
RongYI Cup
2h 36m
herO vs Maru
SC Evo League
4h 36m
Replay Cast
15h 36m
uThermal 2v2 Circuit
1d 3h
WardiTV Winter Champion…
1d 3h
OSC
1d 15h
Replay Cast
2 days
Wardi Open
2 days
Monday Night Weeklies
2 days
Sparkling Tuna Cup
3 days
[ Show More ]
LiuLi Cup
3 days
PiGosaur Monday
3 days
LiuLi Cup
4 days
The PondCast
5 days
KCM Race Survival
5 days
LiuLi Cup
5 days
Online Event
6 days
LiuLi Cup
6 days
Liquipedia Results

Completed

Acropolis #4 - TS4
HSC XXVIII
Underdog Cup #3

Ongoing

CSL 2025 WINTER (S19)
KCM Race Survival 2026 Season 1
Rongyi Cup S3
Nations Cup 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual
eXTREMESLAND 2025
SL Budapest Major 2025
ESL Impact League Season 8

Upcoming

Escore Tournament S1: W8
Acropolis #4
IPSL Spring 2026
HSC XXIX
uThermal 2v2 2026 Main Event
Bellum Gens Elite Stara Zagora 2026
RSL Revival: Season 4
WardiTV Winter 2026
LiuLi Cup: 2025 Grand Finals
FISSURE Playground #3
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
BLAST Open Spring 2026
ESL Pro League Season 23
ESL Pro League Season 23
PGL Cluj-Napoca 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.