Введение в F # назначение - PullRequest
0 голосов
/ 08 ноября 2018

В приложении находится текстовый файл базы данных CSV, содержащий информацию об ученике с именем Students.txt. Информация включает в себя имя, отчество, фамилию, номер телефона, адрес электронной почты и gpa. Вы должны написать программу на F #, которая:

  1. добавляет Malachi Constant, трансфер из Стэнфорда, в соответствующее место с 4,0 гпа и любым номером телефона и адресом электронной почты,
  2. печатает, сколько студентов имеют 3,0 гПа или выше,
  3. печатает имя (имя, отчество, фамилия) и gpa всех учеников с фамилией Андерсон,
  4. печатает, сколько студентов не имеют учетной записи электронной почты,
  5. печатает средний gpa всех студентов.

После того, как вы добавите Malachi Constant с номером телефона, адресом электронной почты и 4,0 гпа, вы должны найти следующее:

  1. 4166 студентов имеют 3,0 гпа или выше,
  2. есть 20 Андерсонов (распечатайте их все),
  3. 19 учеников не имеют адреса электронной почты,
  4. средний показатель gpa равен 2.80284235950596,
  5. всего 10 491 студент.

1 Ответ

0 голосов
/ 08 ноября 2018

Хотя для написания полной программы не хватает важной информации, большая часть того, что запрашивается, требует всего лишь нескольких строк кода. Давайте начнем с моделирования строк в CSV-файле, а затем напишем некоторый элементарный код для пунктов со 2 по 5:

type Phone = Phone of string

type Email = Email of string

type StudentInfo =
    { firstName : string;
      middleInitial : char option;
      lastName : string;
      phone : Phone;
      email : Email option;
      gpa : float }

// Three functions below left incomplete due to missing
// information, and/or as an exercise to the reader

let createPhone input = […]

let createEmail input = […]

let readStudentsFromCSV filename = […]

let students = readStudentsFromCSV "Students.txt"

// Print how many students have a 3.0 gpa or higher
students
|> List.filter (fun s -> s.gpa >= 3.0)
|> List.length
|> printfn "%d students have a GPA of 3.0 or higher."

// Print name (first, middle initial, last) and gpa
// of all students with the last name Anderson
students
|> List.filter (fun s -> s.lastName = "Anderson")
|> List.iter (fun s ->
    printfn "%s %s%s — GPA: %f"
            s.firstName
            (match s.middleInitial with
             | None -> ""
             | Some c -> string c + " ")
            s.lastName
            s.gpa)

// Print how many students do not have an email account
students
|> List.filter (fun s -> Option.isNone s.email)
|> List.length
|> printfn "%d students do not have an email account."

// Print the average gpa of all students
students
|> List.averageBy (fun s -> s.gpa)
|> printfn "Average GPA of all students: %f."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...