Форум программистов, компьютерный форум CyberForum.ru

Программа по резке труб - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить вектор сумм нечетных элементов четных строк матрицы целых чисел размером 6 × 6 http://www.cyberforum.ru/cpp-beginners/thread1785018.html
#include <iostream> #include <iomanip> using namespace std; int main() { int a, i, j; int v; cout << "Vvedite massiv:" << endl; for (i = 0; i < 6; i++) for (j = 0; j < 6; j++)
C++ Исправить ошибки в определении шаблона класса Подскажите пожалуйста как исправить эту ошибку template <class T> struct A { T x; }; template <class T> http://www.cyberforum.ru/cpp-beginners/thread1784972.html
Программа нахождения простых чисел C++
Я написал программу но в ней ошибка! Не пойму какая! Но мне важно понять как исправить именно эту прогу, знаю что есть другие проги на эту тему. #include<iostream> #include <iomanip> using namespace std; void main() { int f=0; int n=10;
Как в векторе объектов пользовательского класса изменить заданное поле у определённого элемента? C++
Добрый день. Создан вектор из структры: struct man { char name; int age; man(void) {} man(const char* hName, const int hAge) { strcpy(name, hName); age = hAge;
C++ С концами запутался с operator overloading http://www.cyberforum.ru/cpp-beginners/thread1784882.html
Всем привет. Тема operator overloading - моё слабое место, очень хочу разобраться. Читаю всякие статейки (могу скинуть ссылки, если нужно) + учебник для чайников, но эта тема слишком обширная: в одних источниках есть примеры о перегрузке при создании экземпляра класса, в других используют примеры с присваиванием, где-то мелькает "const", где-то "friend". Где-то передаётся параметр по ссылке...
C++ Skype API ошибка (_com_error_) Пытаюсь изучать Skype API: #import "Skype4COM.dll" int main() { CoInitialize(NULL); SKYPE4COMLib::ISkypePtr pSkype(__uuidof(SKYPE4COMLib::Skype)); подробнее

Показать сообщение отдельно
Hevzy86
0 / 0 / 0
Регистрация: 24.07.2016
Сообщений: 22
04.08.2016, 01:17  [ТС]     Программа по резке труб
Доброе время суток, извиняюсь за долгое отсутствие(тяжелая физическая работа-не всегда есть время и силы на компьютер)IGPIGP, 3 минуты это гораздо лучше,чем 25, уже хорошо) Вот вариант от Peoples (работает быстро, фишка,что он собирает сначала наименьшую длину труб и пилит их по возрастающей)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include<iostream>
#include<vector>
#include <cmath>
#include <algorithm>
using namespace std;
int main() {
    setlocale(LC_ALL,"RUS");
    vector<double>val; // вектор дюймов
    vector<int>v; // вектор штук
    vector<double>sum; // сумма дюймов, то есть дюймы* количество 
    // начало
    double zagotovka; // длина заготовки
    double raz;   // длина реза 
    cout<<"Введите длину заготовки: "<<endl;
    cin>>zagotovka;
    cout<<"Введите ширину реза: "<<endl;
    cin>>raz;
    cout<<"Введите сколько категорий труб будет: "<<endl;  // сколько вариант труб разных дюймов 
    int t;
    cin>>t;
    for(int i=0; i<t; i++) {       // вводим данные 
        double dl; 
        double st;
        cout<<"Введите длину трубы: "<<endl;
        cin>>dl;
        val.push_back(dl);
        cout<<"Введите сколько таких труб надо : "<<endl;
        cin>>st;
        v.push_back(st);
        cout<<endl;
    }
 
    for(int i=0; i!=val.size(); i++) {    // сумма длин каждого вида трубы 
        sum.push_back(val[i]*v[i]);
    }
    cout<<endl;
    double s=0;
    for(vector<double>::iterator i=sum.begin(); i!=sum.end(); i++) {     // вся длинна которая нужна для труб 
        s+=*i;
        cout<<*i<<" ";
    }
    int kol=ceil(s/zagotovka);    // количество заготовок, длина которая нужна делится на длину заготовки, округляется до большего, ессли ровного количества не хватит
    double ost=((kol*zagotovka)-s)-((t-1)*raz); // отход с вычетом длины реза 
    double m=zagotovka; // отсюда отпиливаем
    double g=0; // столько отпиливаем
    // счётчик
    cout<<endl;
    vector<double>otx;
      vector<int>ot;
    for(int i=0; i<kol; i++) {
         int coo=0;
        do {
            vector<double>::iterator it=min_element(sum.begin(),sum.end());
            g+=*it;
            for(int i=0; i<val.size(); i++)
                if(val[i]*v[i]==*it) {
                    cout<<val[i]<<" Дюйма "<<v[i]<<" штуки"<<endl;     // выводим оптимальный вариант 
                    cout<<endl;
                }
                  otx.push_back(*it);
            sum.erase(it);
            m-=g;
            coo++;
        } while(m>0 && g<zagotovka);
         ot.push_back(coo);
    }
    cout<<endl;
    cout<<"Заготовок нужно: "<<kol<<endl;
    cout<<"Отход: "<<ost<<endl;
    cout<<endl;
    vector<double> dss;
    int q=0;
    for(vector<int>::iterator  i=ot.begin();i!=ot.end();i++){
        double ss=0;
    for(vector<double>::size_type iter=q;iter!=q+*i;iter++){
        ss+=otx[iter]+raz;
    }
    q+=*i;
    dss.push_back(ss);
}
   cout<<endl;
   for(vector<double>::size_type iter=0;iter!=dss.size();iter++)
    if(iter==dss.size()-1){
         cout<<(zagotovka-dss[iter])+raz<<endl;
       } else  cout<<(zagotovka-dss[iter])<<endl;
    
    return 0;
}
 
Текущее время: 22:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru