1. Мегаконкурс в апреле "Приведи друзей на codeby". Дарим деньги, подписку на журнал хакер и выдаем статус "Paid Access". Подробнее ...

    Скрыть объявление

[Неактуальная тема] Написать программу, которая выполняет следующи

Тема в разделе "C/C++/C#", создана пользователем INFINITIFXXX, 21 сен 2011.

Наш партнер Genesis Hackspace
  1. INFINITIFXXX

    INFINITIFXXX Гость

    4.20 Дана запись с именем ORDER, содержащая следующие поля:
    • Расчетный счет плательщика;
    • Расчетный счет получателя;
    • Перечисляемая сумма в руб.

    Написать программу, которая выполняет следующие действия:
    • Ввод с клавиатуры данных из 8 элементов типа ORDER, и занесение их в файл данных;
    • Чтение данных из файла и вывод их на экран;
    • вывод на экран информации о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры (если таких нет – вывести об этом сообщение).
    • Список должен быть упорядочен по расчетным счетам плательщиков.
     
  2. rrrFer

    rrrFer Гость

    сами пробовали решить?
     
  3. INFINITIFXXX

    INFINITIFXXX Гость

    да. Вот есть код для структуры. Надо переделать его для записи...

    Код (C++):
    #include <cstdlib>
    #include <ctime>
    #include <iostream>
    #include <iomanip>
    #include <algorithm>
    #include <string>

    struct Order {
    std::string debet;
    std::string credit;
    float sum;
    };

    std::ostream &operator<<(std::ostream &stream, const Order &order) {
    std::cout << "From: " << order.debet << std::endl
    << "To: " << order.credit << std::endl
    << "Sum: " << std::setprecision(2) << std::fixed << order.sum
    << " rub." << std::endl;
    return stream;
    }

    Order RandomOrder() {
    Order result;
    for (int i = 0; i < 20; ++i) {
    result.debet += rand() % 10 + '0';
    result.credit += rand() % 10 + '0';
    }
    result.sum = (rand() % 100000) / 100.0;
    return result;
    }

    bool OrderByDebet(const Order &a, const Order &b) {
    return (a.debet < b.debet);
    }

    Order *FindFirstByDebet(Order *begin, Order *end,
    const std::string &debet) {
    for (Order *result = begin; result != end; ++result)
    if (result->debet == debet)
    return result;
    return NULL;
    }

    float AccumulateSumByDebet(Order *begin, Order *end,
    const std::string &debet) {
    float result = 0;
    for (Order *current = begin; current != end; ++current)
    if (current->debet == debet)
    result += current->sum;
    return result;
    }

    int main(int argc, char *argv[]) {
    srand(time(NULL));
    Order orders[8];
    for (int i = 0; i < 8; ++i)
    orders[i] = RandomOrder();
    std::sort(orders, orders+8, OrderByDebet);
    for (int i = 0; i < 8; ++i)
    std::cout << "#" << i << " " << orders[i] << std::endl;

    std::string debet = orders[rand() % 8].debet;
    // вместо предыдущей строки ввод:
    // std::string debet;
    // std::cout << "Enter debetor: ";
    // std::cin >> debet;

    std::cout << "Search for debet: " << debet << std::endl;

    Order *order = FindFirstByDebet(orders, orders+8, debet);
    if (order != NULL) {
    float result = AccumulateSumByDebet(orders, orders+8, debet);
    std::cout << "Debetor " << debet
    << " spent " << result << " rub." << std::endl;
    } else {
    std::cout << "No such debetor." << std::endl;
    }

    return 0;
    }
     
  4. rrrFer

    rrrFer Гость

    дак вы скажите что конкретно неработает. А-то мне лень запускать ваш код и искать в чем он не соответствует заданию )
     
  5. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    INFINITIFXXX, поясните пожалуйста в деталях, что означает следующая запись:
    Код (C++):
    result.debet += rand() % 10 + '0';
    Это же Вы писали, если я все правильно понимаю...
     
  6. rrrFer

    rrrFer Гость

    lazybiz
    Вам надо чтобы именно INFINITIFXXX пояснил(а)?
    а-то ИМХО вполне нормальный фрагмент, не
    Код (Text):
    result.debet += rand() % 10 + 48;
    и-то хорошо
     
  7. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    r04, просто у меня закрались подозрения что автор темы не является автором данного кода.
     
  8. rrrFer

    rrrFer Гость

    lazybiz
    Ну тогда можно было более интересные фрагменты поискать, мне вот этот больше нравится:
    Код (Text):
    std::string debet = orders[rand() % 8].debet;
    :)
     

Поделиться этой страницей