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

Листы жести - минимальную площадь - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ rand() не случайный http://www.cyberforum.ru/cpp-beginners/thread560126.html
почему на кажджой итерации rand() выдает одно и тоже значение ? srand((unsigned)time(NULL)); vector<const string> var(4); var = "Integer"; var = "Float"; var = "String"; var = "Date"; int type_num ; string rands;
C++ Удалить из последовательности первый по порядку элемент, наиболее близкий по значению к среднему арифметическому Помогите пожалуйста составить программу: Даны целые числа a1, ..., an. Удалить из последовательности первый по порядку элемент, наиболее близкий по значению к среднему арифметическому чисел последовательности. Тема: Одномерные массивы http://www.cyberforum.ru/cpp-beginners/thread560115.html
C++ рогалики, изображение в консоли
здравствуйте, решил попробовать написать простую игру, простенький рогалик. Столкнулся с двумя проблемами: при перерисовки консоли мигает консоль (использую полную очистку консоли через system("cls"); и функцию Sleep(); ), и вторая проблема - не умею пользоваться хуками, а опрашивать клавиши при помощи функции GetAsyncKeyState(); немного неприятно, почему -то кажется что с хуками было бы...
Ввод и сохранение данных вектора C++
эсть програма но нужно добавить несколько функцый помогите кому не сложно #include "stdafx.h" #include <iostream> #include <algorithm> #include <vector> using namespace std; vector <int> bable (vector <int> & v) {
C++ Вывести журнал успеваемости студентов группы в алфавитном порядке http://www.cyberforum.ru/cpp-beginners/thread560090.html
Нужно написать код для решения следующей задачи Имеются сведения об успеваемости студентов факультета, который включают фамилию и инициалы студента, номер группы и оценки по m предметам.Студент считается среднестатистическим по k-ому предмету, если его оценка наиболее близка к средней оценке группы студентов по данному предмету. Обеспечить ввод и хранение информации об успеваемости...
C++ Колода карт реализация колоды карт :wall: подробнее

Показать сообщение отдельно
shchurkoroman
2 / 2 / 0
Регистрация: 27.03.2012
Сообщений: 13

Листы жести - минимальную площадь - C++

27.04.2012, 15:14. Просмотров 941. Ответов 13
Метки (Все метки)

Задача

На складе хранятся прямоугольные листы жести разных размеров. Листы расположены горизонтально на полу. Для экономии поверхности, они накладываются друг на друга, но так, чтобы лист лежащий выше, в целом размере был размещен на листе, который находится под ним. Кладовщик заботится о том, чтобы соответствующие края листов жести были параллельными, а в середины листов создавали единую стопку, лежа на одной вертикали. Чтобы приспособиться к листу жести, который находится ниже можно поворачивать его на 90 градусов вокруг центра.

Задание:

Напишите программу, которая для данных листов жести обсчитает минимальную площадь пола, учитывая вышеназванные требования.

Входные данные:

Стандартный вход содержит несколько наборов данных. Первая строка содержит один набор, неотъемлемое целое n (n <= 200) которое указывает на количество листов в проблеме. Если он равен 0, это означает конец данных. В последующих строках n содержит два положительных целых числа, означающие размеры листов в наборе данных.

Выходные данные

Стандартный выход содержит следующие строки, в которых указывается одно число, которое означает минимальную площадь поверх пола, требующейся для размещения листов согласно требованиям склада.

Пример

Для входных данных:
2
3 5
4 4
3
5 4
2 5
4 4
0

Правильный ответ:
31
30

Вот мой код программы:
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
#include <iostream>
#include <fstream>
#define N 200
 
using namespace std; 
int main()
{
    ifstream in("input.txt");
    if (!in)
    {
        cerr<< "There's no such file";
        return 1;
    }
    ofstream out("output.txt");
    
    int w_tab[N];    
    int h_tab[N];
    int s_tab[N];
    int id, w, h;
    while (!in.eof())
    {
        in>> id;
        if (id == 0) break;
        for (int i = 0; i < id; i++)
        {
            in>> w>> h;
            w_tab[i]=w;
            h_tab[i]=h;
            
            
            for (int j = 1; j < id; j++)
            {
                if(w_tab[j]<=w_tab[j+1] && h_tab[j]<=h_tab[j+1]){
                
                w_tab[j]=w_tab[j+1];
                w_tab[j+1]=0;
                
                h_tab[j]=h_tab[j+1];
                h_tab[j+1]=0;          
                }
                
                else if(w_tab[j]<=h_tab[j+1] && h_tab[j]<=w_tab[j+1]){
 
                w_tab[j]=w_tab[j+1];
                w_tab[j+1]=0;
                
                h_tab[j]=h_tab[j+1];
                h_tab[j+1]=0;          
                }
                     
            } 
            //out<< w_tab[i]<< h_tab[i]<<"\n"; 
            s_tab[i] += w_tab[i] * h_tab[i];
            out<< s_tab[i]<< "\n";  
            }
    }
    out.close();
    return 0;
}
Помогите решить эту задачку!

Проблема в с работой над массивами не могу понять в чем моя проблема и в файл output.txt тоже сохраняет мусор.

Спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru