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

Где ошибка? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вращение кубика вокруг начала координат http://www.cyberforum.ru/cpp-beginners/thread823493.html
В общем следующая проблема: кубик должен крутиться вокруг начала координат, но он странно искажается и "убегает". Помогите пожалуйста. Делал через матрицы поворота. #include <iostream> #include <TxLib.h> #include <stdio.h> #include <conio.h> #include <math.h> double a=3.1415/90;
C++ Как программно вызвать BSOD? Привет Собственно вопрос в названии темы: как сделать универсальный код, вызывающий BSOD на WinXP-Win7 или же как сделать фальшивый БСОД: просто картинка на весь экран, чтобы невозможно было вызвать диспетчер и прочее и закрыть картинку с БСОДом? http://www.cyberforum.ru/cpp-beginners/thread823483.html
Литература для графического интерфейса C++
Здравствуйте, у меня есть вопрос. Вот объясните, например я изучаю С++, но там консольные приложения, а как потом писать оконные? Как можно выучить их? Какая то литература есть или что? Просто я не понимаю в WinForms всякие System. и тд. Объясните пожалуйста, как это все учится. Добавлено через 1 минуту Или для большего понимания лучше С# изучить?
C++ Сетевые библиотеки для DOS
Доброе время суток, знает ли кто-нибудь библиотеки(C++) для работы в сети под дос(и если да, то заодно инструкции к ним), необходимо написать программу для отправки сообщения на e-mail, следовательно необходимо осуществить передачу данных по протоколу smtp. И еще один вопрос, если кто-то работал(ет) с ms-dos или freedos, объясните как в принципе подключиться к сети, зная логин и пароль от...
C++ Нужно чтобы принимал минус перед нулем http://www.cyberforum.ru/cpp-beginners/thread823461.html
Если ввести -00043 то работает, а вот если -000000000000000000000000000005353 то нет, потому что берет минус и первые 16 нолей и пишет что больше 16 символов. Как сделать чтобы он так же отбрасывал нули но принимал минус?(Если ввести без минуса то нули отбрасываются и все работает)Вот код: #include <iostream> #include <stdio.h> #include <conio.h> #include <locale.h> char * d(char * s) { ...
C++ Двойная диспетчеризация :) Здорова! Я тут от пытаюсь понять такое понятие взаимодействия классов или хз как назвать, вообщем что такое двойная диспетчеризация. Так сказать. 4 статьи как бы так бегло прочитал но никак нимогу врубиться, что это такое. Кто может простыми словами объяснить, что это такое? Добавлено через 49 секунд Щас голова тяжолая фиг шо варит :) Добавлено через 1 минуту И еще хочу попытаться... подробнее

Показать сообщение отдельно
tramp_1-3
 Аватар для tramp_1-3
