Создание функций (Liberty Basic)

РЕДАКТИРОВАТЬ:

Хорошо, я понял, как работают массивы, и эта часть, кажется, работает. У меня все еще есть проблема с функциями. Я не понимаю, как функции работают правильно. Мне нужно что-то поместить в ( ), очевидно, но я не понимаю что. Вы можете видеть, что у меня есть

search=findmonth() 

Я не уверен, что это даже хороший код для использования. У меня есть он там, где он вызывает функцию, но, конечно, из-за того, что я не знаю, как выполнять функции, он не работает. Если кто-то может объяснить, как работают функции, это было бы здорово. Вся информация, которая у меня есть, делает ее действительно запутанной и не показывает реальных примеров, которые что-либо объясняют.

Это задание, поместите его в код, чтобы он был меньше

Create two arrays

1.  Monthname$(12)    This array contains month names such as “January”, “February”, etc

2.  MilesDriven(12)   ‘ This array contains the miles driven for the month.


Notice that the MonthNames$(12) array is a string array while MilesDriven(12) is numeric array.

•    Write a program to display the menu with the following options and ask for the user input.

                    Type P to populate miles and month name.
                    Type S to search for Month.
                    Type M to search for Month name with smallest Miles
                    Type L to search for MonthName with Largest Miles
                   Type E to exit.

•   •        If the user types P.

o     Populate all the  arrays.

•   •        If the user types S then:

o   Ask the user for the Month Name.

o    Search the array for that Month Name and find its position in the Monthname array.


o    Display the MonthName$, and MilesDriven at the position found during the above search.

•   •        If the user types M then: 


o    Search the array for  the smallest miles in MilesDriven array  and  find its position.

o    Display the MonthName$, and MilesDriven at the position found during the above search.


•   •        If the user types L then:

o    Search the array for the largest Miles in MilesDriven array and  find its position.

o    Display the MonthName$, and MilesDriven at the position found during the above search.


•        If the user types E. then:

o    Terminate the program.

•        If the user types any other option:

o   Display the message “Invalid Choice. Try again” and go back and display the menu.

PS: You program must keep displaying the menu until the user types the option E, to exit the program."

Это код, который у меня есть до сих пор.

Dim MonthNames$(12)

MonthNames$(1) = "January"

MonthNames$(2) = "Febuary"

MonthNames$(3) = "March"

MonthNames$(4) = "April"

MonthNames$(5) = "May"

MonthNames$(6) = "June"

MonthNames$(7) = "July"

MonthNames$(8) = "August"

MonthNames$(9) = "September"

MonthNames$(10) = "October"

MonthNames$(11) = "November"

MonthNames$(12) = "December"

Dim MilesDriven(12)

Search=Findmonth()
E=0

While E = 0

    Print "Press P to populate miles and month name"

    Print "Press S to search for Month"

    Print "Press M to search for Month name with smallest Miles"

    Print "Press L to search for MonthName with Largest Miles"

    Print "Press E to exit"

    Input Answer$

    Select Case Answer$

    Case "P", "p"
        For position = 1 to 12
            Print "Enter the amount of miles driven in "; MonthNames$(position)
            Input MilesDriven(position)
        Next


    Case "S", "s"

        Function Findmonth()
            Print “Please enter a month you want to search for”
            Input Month$

        For position = 1 to 12
              If (Month$ = MonthName$(position)) then
                      Print "You have driven "; MilesDriven(position); " "; "in the month of " MonthNames$(position)
                      Exit for
              End if
        Next

        If (position > 12)  then
                   Print “Please enter a valid month”
        End if

        End function


    Case "M", "m"



    Case "L", "l"




    Case "E", "e"

        E=1

    Case Else

      Print "You made a wrong selection. Please enter again"

    End Select

Wend
For position = 1 to 12
    Print MonthNames$(position)
    Print MilesDriven(position)
Next

Print "Goodbye"

End

person user3674894    schedule 26.05.2014    source источник
comment
когда вы размещаете пример кода в своем вопросе, сделайте отступ в 4 пробела, чтобы он отображался в вопросе как блок кода.   -  person Mike    schedule 26.05.2014


Ответы (1)


Нет необходимости вводить мили в массив месяцев, вместо этого у вас есть два массива рядом, так что Monthnames$(i) — это название месяца, а MilesDriven(i) — мили за этот месяц.

Обратите внимание, что, читая инструкции вашего назначения, это «заполнение» должно происходить только тогда, когда пользователь вводит «P», поэтому переместите инициализацию ваших массивов в оператор Select следующим образом:

Dim Monthnames$(12)

Dim MilesDriven(12)

E = 0
While E = 0

    Print "Press P to populate miles and month name"
    Print "Press S to search for Month"
    Print "Press M to search for Month name with smallest Miles"
    Print "Press L to search for MonthName with Largest Miles"
    Print "Press E to exit"

    Input Answer$

    Select Case Answer$
    Case "P", "p"
        Monthnames$(1) = "January"
        Monthnames$(2) = "February"
        Monthnames$(3) = "March"
        Monthnames$(4) = "April"
        Monthnames$(5) = "May"
        Monthnames$(6) = "June"
        Monthnames$(7) = "July"
        Monthnames$(8) = "August"
        Monthnames$(9) = "September"
        Monthnames$(10) = "October"
        Monthnames$(11) = "November"
        Monthnames$(12) = "December"
        MilesDriven(1) = 10
        MilesDriven(2) = 20
        MilesDriven(3) = 30
        MilesDriven(4) = 40
        MilesDriven(5) = 50
        MilesDriven(6) = 60
        MilesDriven(7) = 70
        MilesDriven(8) = 80
        MilesDriven(9) = 90
        MilesDriven(10) = 100
        MilesDriven(11) = 110
        MilesDriven(12) = 120
    Case "S", "s"
        Rem - put search by name here
    Case "M", "m"
        Rem - put search by for smallest miles here
    Case "L", "l"
        Rem - put search by for largest miles here
    Case "E", "e"
        E=1
    Case Else
       Print "You made a wrong selection. Please enter again"
    End Select
Wend
Print "Goodbye"
End
person Mike    schedule 26.05.2014
comment
Хорошо, я вижу. У меня обычно есть пользовательский ввод, поэтому я предположил, что это то, что он хотел, но, читая, я вижу, что это не так. Просто для ясности: если пользователь ищет месяц, скажем, апрель, 4 будут связаны с другими 4, что даст нам 40? - person user3674894; 26.05.2014
comment
Да — вы можете ссылаться на оба массива, используя один и тот же индекс (4), когда хотите распечатать значения. Относительно пользовательского ввода - может быть, я неправильно истолковал, и в «P» вы должны запрашивать у пользователя количество пройденных миль за каждый месяц? - person Mike; 26.05.2014
comment
Теперь я не уверен ... лол, я имею в виду, что он обычно дает нам информацию о пользовательском вводе. Я не уверен, является ли английский его родным языком, возможно, он хочет, чтобы мы это сделали. Я попробую завтра поработать над этим и во всем разобраться. Спасибо за помощь. - person user3674894; 26.05.2014
comment
Хорошо, у меня есть массив, и все получилось. Теперь я застрял на функциях, с которыми у меня тоже были проблемы в прошлый раз. Я отредактировал свой исходный пост, чтобы показать, для чего я это сделал и где я застрял. - person user3674894; 26.05.2014
comment
Вы не должны переписывать свой вопрос, чтобы он стал новым вопросом, поскольку у других людей может быть такая же проблема, и они хотят понять ответы — это одна из основных особенностей переполнения стека. Вместо этого вы должны поднять новый вопрос. Прежде чем вы это сделаете, я предлагаю вам попытаться решить ее самостоятельно — вас будут критиковать в Stack Overflow, если вы не провели исследование своей собственной проблемы. Выполните поиск в Google по определению функций в Basic или обратитесь к документации, которую вы получили. Кроме того, вы должны проголосовать за ответ или принять ответ, если он помог решить ваш вопрос. - person Mike; 26.05.2014
comment
Хорошо, извини. Я просто собирался задать другой вопрос, но подумал, что, поскольку он все еще относится к этому, просто изменить вопрос будет проще, а не заливать сайт. Я также попытался проголосовать за вашего ответчика. Там написано, что мне нужно больше репутации. Материал, который нам дали, — это начальное программирование для чайников. В книге говорится, что Function FunctionName(Data) 'instruction' FunctionName = Value Затем показано, как это выглядит. Ответ = куб(3) Печать Куб из 3 равен = ; Ответ Конечная функция cube(x) cube = x * x * x Конечная функция. Я попробую еще немного поискать в Google, но в основном он показывает то же самое. - person user3674894; 26.05.2014