Форум программистов, компьютерный форум 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
27.04.2012, 15:14     Листы жести - минимальную площадь
Задача

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

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