Написание программы на языке Паскаль для анализа результатов экзаменов
Информатика

Напишите программу на языке Паскаль, которая будет решать следующую задачу: имеется файл marks.csv, в котором

Напишите программу на языке Паскаль, которая будет решать следующую задачу: имеется файл marks.csv, в котором содержится информация о результате экзаменов в 9-х классах района. Общее количество записей в файле составляет 1000, каждая из которых содержит фамилию, имя и отметки по четырем предметам (математике, физике, языку и химии). Все элементы в каждой строке разделены запятыми. Ваша задача - написать программу, которая будет считывать данные из файла и сохранять их в массиве структур (записей), а затем выводить следующую информацию на экран: а) средний балл в районе по каждому предмету; б) максимальную сумму баллов, полученных учащимися; в) список учащихся (фамилии и имена), которые набрали эту максимальную сумму, в алфавитном порядке; г) количество учащихся, получивших хотя бы одну положительную отметку.
Верные ответы (2):
  • Алексей
    Алексей
    30
    Показать ответ
    Тема: Написание программы на языке Паскаль для анализа результатов экзаменов

    Объяснение: Для решения данной задачи, вам понадобится использовать язык программирования Паскаль. Вы должны создать программу, которая считывает данные из файла "marks.csv" и сохраняет их в массиве структур (записей). Затем вам нужно будет вычислить средний балл в районе по каждому предмету.

    Ваши шаги в написании программы могут включать следующее:
    1. Открыть файл "marks.csv" для чтения данных.
    2. Создать структуру (запись), содержащую поля для фамилии, имени и оценок по предметам.
    3. Создать массив структур, достаточно большой, чтобы вместить все записи из файла.
    4. Используя цикл, считать данные из файла и сохранить их в массив структур.
    5. Использовать циклы для вычисления среднего балла по каждому предмету, проходясь по массиву структур и суммируя соответствующие оценки.
    6. Вывести средний балл по каждому предмету на экран.

    Демонстрация:

    program ExamResults;

    type
    Student = record
    lastName: string;
    firstName: string;
    mathMark: integer;
    physicsMark: integer;
    languageMark: integer;
    chemistryMark: integer;
    end;

    var
    students: array[1..1000] of Student;
    inputFile: text;
    i: integer;
    mathAverage, physicsAverage, languageAverage, chemistryAverage: real;

    begin
    assign(inputFile, "marks.csv");
    reset(inputFile);

    for i := 1 to 1000 do
    begin
    readln(inputFile, students[i].lastName, students[i].firstName,
    students[i].mathMark, students[i].physicsMark,
    students[i].languageMark, students[i].chemistryMark);
    end;

    close(inputFile);

    mathAverage := 0;
    physicsAverage := 0;
    languageAverage := 0;
    chemistryAverage := 0;

    for i := 1 to 1000 do
    begin
    mathAverage := mathAverage + students[i].mathMark;
    physicsAverage := physicsAverage + students[i].physicsMark;
    languageAverage := languageAverage + students[i].languageMark;
    chemistryAverage := chemistryAverage + students[i].chemistryMark;
    end;

    mathAverage := mathAverage / 1000;
    physicsAverage := physicsAverage / 1000;
    languageAverage := languageAverage / 1000;
    chemistryAverage := chemistryAverage / 1000;

    writeln("Средний балл по математике: ", mathAverage:2:2);
    writeln("Средний балл по физике: ", physicsAverage:2:2);
    writeln("Средний балл по языку: ", languageAverage:2:2);
    writeln("Средний балл по химии: ", chemistryAverage:2:2);
    end.


    Совет: Проверьте файл "marks.csv" перед запуском программы, убедитесь, что данные расположены в правильном формате, и количество записей соответствует ожидаемому. Это поможет избежать ошибок при чтении и обработке данных.

    Проверочное упражнение: С помощью данного кода программы, вычислите и напечатайте на экран средний балл по каждому предмету, используя следующие данные:
    - Фамилия Имя Математика Физика Язык Химия
    - Иванов Иван 80 90 75 85
    - Петров Петр 75 85 70 90
    - Сидоров Алексей 85 95 80 75
  • Облако
    Облако
    9
    Показать ответ
    Задача:

    Напишите программу на языке Паскаль, которая будет решать следующую задачу: имеется файл marks.csv, в котором содержится информация о результате экзаменов в 9-х классах района. Общее количество записей в файле составляет 1000, каждая из которых содержит фамилию, имя и отметки по четырем предметам (математике, физике, языку и химии). Все элементы в каждой строке разделены запятыми.

    Ваша задача - написать программу, которая будет считывать данные из файла и сохранять их в массиве структур (записей), а затем выводить следующую информацию на экран:

    Алгоритм решения:

    1. Создать структуру с полями для фамилии, имени и оценок по предметам.
    2. Создать массив структур, размер которого соответствует количеству записей в файле.
    3. Открыть файл marks.csv для чтения.
    4. Считывать строки из файла и разбивать их на отдельные элементы.
    5. Присвоить значения полям структуры из считанных элементов.
    6. Сохранить структуру в соответствующий элемент массива.
    7. Посчитать средний балл по каждому предмету, проходя по всем элементам массива и суммируя оценки по каждому предмету.
    8. Разделить сумму оценок на общее количество записей для получения среднего балла.
    9. Вывести на экран средний балл по каждому предмету.

    Дополнительный материал:

    pascal
    program AverageMarks;
    uses SysUtils;

    const
    FILENAME = "marks.csv";
    MAX_RECORDS = 1000;
    NUM_SUBJECTS = 4;

    type
    Student = record
    lastName, firstName: string;
    marks: array[1..NUM_SUBJECTS] of Integer;
    end;

    var
    data: array[1..MAX_RECORDS] of Student;
    fileData: TextFile;
    i, j: Integer;
    averageMarks: array[1..NUM_SUBJECTS] of Real;

    begin
    AssignFile(fileData, FILENAME);
    Reset(fileData);

    for i := 1 to MAX_RECORDS do
    begin
    ReadLn(fileData, data[i].lastName, data[i].firstName);
    for j := 1 to NUM_SUBJECTS do
    Read(fileData, data[i].marks[j]);
    ReadLn(fileData);
    end;

    CloseFile(fileData);

    for i := 1 to NUM_SUBJECTS do
    begin
    averageMarks[i] := 0;
    for j := 1 to MAX_RECORDS do
    averageMarks[i] := averageMarks[i] + data[j].marks[i];
    averageMarks[i] := averageMarks[i] / MAX_RECORDS;
    WriteLn("Средний балл по предмету ", i, ": ", averageMarks[i]:0:2);
    end;
    end.


    Совет: Перед написанием программы, убедитесь, что файл marks.csv существует в указанном месте. Также убедитесь, что формат данных в файле соответствует ожидаемому формату, где каждый элемент разделен запятыми.

    Ещё задача: Как вы измените программу, чтобы она выводила информацию о студентах, у которых средний балл ниже заданного значения?
Написать свой ответ: