Перевод с С++ - определить, сколько было снесено яиц - C (СИ)
Формулировка задачи:
Перевод С++ на Си
#include <iostream> using namespace std; typedef struct { char data[11]; int eggs; }Birdhouse; int main() { setlocale(0, "Russian"); cout << "Введите сколько дней будем вести учет\n"; int n; cin >> n; Birdhouse *report = new Birdhouse[n]; for (int i = 0; i < n; i++) { cout << "Введите дату в формате дд.мм.гггг (Например: 19.04.2015)\n"; cin >> report[i].data; cout << "Сколько яиц было снесено за день?\n"; cin >> report[i].eggs; } char data[11]; cout << "Введите дату\n"; cin >> data; bool find = false; for (int i= 0; i < n; i++) { if (strcmp(data, report[i].data) == 0) { cout << "В этот день было снесено: " << report[i].eggs << " яиц" << endl; find = true; } } if (!find) cout << "В этот день мы не вели учет\n"; delete[] report; return 0; }
Решение задачи: «Перевод с С++ - определить, сколько было снесено яиц»
textual
Листинг программы
#include <stdlib.h> #include <stdio.h> #include <stdlib.h> typedef struct _bird_house { char data[11]; int eggs; } bird_house; int main() { bird_house *report; char data[11]; int n; int i; printf("Введите сколько дней будем вести учет: "); scanf("%d", &n); if ((report = (bird_house *)malloc(sizeof(bird_house) * n)) == NULL) { exit(EXIT_FAILURE); } for (i = 0; i < n; i++) { printf("Введите дату в формате дд.мм.гггг (Например: 19.04.2015)\n"); scanf("%s", &report[i].data); printf("Сколько яиц было снесено за день?\n"); scanf("%d", &report[i].eggs); } printf("Введите дату\n"); scanf("%s", data); for (i = 0; i < n; i++) { if (strcmp(data, report[i].data) == 0) { printf("В этот день было снесено %d яиц.\n", report[i].eggs); break; } } if (i == n) { printf("В этот день мы не вели учет\n"); } free(report); exit(EXIT_SUCCESS); }
Объяснение кода листинга программы
- #include
Включает в программу функции файла стандартного ввода/вывода, нужные для отправки сообщений в консоль - #include
Включает в программу функции файла стандартной библиотеки, нужные для работы с памятью - typedef struct _bird_house { Определяет структуру данных для представления птичьего домика
- char data[11]; Поле для хранения даты в формате дд.мм.гггг
- int eggs; Поле для хранения количества снесенных яиц
- int main() Функция main() является точкой входа в программу
- *bird_house report;** Выделяет память под массив структур птичьего домика
- char data[11]; Временная переменная для хранения введенной даты
- int n; Введенное количество дней для ведения учета
- int i; Инициализация счетчика для цикла
- printf(
Введите сколько дней будем вести учет:
); Запрос на ввод количества дней - scanf(
%d
, &n); Считывание количества дней из консоли - if ((report = (bird_house )malloc(sizeof(bird_house) n)) == NULL) { Проверка на достаточность памяти для выделения под массив структур птичьего домика
- for (i = 0; i < n; i++) { Цикл для считывания данных за каждый день
- printf(
Введите дату в формате дд.мм.гггг (Например: 19.04.2015)\n
); Запрос на ввод даты в нужном формате - scanf(
%s
, &report[i].data); Считывание даты из консоли - printf(
Сколько яиц было снесено за день?\n
); Запрос на ввод количества снесенных яиц - scanf(
%d
, &report[i].eggs); Считывание количества снесенных яиц из консоли - printf(
Введите дату\n
); Запрос на ввод даты для проверки - scanf(
%s
, data); Считывание даты из консоли - for (i = 0; i < n; i++) { Цикл для поиска даты в массиве структур птичьего домика
- if (strcmp(data, report[i].data) == 0) { Проверка на совпадение введенной даты с датой в массиве
- printf(
В этот день было снесено %d яиц.\n
, report[i].eggs); Вывод количества снесенных яиц, если дата найдена - break; Прерывание цикла, если дата найдена
- if (i == n) { Проверка на то, что дата не найдена в массиве
- printf(
В этот день мы не вели учет\n
); Вывод сообщения, если дата не найдена - free(report); Освобождение памяти, занятой под массив структур птичьего домика
- exit(EXIT_SUCCESS); Завершение программы с успехом
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д