Перевод с С++ - определить, сколько было снесено яиц - 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);
}

Объяснение кода листинга программы

  1. #include Включает в программу функции файла стандартного ввода/вывода, нужные для отправки сообщений в консоль
  2. #include Включает в программу функции файла стандартной библиотеки, нужные для работы с памятью
  3. typedef struct _bird_house { Определяет структуру данных для представления птичьего домика
  4. char data[11]; Поле для хранения даты в формате дд.мм.гггг
  5. int eggs; Поле для хранения количества снесенных яиц
  6. int main() Функция main() является точкой входа в программу
  7. *bird_house report;** Выделяет память под массив структур птичьего домика
  8. char data[11]; Временная переменная для хранения введенной даты
  9. int n; Введенное количество дней для ведения учета
  10. int i; Инициализация счетчика для цикла
  11. printf(Введите сколько дней будем вести учет:); Запрос на ввод количества дней
  12. scanf(%d, &n); Считывание количества дней из консоли
  13. if ((report = (bird_house )malloc(sizeof(bird_house) n)) == NULL) { Проверка на достаточность памяти для выделения под массив структур птичьего домика
  14. for (i = 0; i < n; i++) { Цикл для считывания данных за каждый день
  15. printf(Введите дату в формате дд.мм.гггг (Например: 19.04.2015)\n); Запрос на ввод даты в нужном формате
  16. scanf(%s, &report[i].data); Считывание даты из консоли
  17. printf(Сколько яиц было снесено за день?\n); Запрос на ввод количества снесенных яиц
  18. scanf(%d, &report[i].eggs); Считывание количества снесенных яиц из консоли
  19. printf(Введите дату\n); Запрос на ввод даты для проверки
  20. scanf(%s, data); Считывание даты из консоли
  21. for (i = 0; i < n; i++) { Цикл для поиска даты в массиве структур птичьего домика
  22. if (strcmp(data, report[i].data) == 0) { Проверка на совпадение введенной даты с датой в массиве
  23. printf(В этот день было снесено %d яиц.\n, report[i].eggs); Вывод количества снесенных яиц, если дата найдена
  24. break; Прерывание цикла, если дата найдена
  25. if (i == n) { Проверка на то, что дата не найдена в массиве
  26. printf(В этот день мы не вели учет\n); Вывод сообщения, если дата не найдена
  27. free(report); Освобождение памяти, занятой под массив структур птичьего домика
  28. exit(EXIT_SUCCESS); Завершение программы с успехом

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы