Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №1996766
А
Аноним
24 октября 2024 06:06 · публичный вопрос
А
Аноним

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

Нейросеть24 октября 2024 06:06

Для решения вашей задачи, мы можем написать программу на языке Python. Давайте разберем каждый пункт и создадим структуру для хранения данных, а затем реализуем необходимую логику для вычислений.

  1. Подготовим структуру для хранения данных о каждом ученице. Это может быть класс или именованная кортежа для удобства.

  2. Прочитаем данные из файла marks.csv.

  3. Выполним необходимые вычисления для всех требуемых пунктов.

Вот пример реализации:

import csv
from collections import defaultdict

# Определим структуру для хранения информации о каждом ученике
class Student:
    def __init__(self, surname, name, marks):
        self.surname = surname
        self.name = name
        self.marks = marks  # Список отметок по предметам

# Функция для чтения данных из файла
def read_data(file_name):
    students = []
    with open(file_name, 'r', encoding='utf-8') as file:
        reader = csv.reader(file)
        for row in reader:
            surname, name = row[0], row[1]
            marks = list(map(int, row[2:6]))  # Предполагаем, что оценки целые числа
            students.append(Student(surname, name, marks))
    return students

# Функция для анализа данных
def analyze_students(students):
    total_marks = [0] * 4  # Сумма оценок по каждому предмету
    max_sum = 0
    max_students = []
    count_with_twos = 0

    for student in students:
        sum_marks = sum(student.marks)
        
        # Считаем средние баллы
        for i in range(4):
            total_marks[i] += student.marks[i]
        
        # Проверяем максимальную сумму
        if sum_marks > max_sum:
            max_sum = sum_marks
            max_students = [(student.surname, student.name)]
        elif sum_marks == max_sum:
            max_students.append((student.surname, student.name))

        # Проверяем на наличие двойки
        if 2 in student.marks:
            count_with_twos += 1

    # Выводим результаты
    average_marks = [total / len(students) for total in total_marks]
    print("Средний балл по предметам:")
    print(f"Алгебра: {average_marks[0]:.2f}, Русский язык: {average_marks[1]:.2f}, Физика: {average_marks[2]:.2f}, История: {average_marks[3]:.2f}")
    
    print("Максимальная сумма баллов:", max_sum)
    
    max_students.sort()  # Сортируем по фамилиям и именам
    print("Учащиеся с максимальной суммой баллов:")
    for surname, name in max_students:
        print(f"{surname} {name}")
    
    print("Количество учащихся, получивших хотя бы одну отметку '2':", count_with_twos)

# Основная программа
file_name = 'marks.csv'
students = read_data(file_name)
analyze_students(students)

В этом коде мы:

  1. Создали класс Student, который хранит фамилию, имя и оценки.
  2. Реализовали функцию read_data, которая читает данные из CSV-файла и создает список студентов.
  3. Создали функцию analyze_students, в которой подсчитываем средний балл по предметам, максимальную сумму баллов и количество учащихся, получивших диагностические отметки.

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

В файле marks.csv записаны сведения о результатах экзаменов в 9-х классах района. Всего в списке 1000 записей, каждая из которых содержит • фамилию • имя • отметки по четырем предметам (алгебре, русскому языку, физике и истории). Все элементы в каждой строке разделены запятыми. Напишите программу, которая читает данные из файла в массив структур (записей) и выводит на экран (или в файл): а) средний балл в районе по каждому предмету; б) максимальную сумму баллов, полученных учащимися; в) список учащихся (фамилии и имена), набравших эту максимальную сумму, в алфавитном порядке; г) количество учащихся, получивших хотя бы одну отметку «2».
Для решения вашей задачи, мы можем написать программу на языке Python. Давайте разберем каждый пункт и создадим структуру для хранения данных, а затем реализуем необходимую логику для вычислений. 1. Подготовим структуру для хранения данных о каждом ученице. Это может быть класс или именованная кортежа для удобства. 2. Прочитаем данные из файла `marks.csv`. 3. Выполним необходимые вычисления для всех требуемых пунктов. Вот пример реализации: ```python import csv from collections import defaultdict # Определим структуру для хранения информации о каждом ученике class Student: def __init__(self, surname, name, marks): self.surname = surname self.name = name self.marks = marks # Список отметок по предметам # Функция для чтения данных из файла def read_data(file_name): students = [] with open(file_name, 'r', encoding='utf-8') as file: reader = csv.reader(file) for row in reader: surname, name = row[0], row[1] marks = list(map(int, row[2:6])) # Предполагаем, что оценки целые числа students.append(Student(surname, name, marks)) return students # Функция для анализа данных def analyze_students(students): total_marks = [0] * 4 # Сумма оценок по каждому предмету max_sum = 0 max_students = [] count_with_twos = 0 for student in students: sum_marks = sum(student.marks) # Считаем средние баллы for i in range(4): total_marks[i] += student.marks[i] # Проверяем максимальную сумму if sum_marks > max_sum: max_sum = sum_marks max_students = [(student.surname, student.name)] elif sum_marks == max_sum: max_students.append((student.surname, student.name)) # Проверяем на наличие двойки if 2 in student.marks: count_with_twos += 1 # Выводим результаты average_marks = [total / len(students) for total in total_marks] print("Средний балл по предметам:") print(f"Алгебра: {average_marks[0]:.2f}, Русский язык: {average_marks[1]:.2f}, Физика: {average_marks[2]:.2f}, История: {average_marks[3]:.2f}") print("Максимальная сумма баллов:", max_sum) max_students.sort() # Сортируем по фамилиям и именам print("Учащиеся с максимальной суммой баллов:") for surname, name in max_students: print(f"{surname} {name}") print("Количество учащихся, получивших хотя бы одну отметку '2':", count_with_twos) # Основная программа file_name = 'marks.csv' students = read_data(file_name) analyze_students(students) ``` В этом коде мы: 1. Создали класс `Student`, который хранит фамилию, имя и оценки. 2. Реализовали функцию `read_data`, которая читает данные из CSV-файла и создает список студентов. 3. Создали функцию `analyze_students`, в которой подсчитываем средний балл по предметам, максимальную сумму баллов и количество учащихся, получивших диагностические отметки. Теперь вы можете запустить этот код с вашим файлом `marks.csv`, и он выполнит необходимые вычисления и выдаст результаты на экран.