Rosetta Code:Solve a Task: Difference between revisions

From Rosetta Code
Content added Content deleted
No edit summary
Line 14: Line 14:
==Adding Code==
==Adding Code==


Language examples on each page are in alphabetical order, so you need to find where your example would fit. Once you've found that, click the "edit" link closest above the area where you want to insert your code on the task page, and add something like this to the bottom of the edit field:
PROGRAM-ID. ARMSTRONG-NUMS.

DATA DIVISION.
<pre>
WORKING-STORAGE SECTION.

01 num-length PIC 9(2) value 0.
=={{header|Ayrch}}==
01 in-sum PIC 9(9) value 0.

01 counter PIC 9(9) value 0.
<lang Ayrch>PRINT "Goodbye, World!"</lang>
01 current-number PIC 9(9) value 0.

01 temp PIC 9(9) value 0.
</pre>
01 modulo PIC 9(9) value 0.

01 answer PIC 9 .
Remember, for the sake of simplicity, we're assuming your language is Ayrch, and the task is [[Hello world]]. We're also assuming, for the moment, that Ayrch looks a lot like BASIC.
PROCEDURE DIVISION.

MAIN-PROCEDURE.
Once you've added your code, hit the preview button to make sure you crossed all your T's and closed all your tags. If the language name shows up in red (a broken link), then either the language doesn't exist on the site yet (as a category), or you misspelled/mis-capitalized the name. Check your spelling against the one in [[:Category:Programming Languages]].
DISPLAY "the first 25 armstrong numbers " .

MOVE 25 TO counter.
That's all you really need to do!
PERFORM UNTIL counter=0
PERFORM 000-ARMSTRONG-PARA
IF answer = 1
SUBTRACT 1 from counter
GIVING counter
DISPLAY current-number
END-IF
ADD 1 to current-number
END-PERFORM
STOP RUN.
000-ARMSTRONG-PARA.
MOVE ZERO to in-sum.
MOVE current-number to temp.
COMPUTE num-length =1+ Function Log10(temp)
PERFORM UNTIL temp=0
DIVIDE temp BY 10 GIVING temp
REMAINDER modulo
COMPUTE modulo=modulo**num-length
ADD modulo to in-sum GIVING in-sum
END-PERFORM.
IF current-number=in-sum
MOVE 1 TO answer
ELSE MOVE 0 TO answer
END-if.
END PROGRAM ARMSTRONG-NUMS.


=Going a little further=
=Going a little further=

Revision as of 19:10, 8 November 2017

So you'd like to solve a task? Great! Here's a brief walkthrough on how you might do that. While you may already have a task and a language in mind, we're going to assume the language is "Ayrch", and the task is Hello world. If the language you're familiar with doesn't already have a presence on Rosetta Code, consider going through the motions of adding a language. If you don't have a task in mind, check out our lists of unsolved tasks.

The Basics

Quickly getting started, this is all you really need to do.

Copyright

Please familiarize yourself with Rosetta Code's copyright policies. If you want the layman's summary: Don't post code you don't have permission to, and be aware that you're giving us (and others) permission to use it under specific conditions.

Solve the task

It is best to read the task thoroughly, solve it, and check your solution before starting to edit the Rosetta Code page, (especially for tasks needing more than a very short solution).

Adding Code

      PROGRAM-ID. ARMSTRONG-NUMS.
      DATA DIVISION.
      WORKING-STORAGE SECTION.
          01 num-length PIC 9(2) value 0.
          01 in-sum PIC  9(9) value 0.
          01 counter PIC  9(9) value 0.
          01 current-number PIC  9(9) value 0.
          01 temp PIC  9(9) value 0.
          01 modulo PIC  9(9) value 0.
          01 answer PIC  9 .
      PROCEDURE DIVISION.
      MAIN-PROCEDURE.
          DISPLAY "the first 25 armstrong numbers " .
          MOVE 25 TO counter.
          PERFORM UNTIL counter=0
              PERFORM 000-ARMSTRONG-PARA
                  IF answer = 1 
                      SUBTRACT 1 from counter
                      GIVING counter
                      DISPLAY current-number
                  END-IF
                  ADD 1 to current-number
              END-PERFORM
           STOP RUN.
      000-ARMSTRONG-PARA.
            MOVE ZERO to in-sum.
            MOVE current-number to temp.
            COMPUTE num-length =1+  Function Log10(temp)
            PERFORM  UNTIL temp=0
                 DIVIDE temp BY 10 GIVING temp
                           REMAINDER  modulo          
                 COMPUTE modulo=modulo**num-length
                 ADD modulo to in-sum GIVING in-sum
           END-PERFORM.
              IF current-number=in-sum
                  MOVE 1 TO answer
                  ELSE MOVE 0 TO answer
              END-if.          
      END PROGRAM ARMSTRONG-NUMS.

Going a little further

If you want to give your code that spit and polish shine, there are a few more steps you can take.

Comments and Description

Consider adding descriptions to your code examples, to help the reader understand what's going on. This is particularly helpful if your code or language paradigms are very unlike ones that are already commonly known. Regardless, it's considered good practice in any environment where you would like other people to understand what you've written.

Libraries

It's perfectly all right to depend on external (or even non-standard) libraries in your code examples. However, it can be problematic for others if they don't know they need to use a library, or don't know where to find it. There's a template for that: libheader.

=={{header|Ayrch}}==

{{libheader|Ayrch Console Extensions}}

<lang ayrch>PRINT "Goodbye World!"</lang>

Works With

Not all code works with all versions of a language, all versions of a compiler, interpreter or other implementation, or even all operating systems that the language may run on. If you're aware of certain constraints or other prerequisites that haven't already been mentioned, try using the works with template.

=={{header|Ayrch}}==

{{works with|Ayrch Virtual Machine|6.2}}

<lang ayrch>PRINT "Goodbye World!"</lang>

Conclusion

Thank you for adding code, and even more thanks if you added the spit and polish to make your code shine!

Where to go?

Now that you've solved one task, you might like to be reminded that there are lists of all the unsolved tasks for all of the languages that have a presence on Rosetta Code. If your preferred language isn't there, then you may need to go through the motions of adding a language in order to get the site software to automatically generate the list.