-
Couldn't load subscription status.
- Fork 0
Open
Description
Тема: Динамический массив и каталог книг
Задача 1. Динамический массив и вычисление среднего арифметического
Постановка задачи
Напишите программу на языке Си, которая:
- Запрашивает у пользователя количество элементов массива (целое число N).
- Динамически выделяет память для массива из N элементов типа float.
- Заполняет массив значениями, введёнными с клавиатуры.
- Вычисляет и выводит среднее арифметическое всех элементов массива.
- При обращении к элементам массива использует арифметику указателей (без оператора [ ]).
- Освобождает выделенную память в конце работы программы.
Список идентификаторов
| Имя переменной | Тип данных | Описание |
|---|---|---|
| N | int | Количество элементов массива |
| arr | float* | Указатель на массив |
| sum | float | Сумма элементов массива |
| average | float | Среднее арифметическое |
Код программы
#include <stdio.h>
#include <stdlib.h>
int main() {
int N;
printf("Введите количество элементов массива: ");
scanf("%d", &N);
float *arr = (float *)malloc(N * sizeof(float));
if (arr == NULL) {
printf("Ошибка выделения памяти.\n");
return 1;
}
printf("Введите элементы массива:\n");
float *ptr = arr;
for (int i = 0; i < N; i++) {
scanf("%f", ptr);
ptr++;
}
float sum = 0;
ptr = arr;
for (int i = 0; i < N; i++) {
sum += *ptr;
ptr++;
}
float average = sum / N;
printf("Среднее арифметическое: %.2f\n", average);
free(arr);
return 0;
}Результаты работы программы
Введите количество элементов массива: 3
Введите элементы массива:
1.5
2.5
3.5
Среднее арифметическое: 2.50
Задача 2. Каталог книг
Постановка задачи
Создайте структуру Book, которая содержит следующие поля:
title– массив символов (строка) для хранения названия книги (максимум 50 символов);author– массив символов для хранения имени автора (максимум 50 символов);year– целое число, обозначающее год издания книги.
Напишите программу, которая:
- Создаёт массив из 3-х экземпляров структуры
Book. - Запрашивает у пользователя данные для каждой книги (название, автора и год издания).
- Выводит информацию обо всех книгах на экран, используя для этого отдельную функцию
printBook(), которая принимает указатель на структуруBook.
Список идентификаторов
| Имя переменной | Тип данных | Описание |
|---|---|---|
| books | Book[] | Массив структур Book |
| title | char[50] | Название книги |
| author | char[50] | Автор книги |
| year | int | Год издания книги |
Код программы
#include <stdio.h>
#include <string.h>
struct Book {
char title[50];
char author[50];
int year;
};
void printBook(struct Book *book) {
printf("Название: %s\n", book->title);
printf("Автор: %s\n", book->author);
printf("Год издания: %d\n\n", book->year);
}
int main() {
struct Book books[3];
for (int i = 0; i < 3; i++) {
printf("Введите данные для книги %d:\n", i + 1);
printf("Название: ");
fgets(books[i].title, 50, stdin);
books[i].title[strcspn(books[i].title, "\n")] = '\0';
printf("Автор: ");
fgets(books[i].author, 50, stdin);
books[i].author[strcspn(books[i].author, "\n")] = '\0';
printf("Год издания: ");
scanf("%d", &books[i].year);
getchar(); // Очистка буфера
}
printf("\nИнформация о книгах:\n");
for (int i = 0; i < 3; i++) {
printBook(&books[i]);
}
return 0;
}Результаты работы программы
Введите данные для книги 1:
Название: Война и мир
Автор: Лев Толстой
Год издания: 1869
Введите данные для книги 2:
Название: Преступление и наказание
Автор: Федор Достоевский
Год издания: 1866
Введите данные для книги 3:
Название: 1984
Автор: Джордж Оруэлл
Год издания: 1949
Информация о книгах:
Название: Война и мир
Автор: Лев Толстой
Год издания: 1869
Название: Преступление и наказание
Автор: Федор Достоевский
Год издания: 1866
Название: 1984
Автор: Джордж Оруэлл
Год издания: 1949
Задача 3. Определение сезона по номеру месяца
Постановка задачи
Создайте перечисление Season со следующими значениями: WINTER, SPRING, SUMMER, AUTUMN.
Напишите программу, которая:
- Запрашивает у пользователя номер месяца (целое число от 1 до 12).
- На основе введённого номера месяца определяет и выводит соответствующий сезон:
- Зима: декабрь (12), январь (1) и февраль (2);
- Весна: март (3), апрель (4) и май (5);
- Лето: июнь (6), июль (7) и август (8);
- Осень: сентябрь (9), октябрь (10) и ноябрь (11).
Математическая модель
Не требуется.
Список идентификаторов
| Имя переменной | Тип данных | Описание |
|---|---|---|
| month | int | Номер месяца |
| season | Season | Сезон |
Код программы
#include <stdio.h>
enum Season { WINTER, SPRING, SUMMER, AUTUMN };
int main() {
int month;
printf("Введите номер месяца (1-12): ");
scanf("%d", &month);
enum Season season;
if (month == 12 || month == 1 || month == 2) {
season = WINTER;
} else if (month >= 3 && month <= 5) {
season = SPRING;
} else if (month >= 6 && month <= 8) {
season = SUMMER;
} else if (month >= 9 && month <= 11) {
season = AUTUMN;
} else {
printf("Неверный номер месяца.\n");
return 1;
}
switch (season) {
case WINTER:
printf("Зима\n");
break;
case SPRING:
printf("Весна\n");
break;
case SUMMER:
printf("Лето\n");
break;
case AUTUMN:
printf("Осень\n");
break;
}
return 0;
}Результаты работы программы
Введите номер месяца (1-12): 7
Лето
Информация о студенте
Киселев Георгий, 1 курс, группа ИВТ-1.1
Metadata
Metadata
Assignees
Labels
No labels