Announcement

Collapse

The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic


Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.


If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.


Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.



Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

Programming Puzzle 1 - Simple Loop

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tom Cone Jr
    replied
    Re: Programming Puzzle 1 - Simple Loop

    So, do I get the bonus point for the least iterations?
    Sorry, no. By stepping out of the bounds created for the exercse you've earned the careful attention of our venerable scorekeeper, Prof. Pickypicky. He will be keeping a sharp eye on your future puzzle submittals!

    ps. I'd be tempted to ask him to reconsider if your script furnished a "proof" for the even number formula you employed.

    -- tom

    Leave a comment:


  • pmanandhar
    replied
    Re: Programming Puzzle 1 - Simple Loop

    hi tom,
    I wasn't really worried about the points but now you said it so I made some changes with comments, loop and message box. So, do I get the bonus point for the least iterations.
    HTML Code:
    option strict
    	'dim all variables 
    	'n1 = starting value , n2 = ending value (both inclusive) 
    	dim n1 as n = 0                  
    	dim n2 as n = 0
    	dim x1 as n = 0
    	dim x2 as n = 0
    	dim i as n = 0
    	dim add_even as n = 0	' to add even numbers
    	dim add_odd as n = 0	' to add odd number (optional)
    	dim msg as c=""
    	n1 = 101			' start value to add
    	n2 = 302			' end value to stop adding
    	x1 = n1
    	x2 = n2
    	i = 1
    	if (mod(n1,2)=0)	' check if even
    	   n1=n1-1			'subtract one because by formula works with starting value as odd and ending as even
    	end if
    	if (mod(n2,2)=1)	' similiar to above reason
    	   n2=n2-1
    	end if
    	if (mod(x1,2)=0)
    	   x1=x1+1
    	end if
    	if (mod(x2,2)=1)
    	   x2=x2+1
    	end if
    	for i = 1 to 1
    		add_even=((n2^2)-(n1^2)+(n2*2)+1)/4 'formula to add even values between n1 and n2
    		add_odd =((x2^2)-(x1^2)+(x1*2)-1)/4 'formula to add odd values between n1 and n2
    	next 
    	ui_msg_box("Total Iterations",i)
    	ui_msg_box("Total of the even numbers",add_even)
    	ui_msg_box("Total of the odd numbers",add_odd)

    Leave a comment:


  • Tom Cone Jr
    replied
    Re: Programming Puzzle 1 - Simple Loop

    Thinking outside the box, are we, now?

    Pratik, your solution gets the correct result. However, our fearless scorekeeper, "Ignatious A. Pickypicky", has deducted points for (a) the absence of explanatory comments; and (b) the failure to display the computed results in a message box. Care to try again? Maybe you'll catch Pickypicky in a better mood!

    Leave a comment:


  • pmanandhar
    replied
    Re: Programming Puzzle 1 - Simple Loop

    This is the basic, simplest and best problem for anyone learning to program. I saw some of the simplest code and a little challenging ones. I was wondering if anyone even thought to solve this without using a loop?? Anyone?? I am sorry that I'm not following the question to solve the answer but my point is to view things little differently.

    Check this out:
    Below is the code to add even/odd numbers between n1 and n2 without using any loops. I'm sorry again that I'm violating the rules of the question and not following instructions. But here is something I got.. I created a formula to add odd and even numbers.
    HTML Code:
            dim n1 as n 
    	dim n2 as n 
    	dim x1 as n 
    	dim x2 as n 
    	dim add_even as n = 0
    	dim add_odd as n = 0
    	dim msg as c=""
    	n1 = 101
    	n2 = 302
    	x1 = n1
    	x2 = n2
    	if (mod(n1,2)=0)
    	   n1=n1-1
    	end if
    	if (mod(n2,2)=1)
    	   n2=n2-1
    	end if
    	if (mod(x1,2)=0)
    	   x1=x1+1
    	end if
    	if (mod(x2,2)=1)
    	   x2=x2+1
    	end if
    	add_even=((n2^2)-(n1^2)+(n2*2)+1)/4
    	add_odd =((x2^2)-(x1^2)+(x1*2)-1)/4
    	?add_even+"<br/>"
    	?add_odd+""

    Leave a comment:


  • GGandhi
    replied
    Re: Programming Puzzle 1 - Simple Loop

    Originally posted by Tom Cone Jr View Post
    Govindan, that's very good. You've used the loop correctly. Notice several things:

    a) the message board reformatted your code, forcing every line to be left justified. You can overcome this and preserve the formatting in your script if you use the "advanced" message board editor (choose "Go Advanced" button). Then select the text to be "preserved" and apply "CODE" tags to it. If this isn't clear let us know.

    b) In these lines:
    Code:
    msg=("Total iterations: "+x+" Total of the even numbers: "+sumx)
    ui_msg_box("Total Iterations",x)
    ui_msg_box("Total of the even numbers",sumx)
    you're concatenating character strings with numeric values. To do this Alpha must convert your numeric values to character strings for you. While Alpha tries hard to do this "implied" data type conversion when it's needed, it does not always succeed. A better practice is to explicitly convert your numeric data to character strings before doing the concatenation. Check Cal Locklin's sample code in this thread (above).

    c) Also, notice that once the first "even" number is encountered, you could optimize the code by stepping through the number range two numbers at a time. Bouncing from even to even so to speak. This would cut the number of trips through loop in half if you see what I mean.

    Good work.

    -- tom
    Thank you, Much appreciated.

    gandhi

    Leave a comment:


  • CALocklin
    replied
    Re: Programming Puzzle 1 - Simple Loop

    Originally posted by Stan Mathews View Post
    ...
    'Dimming all variables in one place can make them easier to locate
    ...
    And alphabetizing a long list makes it easier also. I do this often enough that I've included a "sort clipboard" routine in my AIMS Grab Bag. (At least I think it's there. I know it's in my personal version.) The code is really simple - just one line - and could be added to a custom "Sort Clipboard" button on your Code Editor toolbar:

    clipboard.set_data( sortsubstr( clipboard.get_data(), crlf() ) )

    To use it for sorting a group of lines in your Code Editor, just highlight the lines, press Ctrl-C to copy them, click the custom button to sort them, and press Ctrl-V to replace the already selected "old" list with the sorted string. (Ctrl-V is the shortcut key for "Paste".)

    I also use this in other places. For example, I've sometimes created a crlf list for the user to select from, added and/or deleted from it, and then want to sort the list to make it easier for the user to work with.

    Leave a comment:


  • Tom Cone Jr
    replied
    Re: Programming Puzzle 1 - Simple Loop

    Govindan, that's very good. You've used the loop correctly. Notice several things:

    a) the message board reformatted your code, forcing every line to be left justified. You can overcome this and preserve the formatting in your script if you use the "advanced" message board editor (choose "Go Advanced" button). Then select the text to be "preserved" and apply "CODE" tags to it. If this isn't clear let us know.

    b) In these lines:
    Code:
    msg=("Total iterations: "+x+" Total of the even numbers: "+sumx)
    ui_msg_box("Total Iterations",x)
    ui_msg_box("Total of the even numbers",sumx)
    you're concatenating character strings with numeric values. To do this Alpha must convert your numeric values to character strings for you. While Alpha tries hard to do this "implied" data type conversion when it's needed, it does not always succeed. A better practice is to explicitly convert your numeric data to character strings before doing the concatenation. Check Cal Locklin's sample code in this thread (above).

    c) Also, notice that once the first "even" number is encountered, you could optimize the code by stepping through the number range two numbers at a time. Bouncing from even to even so to speak. This would cut the number of trips through loop in half if you see what I mean.

    Good work.

    -- tom

    Leave a comment:


  • GGandhi
    replied
    Re: Programming Puzzle 1 - Simple Loop

    puzzle conditions:
    1> use option strict
    2> add up even numbers between 101 and 302 both inclusive
    3> show the number of iterations and the result in a message box
    4> include comments.
    while i am not certainly an expert this is my attempt...

    Code:
    option strict
    'dim all variables 
    'x iteration variable, j number palce holder for start and end
    'sumx total of even nunbers
    'msg 
    dim x as n=0
    dim j as n
    dim sumx as n=0
    dim msg as c=""
    for j=101 to 302
    	x=x+1
    	if mod(j,2)=0
    		sumx=sumx+j
    		end if
    	next
    	msg=("Total iterations:  "+x+" Total of the even numbers:  "+sumx)
    	ui_msg_box("Total Iterations",x)
    	ui_msg_box("Total of the even numbers",sumx)
    	ui_msg_box("Puzzle",msg)
    Last edited by Al Buchholz; 06-03-2011, 05:04 PM. Reason: added code tags

    Leave a comment:


  • Stan Mathews
    replied
    Re: Programming Puzzle 1 - Simple Loop

    Another take using xdialog to display the results.

    Code:
    option strict
    'If you place the OPTION STRICT command at the top of a script then you must declare variables explicitly using the DIM command.
    dim entries_to_use as C = ""
    dim qx as N = 101
    dim loops as N = 0
    DIM SHARED varC_result as C
    dim ok_button_label as C = "&OK"
    'Dimming all variables in one place can make them easier to locate
    FOR qx = if(mod(qx,2)=0,qx,qx+1) TO 302 step 2 'computed starting loop value, optional step parameter
    	entries_to_use = entries_to_use+alltrim(str(qx))+crlf()
    	loops = increment_value(loops)
    NEXT qx
    qx = *total(entries_to_use) 'The *TOTAL() function totals a list of numeric entries.
    'xdialog follows to display values, The R directive makes the text in a Text Box read-only.
    varC_result = ui_dlg_box("Alpha Five",<<%dlg%
    {region}
    Loops:| [%r%.40loops];
    Sum of Values:| [%r%.40qx];
    {endregion};
    {line=1,0};
    {region}
    <*15=ok_button_label!OK>
    {endregion};
    %dlg%)

    Leave a comment:


  • Al Buchholz
    replied
    Re: Programming Puzzle 1 - Simple Loop

    Originally posted by Stan Mathews View Post
    Took some liberties with "and then display the answer in a message box....".
    Your shore liberty is canceled - again

    Leave a comment:


  • Stan Mathews
    replied
    Re: Programming Puzzle 1 - Simple Loop

    A while loop version. Some lesser used functions and methods employed.

    Code:
    option strict
    'If you place the OPTION STRICT command at the top of a script then you must declare variables explicitly using the DIM command.
    dim entries_to_use as C = ""
    dim qx as N = 101
    dim loops as N = 0
    'Dimming all variables in one place can make them easier to locate
    TRACE.CLEAR() 'Clear the Trace window before writing text to it.
    WHILE qx < 303
    	IF mod(qx,2) = 0 'checks for even number
    		entries_to_use = entries_to_use+alltrim(str(qx))+crlf() 'builds crlf() delimited string
    		traceln("Even number "+alltrim(str(qx))+" current loop value "+alltrim(str(loops))) 'writes the number and current loop to the trace window
    	END IF
    	qx = qx + 1 'increments possible values to be summed variable
    	loops = increment_value(loops) 'increments loop variable
    END WHILE
    
    qx = *total(entries_to_use) 'The *TOTAL() function totals a list of numeric entries.
    'Note that there is nothing illegal about re-using a numeric variable for a second purpose
    traceln("Sum "+alltrim(str(qx))+" total loops "+alltrim(str(loops)))
    ui_msg_box("Note","Activate the Error tab of the next window to appear."+crlf()+"to see the sum of values and loop total.")
    A5_TOGGLE_TRACE_WINDOW() 'The A5_TOGGLE_TRACE_WINDOW() function opens the Trace window if it is closed, and closes it if it is open.
    Took some liberties with "and then display the answer in a message box....".
    Last edited by Stan Mathews; 06-03-2011, 10:30 AM.

    Leave a comment:


  • Mbuso
    replied
    Re: Programming Puzzle 1 - Simple Loop

    Heres a different approach...

    will work with any two numbers from 0 to ... [tested with 1000000]

    enjoy :-)
    Attached Files
    Last edited by Mbuso; 06-03-2011, 07:21 AM. Reason: neater approach

    Leave a comment:


  • Tom Cone Jr
    replied
    Re: Programming Puzzle 1 - Simple Loop

    Yes, grasshoppers. Understanding the question is the key to enlightenment.

    For the beginners who may be lurking nearby, would anyone like to explain how the "For ... Next" loop does it's magic?

    So far no one has attempted a solution using a "While ... End While" loop. Any takers?

    Leave a comment:


  • CALocklin
    replied
    Re: Programming Puzzle 1 - Simple Loop

    Dave, I'm happy to say you don't read any better than I do!

    I completely missed the part where Tom said, "and the number of times your code iterated through your loop."

    You missed the part where he said, "sums the even numbered values". 101 wasn't even last time I checked.
    Last edited by CALocklin; 06-03-2011, 01:24 AM.

    Leave a comment:


  • DaveM
    replied
    Re: Programming Puzzle 1 - Simple Loop

    David and Cal,

    If you use the 101 instead of the 102, your answer is actually less. which is correct? Tom said 101-302.

    Leave a comment:

Working...
X