Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2013, 12:35   #1
Господин Никто
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 25
По умолчанию блок-схема

здравствуйте! подскажите пожалуйста, вот эта блок схема(прикрепляю файл) совсем не подходит к этой программе? понимаю,что это какая-то фигня получилась,но всё же. сделано с помощью приложения.
Код:
in.txt: 
 
income Semen Semenich , 10000
income Inna Ivanovna , 5000
income Kseniya , 2000
income Svetlana , 8000
outgo kvartplata , 3000 , great
outgo repair of a vehicle , 7000 , great
outgo car wash , 1000 , petty
outgo food , 20000 , great
outgo bijou , 15000 , petty
outgo interesting book , 1000 , petty
structs.h
 
#ifndef STRUCTS_H
# define STRUCTS_H
# include <string>
struct Income {
  std::string m_name;
 int m_value;
};
enum Priority {
  Petty,
  Great
};
struct Outgo {
  std::string m_name;
 Priority m_prior;
  int m_value;
};
#endif // STRUCTS_H
main.cpp
 
#include <fstream>
#include <iostream>
#include <list>
#include <algorithm>
#include "structs.h"
/*
 *программа учёта семейного бюджета.
 *исходные данные и основные требования:
 *1. перечень доходов всех членов семьи.
 *2. перечень статей расходов с указанием степени важности
 *(обязательные расходы,желательные расходы) и требуемой суммы.
 *3. реализуемые функции: распределение имеющихся в распоряжении
 *средств по статьям расходов.
 **/
typedef std::list<Income*> Imcomes; 
typedef std::list<Outgo*> Outgos;
void get(char *fname, Imcomes& incomes, Outgos& outgos);
void out(Imcomes& incomes, Outgos& outgos);
bool cmpOutgo(Outgo *a, Outgo *b);
int main() {
  std::list<Income*> incomes;   
  std::list<Outgo*> outgos;    
  get("in.txt", incomes, outgos);
 out(incomes, outgos);
 int incSum = 0;
  for (Imcomes::iterator it = incomes.begin(); incomes.end() != it; ++it)
    incSum += (*it)->m_value;
  std::cout << "incomes Sum: " << incSum << std::endl;
 outgos.sort(cmpOutgo);
 //std::cout << "===============================" << std::endl;
  //out(incomes, outgos);
std::cout << "distribution: " << std::endl;
  for (Outgos::iterator it = outgos.begin(); outgos.end() != it; ++it) {
    if ((*it)->m_value < incSum) {
      std::cout << " " << (*it)->m_name << " " << (*it)->m_value << std::endl;
      incSum -= (*it)->m_value;
    }
  }
  std::cout << "residue: " << incSum << std::endl;
        
     for (Outgos::iterator it = outgos.begin(); outgos.end() != it; ++it)
                delete *it;
        for (Imcomes::iterator it = incomes.begin(); incomes.end() != it; ++it)
                delete *it;
}
bool cmpOutgo(Outgo *a, Outgo *b) {
  if (a->m_prior == b->m_prior)
    return a->m_value < b->m_value;
  return Great == a->m_prior;
}
void out(Imcomes& incomes, Outgos& outgos) {
  std::cout << "incomes: " << std::endl;
  for (Imcomes::iterator it = incomes.begin(); incomes.end() != it; ++it)
    std::cout << " " << (*it)->m_name << " " << (*it)->m_value << std::endl;
  std::cout << "outgos: " << std::endl;
  for (Outgos::iterator it = outgos.begin(); outgos.end() != it; ++it)
    std::cout << " " << (*it)->m_name << " " << (*it)->m_value << " "
              << ((*it)->m_prior  == Petty ? "petty" : "great") << std::endl;
}
void get(char *fname, Imcomes& incomes, Outgos& outgos) {
  std::ifstream ifst(fname);
  if (0 == ifst)
    return;
  std::string buff, name, prior;
  int val;
  while (false == ifst.eof()) {
    ifst >> buff;
    if (buff == "income") {
      name = buff = "";
      do {
        name += buff += " ";
        ifst >> buff;
      } while (buff != ",");
      ifst >> val;
      Income *t = new Income;
      t->m_name = name;
      t->m_value = val;
      incomes.push_back(t);
    }
    if (buff == "outgo") {
      name = buff = "";
      do {
        name += buff += " ";
        ifst >> buff;
      } while (buff != ",");
      ifst >> val;
      ifst >> buff;  // ","
      ifst >> prior;
      Outgo *t = new Outgo;
      t->m_name = name;
      t->m_value = val;
      if (prior == "great")
        t->m_prior = Great;
      else
        t->m_prior = Petty;
      outgos.push_back(t);
    }
  }
  ifst.close();
}
Изображения
Тип файла: jpg Безымянный.jpg (79.1 Кб, 48 просмотров)
Тип файла: jpg Безымянный2.jpg (38.6 Кб, 121 просмотров)
Тип файла: jpg Безымянный3.jpg (28.1 Кб, 52 просмотров)
Господин Никто вне форума Ответить с цитированием
Старый 27.06.2013, 12:37   #2
Господин Никто
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 25
По умолчанию

блин, вторая и третья фотографии поменялись местами.
Господин Никто вне форума Ответить с цитированием
Старый 27.06.2013, 13:17   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,843
По умолчанию

Рисовать блок-схемы на программы, код которых более одного экрана - это извращение.
Arigato вне форума Ответить с цитированием
Старый 27.06.2013, 13:26   #4
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

НУжно ответить на вопрос: подходит или нет???
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 27.06.2013, 13:48   #5
Господин Никто
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 25
По умолчанию

ну-у, да. Или просто сказать, это полностью фигня, или может прокатить и так.
Господин Никто вне форума Ответить с цитированием
Старый 27.06.2013, 19:43   #6
Господин Никто
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 25
По умолчанию

не сдать программу и получить незачет: еще большее извращение.
Господин Никто вне форума Ответить с цитированием
Старый 27.06.2013, 20:10   #7
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Господин Никто
ГОСТу блоксхема не соответствует (да вобще ничему не соответствует)
Arigato
Цитата:
Рисовать блок-схемы на программы, код которых более одного экрана - это извращение.
Рисовать блоксхемы вообще извращение, неважно сколько они занимают. А так то, в ГОСТе предусмотрен специальный блок "межстраничный переход" - это вот такая фигурка

Код:
*****
*   *
*   *
 * *
  *
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блок-схема Citizens Помощь студентам 0 06.12.2011 18:21
блок - схема lodos Помощь студентам 9 18.05.2011 17:23
Схема алгоримта (блок схема) на задачу по Паскалю LINCHAK Помощь студентам 0 22.10.2010 16:56
Блок схема алгоритма программы и схема взаимодействия модулей. Lazio Фриланс 3 02.12.2009 23:10
Блок-схема Foxtrot_1 Помощь студентам 1 07.10.2009 08:45