• 1

Array pseudocode


Question

"Design a program that lets the user enter 20 numbers. It should store the numbers in an array and then display the following data: lowest number, highest number, total of numbers, and the average of numbers."

 

I just want to know if this looks correct! It's the first array problem I have done.

 

  Quote

 

Constant Integer SIZE = 20

Declare Real numbers

Declare Integer index

Declare Real num, highest, lowest, total, avg

 

For index = 0 to SIZE ? 1

   Display ?Enter a number?

   Input num

   Set numbers[index] = num

End For

 

Set highest = getHigest(numbers, SIZE)

Display "Higest:", highest

Set lowest = getLowest(numbers, SIZE)

Display "Lowest:", lowest

Set total = getTotal(numbers, SIZE)

Display "Total:", total

Set avg = total / SIZE

Display "Average:", avg

 

Function Real getHighest(Real array[], Integer size)

   Declare Integer index

   Declare Real highest = array[0]

   For index = 1 to size ? 1

      If array[index] > highest Then

         Set highest = array[index]

   End For

   Return highest

End Function

 

Function Real getLowest(Real array[], Integer size)

   Declare Integer index

   Declare Real lowest = array[0]

   For index = 1 to size ? 1

      If array[index] < lowest Then

         Set lowest = array[index]

      End If

   End For

   Return lowest

End Function

 

Function Real getTotal(Real array[], Integer size)

   Declare Real total = 0

   Declare Integer index

   For index = 0 to size ? 1

      Set total = total + array[index]

   End For

   Return total

End Function

 

 

 

Link to comment
https://www.neowin.net/forum/topic/1183365-array-pseudocode/
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Looks good to me.

You have Highest, Lowest, Average, Total.

You have the cap of 20, and it uses an array.   You seem to loop through correctly.   One thing you could do is the fact you constant SIZE and the Array[] is declared as a member variable.. you don't need to pass them into the functions.  If the point is to make it dynamic so ANY could be passed in.. then keep it how it is, otherwise you could do it without extra functions. 

Also, most Arrays have a size anyways instead of needing to pass one in you could just call that (Array.size() or simmilar).

  • 0

Looks good for the mostpart, can't fault your logic. Couple of pointers:

  • It's never a good idea to have two variables named the same. See that in your list of global variables (around line 4) you have variables called "index", "highest", "lowest", "total", but then you also have local variables in each function with the same name. In an implementation of your program, it's possible that your logic would fail due to the fact that you'd try to declare the same variable twice.
    • I'd give your globals different names (e.g. highest_result, lowest_result, etc). This would avoid any possible name clashes.
  • A foreach syntax might work better for the loops in your functions, rather than using your SIZE constant everywhere.
    • for each number in array
          if number < lowest
              set lowest = number
          end
      end
Other than that I think it looks pretty spot on :)
  • 0
  On 21/10/2013 at 12:23, Majesticmerc said:

Looks good for the mostpart, can't fault your logic. Couple of pointers:

  • It's never a good idea to have two variables named the same. See that in your list of global variables (around line 4) you have variables called "index", "highest", "lowest", "total", but then you also have local variables in each function with the same name. In an implementation of your program, it's possible that your logic would fail due to the fact that you'd try to declare the same variable twice.
    • I'd give your globals different names (e.g. highest_result, lowest_result, etc). This would avoid any possible name clashes.
  • A foreach syntax might work better for the loops in your functions, rather than using your SIZE constant everywhere.
    • for each number in array
          if number < lowest
              set lowest = number
          end
      end
Other than that I think it looks pretty spot on :)

 

Thank you for the pointers!  :)

  • 0
  On 21/10/2013 at 12:16, firey said:

Looks good to me.

You have Highest, Lowest, Average, Total.

You have the cap of 20, and it uses an array.   You seem to loop through correctly.   One thing you could do is the fact you constant SIZE and the Array[] is declared as a member variable.. you don't need to pass them into the functions.  If the point is to make it dynamic so ANY could be passed in.. then keep it how it is, otherwise you could do it without extra functions. 

Also, most Arrays have a size anyways instead of needing to pass one in you could just call that (Array.size() or simmilar).

Thank you for the help!

This topic is now closed to further replies.
  • Posts

    • I don't know, I haven't checked what changed in previous sockets. I agree that the 1156-1155-1151 succession was suspicious, with a reduction in pin count every time. Intel could do a better job of pre-allocating pins for future use. Another hypothesis is that the internal layout of their CPUs change, like the I/O is moved from one place to another on the chip, and they need to reorganize pins rather than having circuitry go into spaghetti mode to remain compatible. I agree that if AMD is able to maintain compatibility, Intel should be able to do the same, at least by reserving pins for future use and then using those pins when a need for them arises. However, I wouldn't say that AMD's products are entirely better. Intel's I/O now slightly edges out thanks to having double the bandwidth to the chipset and dedicated Thunderbolt lanes to the CPU. It seems that they could widen their lead with the next platform. NVMe SSDs have increased the need for PCIe lanes significantly, and AM5 has been pretty underwhelming in that regard, especially because the chipset connection is so narrow and gets saturated with just 1 gen 4 SSD, leaving the other chipset connectivity (Ethernet, Wi-Fi, audio, etc) to hope for any remaining bandwidth. Otherwise motherboard manufacturers could also make more x2 M.2 slots, those would be fast enough at gen 5 speeds and possibly at gen 4 speeds too.
    • Exactly, the E-cores actually give you good performance for what they offer, it's no surprise that Intel is doubling down on more E-cores instead of more P-cores. The LP-cores are good for when you're system is just sitting there idle and waiting to be used. Every core has it's place tbh, it's just up to Intel to and MS to work to get the scheduler right.
  • Recent Achievements

    • Week One Done
      korostelev earned a badge
      Week One Done
    • Week One Done
      rozermack875 earned a badge
      Week One Done
    • Week One Done
      oneworldtechnologies earned a badge
      Week One Done
    • Veteran
      matthiew went up a rank
      Veteran
    • Enthusiast
      Motoman26 went up a rank
      Enthusiast
  • Popular Contributors

    1. 1
      +primortal
      675
    2. 2
      ATLien_0
      264
    3. 3
      Michael Scrip
      184
    4. 4
      +FloatingFatMan
      177
    5. 5
      Steven P.
      140
  • Tell a friend

    Love Neowin? Tell a friend!