14 / 14 / 1
Регистрация: 13.10.2012
Сообщений: 428
31.03.2013, 10:44     Где ошибка?
Программа моделирования работы банкомата (пример из книги, почему-то есть ошибка), если надо могу страницы из книги выложить чтобы сверить
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
#include <iostream>
#include <ctime>
#include <cstdlib>
#include "queue.h"
const int MIN_PER_HR = 60;
bool newcustomer (double x); //это новый клиент?
int main () {
    using namespace std;
    srand (time (0));
    cout << "Case study: Bank of Heather Automatic teller\n";
    cout << "Enter max size of queue: ";
    int qs;
    cin >> qs;
    cin.ignore (1);
    Queue line (qs);    //строка очереди поддерживается, если количество клиентов равно qs
    cout << "Enter of number simulation hours: ";
    int hours;          //продолжительность моделирования в часах
    cin >> hours;
    cin.ignore (1);
    long cyclelimit = MIN_PER_HR * hours;       //количество циклов
    cout << "Enter the average number of customers per hour: ";
    double perhour;         //среднее число ежечастных прибытий
    cin >> perhour;
    cin.ignore (1);
    double min_per_cust;    //cреднее время между прибытиями
    min_per_cust = MIN_PER_HR;
    Item temp;          //данные нового клиента
    long turnaways = 0; //уход от полной очереди
    long customers = 0; //присоединенные к очереди
    long served = 0;    //обслуженные во время моделирования
    long sum_line = 0;  //совокупная длина линии
    int wait_time = 0;  //период времени когда автоответчик свободен
    long line_wait = 0; //общее время в линии
    //моделирование
    for (int cycle = 0; cycle < cyclelimit; cycle++) {
        if (newcustomer (min_per_cust)){    //если есть новоприбывший
            if (line.isfull ())
                turnaways++;
            else {
                customers++;
                temp.set (cycle);   //cyсle - время прибытия
                line.enqueue (temp);    //добавление к линии новичка
            }
        }
        if (wait_time >= 0 && line.isempty ()) { //пробовал в условии писать true - served все равно = 0
            line.dequeue (temp);        //сопровождение следующего заказщика 
            wait_time = temp.ptime ();
            line_wait += (cycle - temp.when ());
            ++served;       //ПОЧЕМУ ТО ВСЕГДА 0 ??
        }
        if (wait_time > 0) 
            wait_time--;
        sum_line += line.quecount ();
    };
    if (customers > 0) {
        cout << "customers accepded: " << customers << '\n';
        cout << "\tcustomers served: " << served << '\n';
        cout << "\t\tturnaways: " << turnaways << '\n';
        cout << "average queue size: ";
        cout.precision (2);
        cout.setf (ios_base::fixed, ios_base::floatfield);
        cout.setf (ios_base::showpoint);
        cout << (double) sum_line / cyclelimit << '\n';
        cout    << " average wait time: "
                << (double) line_wait / served << " minutes\n";
    }
    else
        cout << "No customers!\n";
    system ("pause");
    return 0;
};
//х - среднее время в минутах между прибытиями клиентов
//истинно, если есть клиент
bool newcustomer (double x) {
    return ((rand () * x) / RAND_MAX < 1);
};
методы
Кликните здесь для просмотра всего текста
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 "queue.h"
#include <cstdlib>          //для  rand ()
Queue::Queue (int qs) : qsize (qs) {
    front = rear = NULL;
    items = 0;
};
Queue::~Queue () {
    Node * temp;
    while (front != NULL) {     //пока очередь не пуста
        temp = front;
        front = front->next;    //вторичная установка указателя для следуюшего элемента     
    };
    delete temp;
};
bool Queue::isempty () const {
    return items == 0;
};
bool Queue::isfull () const {
    return items == qsize;
};
int Queue::quecount () const {
    return items;
};
bool Queue::enqueue (const Item & item) {
    if (isfull ()) {
        return false;
    Node * add =  new Node;     //создание узла
    if (add == NULL) 
        return false;           //оставить, если недоступно
     add->item = item;          //установка указателей узла
     add->next = NULL;
     items++;
     if (front == NULL)         //если очередь пуста
        front = add;            //размещение элемента в начале очереди
    else
        rear->next = add;          //размещение в конце очереди
    rear = add;                     //конечная точка для нового узла
    return true;
    };
};
//размещение начального элемента в переменной item и удаление начального элемента
bool Queue::dequeue (Item & item) {
    if (front == NULL) 
        return false;
    item = front->item;     //установка в item первого элемента в очереди
    items--;
    Node * temp = front;        //сохранение местоположения первого элемента
    front = front->next;        //вторичная установка начала к первому элементу
    delete temp;                //удаление элемента который был ранее первым
    if (items == 0)
        rear = NULL;
    return true;
};
//время прибытия задается переменной when
//а время обработки случайным образом от 1 до 
void Customer::set (long when) {
    processtime = rand () % 3 + 1;
    arrive = when;
};

хэдэр
Кликните здесь для просмотра всего текста
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
//интерфейс для очереди
#ifndef _QUEUE_H_
#define _QUEUE_H_
//содержит элементы очереди customer
class Customer {
    private:
        long arrive;        //время прибытия
        int processtime;    //время обработки
    public:
        Customer () {arrive = processtime = 0;};
        void set (long when);
        long when () const {return arrive;};
        int ptime () const {return processtime;};
};
typedef Customer Item;
class Queue {
    struct Node {Item item; struct Node * next;}; //вдоженная локальная структура для данного класса
    enum {Q_SIZE = 10};
    private:
        Node * front;                   //указатель начала очереди
        Node * rear;                    //указатель конца очереди
        int items;                      //текущее число элементов в очереди
        const int qsize;                   //максимальное число элементов
        //преимущественные определения, предотвращающие общедуступное копирование
        Queue (const Queue & q) : qsize (0) { };
        Queue & operator = (const Queue & q) {return *this;};
    public:
        Queue (int qs = Q_SIZE);        //образование очереди с пределом qs
        ~Queue ();
        bool isempty () const;
        bool isfull () const;
        int quecount () const;
        bool enqueue (const Item & item);       //добавление элемента в конец очереди
        bool dequeue (Item & item);         //удаление элемента из начала очереди
};
#endif
Миниатюры
Где ошибка?  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru