Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задача про Форт Нокс 
:(
    Опции темы
Мизеракль
Дата 3.11.2012, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 3.11.2012

Репутация: нет
Всего: нет



Доброго времени суток.
У меня возникла не большая проблема с кодом, решил посоветоваться у вас на форуме.
На С++(пишу на Visual Studio 2010 Ultimate) написать программу которая моделирует загрузку инопланетного корабля золотыми слитками Форт Нокса.
Суть задачи: 
Програма случайным образом генерирует значение для переменных: Vmax (объем трюма) и Mmax (грузоподъемность инопланетного корабля).
После генерации значений программа начинает загружать трюм инопланетного корабля золотыми слитками. Она будет выполняться (загружать трюм слитками), пока выполняется условие: if ((V <Vmax) and (M <Mmax))
Если условие не выполняется, то программа завершает свое выполнение.
Если условие выполняется, загружается на конвейер новый слиток.
Программа генерирует случайные параметры слитка (линейные размеры и среднюю плотность: X, Y, Z, ρ).
Если слиток не может поместиться в трюме, т.е. условие
if ((V + x * y * z <= Vmax) and (M + ρ * x * y * z <= Mmax)) не выполняется, то мы его выбрасываем (drop) и загружаем новый слиток.
Если слиток помещается в трюме, то мы должны проверить условие прохождения слитка через окошко в трюм:
if(((a>=x)and(b>=y))or((a>=y)and(b>=x))or((a>=x)and(b>=z))or((a>=z)and(b>=x))or((a>=z)and(b>=y))or((a>=y)and(b>=z))or((a>=y)and(b>=z)))
a и b - размеры окошка генерируються случйно.
Если условие не выполняется, мы его выбрасываем (drop) и загружаем новый слиток.
Если слиток проходит в окошко, то дальше мы поворачиваем слиток на конвейере так, чтобы он прошел сквозь окошко, используя действия «rotate» (повернуть по оси y) и «turn» (повернуть по оси х).
Если слиток прошел сквозь окошко в трюм, то загружается новый слиток на конвейер.
Программа заканчивает выполнение, когда невозможно загружать больше слитков в трюм корабля.
Вот код:
#include <iostream>
#include <time.h>
#include <cstdlib>
using namespace std;
using std::srand;
using std::rand;
int main () {
    double Mmax,Vmax,x,y,z,r,a,b,V,M,m,v;
    srand(time(0));
    Mmax=1000+rand()%10000;
    Vmax=100+rand()%2000;
    a=4+rand()%3;
    b=4+rand()%6;
    V=0;
    M=0;
    m=Mmax*(7+rand()%7)/100;
    v=Vmax*(7+rand()%7)/100;
    cout<<"(Mmax,Vmax):('<<Mmax<<','<<Vmax<<')"<<endl;
    cout<<"(A,B):('<<a<<','<<b<<')"<<endl;
    cout<<endl<<"(x,y,z,r):"<<endl;
    //------------------------------------------------
    while (M<=Mmax-m, V<=Vmax-v); {
        x=4+rand()%4;
        y=4+rand()%4;
        z=4+rand()%4;
        r=4+rand()%4;
        cout<<endl;
        cout<<"('<<x<<','<<y<<','<<z<<','<<r<<')"; 
        cout<<"(Actions with gold: put)";
        if ((M+x*y*z*r<=Mmax)&&(V+x*y*z<=Vmax)) {
            if((x<=a)&&(z<=b)) {cout<<"->Accept"<<endl;M=M+x*y*z*r;V=V+x*y*z;}
            else if((x<=a)&&(y<=b)){cout<<"->Turn->Accept"<<endl;M=M+x*y*z*r; V=V+x*y*z;}
            else if((y<=a)&&(z<=b)){cout<<"->Turn->Rotate->Turn->Accept"<<endl;M=M+x*y*z*r;V=V+x*y*z;}
        else if((x<=b)&&(y<=a)){cout<<"->Turn->Accept"<<endl;M=M+x*y*z*r;V=V+x*y*z;}
        else if((x<=b)&&(z<=a)){cout<<"->Rotate->Accept"<<endl;M=M+x*y*z*r;V=V+x*y*z;}
        else cout<<"->Drop"<<endl;
        }
    }

Не могу понять где ошибка, при запуске кода не могу вводить значения переменных отвечающие за параметры слитка и вместо случайных значений пишуться названия переменных.
Заранее спасибо за помощь.
PM MAIL   Вверх
feodorv
Дата 3.11.2012, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 11
Всего: 45



Цитата(Мизеракль @  3.11.2012,  12:55 Найти цитируемый пост)
Вот код:

Это не код. Вот код:
Код

#include <iostream>
#include <time.h>
#include <cstdlib>

using namespace std;
using std::srand;
using std::rand;

int main () 
{
    double Mmax, Vmax, x, y, z, r, a, b, V, M, m, v;

    srand(time(0));
    Mmax=1000+rand()%10000;
    Vmax=100+rand()%2000;
    a=4+rand()%3;
    b=4+rand()%6;
    V=0;
    M=0;
    m=Mmax*(7+rand()%7)/100;
    v=Vmax*(7+rand()%7)/100;

    cout << "(Mmax,Vmax):( "<< Mmax << "," << Vmax << ")" << endl;
    cout << "(A,B):(" << a << "," << b << ")" << endl;
    cout<< endl << "(x,y,z,r):" << endl;

    //------------------------------------------------
    while ( M <= Mmax-m && V<=Vmax-v )/* ; */
    {
        x=4+rand()%4;
        y=4+rand()%4;
        z=4+rand()%4;
        r=4+rand()%4;
        cout<<endl;

        cout << "(" << x << "," << y << "," << z << "," << r <<")"; 
        cout << "(Actions with gold: put)";
        if( (M+x*y*z*r) <= Mmax && (V+x*y*z) <= Vmax ) 
        {
            if( x <= a &&  z <= b ) 
            {
               cout << "->Accept" << endl;
               M = M+x*y*z*r;
               V=V+x*y*z;
            }
            else if( x<=a && y<=b )
            {
               cout << "->Turn->Accept" << endl;
               M = M+x*y*z*r; 
               V = V+x*y*z;
            }
            else if( y<=a && z<=b )
            {
               cout << "->Turn->Rotate->Turn->Accept" << endl;
               M=M+x*y*z*r;
               V=V+x*y*z;
            }
            else if( x<= b && y <= a )
            {
               cout << "->Turn->Accept" << endl;
               M=M+x*y*z*r;
               V=V+x*y*z;
            }
            else if( x<=b && z<=a )
            {
               cout << "->Rotate->Accept" << endl; 
               M=M+x*y*z*r;
               V=V+x*y*z;
            }
            else 
               cout << "->Drop" << endl;
        }
    }
}


Добавлено @ 12:37
Цитата(Мизеракль @  3.11.2012,  12:55 Найти цитируемый пост)
Не могу понять где ошибка

Строковые литералы отграничены символами "...", а Вы пытаетесь выдумать что-то своё: "...'

Цитата(Мизеракль @  3.11.2012,  12:55 Найти цитируемый пост)
    cout<<"(Mmax,Vmax):('<<Mmax<<','<<Vmax<<')"<<endl;

Всё, что выделено красным цветом - один-единственный строковый литерал, который и будет благополучно напечатан.

Цитата(Мизеракль @  3.11.2012,  12:55 Найти цитируемый пост)
    while (M<=Mmax-m, V<=Vmax-v); {

Это шедевр - эти запятые и точки с запятой... Срочно в ветку для новичков smile

Добавлено через 12 минут и 1 секунду
Цитата(Мизеракль @  3.11.2012,  12:55 Найти цитируемый пост)
        if ((M+x*y*z*r<=Mmax)&&(V+x*y*z<=Vmax)) {

Здесь тоже не пойми что с чем сравнивается. А скобки то стоят, да не там...

Это сообщение отредактировал(а) feodorv - 3.11.2012, 12:38


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Мизеракль
Дата 3.11.2012, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 3.11.2012

Репутация: нет
Всего: нет



Спасибо feodorv за исправления)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0740 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.