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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ultrafast
0 / 0 / 0
Регистрация: 04.06.2011
Сообщений: 3
#1

Ошибка в книге Скиены "Олимпиадные задачи по програмированию"?! - C++

10.01.2012, 16:54. Просмотров 726. Ответов 3
Метки нет (Все метки)

Итак, всем привет Начал я на днях читать книгу Скиены, сейчас на главе про структуры даных.
В книге приведен премер задачи "Сборы на войну" где используются очереди.
Но проблема в том что програма не работает.
Немного почитав про очереди увидел что в примере они об’являются неправильно(?), а некоторые функции которые использует автор вобще несуществуют(init_queue).
Привожу код програмы(откоментировал некоторые проблемные места):
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
89
90
#include <iostream>
#include <queue>
using namespace std;
#define ncards 52   
#define nsuits 4   
 
char values[] = "23456789TJQKA";
char suits[] = "cdhs";
 
int rank_card(char value, char suit)
{
    int i,j;
    for(i=0;i<(ncards/nsuits);i++)
        if (values[i]==value)
            for (j=0;j<nsuits;j++)
                if (suits[j]==suit)
                    return (i*nsuits + j);
    printf("Warning:bad input value=%d, suit=%d\n",value,suit);
}
 
char suit(int card)
{
    return (suits[card % nsuits]);
}
 
char value(int card)
{
    return (values[card/nsuits]);
}
 
void war(queue *a, queue *b)         //здесь ошибка, вероятно нада указать тип очередей
{
    int steps=0;
    int x,y;
    queue c;                                  //здесь автор почемуто не указал тип очереди queue<тип> name
    bool inwar=false;
    init_queue(&c);                         //вот такой функии похоже нет
    while ((!empty(a))&&(!empty(b))&&(steps<maxsteps)){
        steps+=1;
        x = dequeue(a);
        y = dequeue(b);
        enqueue(&c,x);
        enqueue(&c,y);
        if (inwar)  {
            inwar=false;
        }
        else
        {
            if (value(x)>value(y))
                clear_queue(&c,a);               //опять компилятор сообщает что такой функции нет
            else
            if (value(x)<value(y))
                clear_queue(&c,b);         //ну и тут естественно
            else
            if (value(x)==value(y))
                inwar=true;
        }
    }
    if (!empty(a) && empty(b))
        printf("a wins in %d steps\n", steps);
    else
    if (empty(a) && !empty(b))
        printf("b wins in %d steps\n", steps);
    else
    if (!empty(a) && !empty(b))
        printf("game tied after %d steps\n", steps);
    else
        printf("a and b tied in %d steps",steps);
}
 
main()
{
    queue  decks [2];                   
    char  value,suit,c;         
    int   i;      
    while(TRUE) {
        for(i=0;i<=l;i++){
            init_queue(&decks[i]);
            while((c=getchar())!='\n') {
                if (c == EOF) return;
                if (c !=' '){
                    value = c;
                    suit = getchar();
                    enqueue(&decks[i], rank_card(value, suit));
                }
            }
        }
        war(&decks[0],&decks[1]);
    }
}
А вот ссылка на [ссылка удалена], задача начинается с 35 страницы.
Спасибо за помощь.

 Комментарий модератора 
Запрещено давать ссылки на скачивание программ и книг с файлообменников (рапида, депозит и т.п.) и других сайтов (форумов), если есть возможность их скачать с сайтов фирм-производителей.
Правила форума


Добавлено через 48 минут
Я бы попросил модераторов вернуть ссылку, так как она вполне официальная и ведет на books.google.com
где автор сам выложил книгу для ознакомления.
Итак вот ссилка на книгу:
http://books.google.com.ua/books?id=...itesec=reviews
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2012, 16:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в книге Скиены "Олимпиадные задачи по програмированию"?! (C++):

Обучение по книге Страуструпа "принципы и практика C++". Не выводится "Hello, World" - C++
Ребят, помогите пожалуйста, пропал на первом же примере из книги, автор даёт код для вывода Hello world!#include &quot;std_lib_facilities.h&quot; ...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Ошибка Необработанное исключение в "0x001d18f8" в "lr7v2.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcdcdcde9" - C++
class Hdd { public: char Hdd_name; int total_space; int free_space; int speed; Hdd *next; Hdd *previous; };

Почему происходит ошибка времени выполнения в решении задачи "Ход конем"? - C++
Добрый день! Я попытался решить одну задачку о шахматах. Проблема в том, что моя программа крашится с такой ошибкой: ...

Ошибка в программе задачи "голодный ферзь" - C++
Суть задачи: на шахматной доске 8х8 стоит белый ферзь и N черных пешек. На вход программе дается число N, положение ферзя и N строк с...

Ошибка в решении задачи "Судоку" (acmp) - C++
Здравствуйте. Моё решение: #include &lt;stdio.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;cstdio&gt; #include &lt;algorithm&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ultrafast
0 / 0 / 0
Регистрация: 04.06.2011
Сообщений: 3
12.01.2012, 02:07  [ТС] #2
Все, разобрался....
Ем, как выяснилось автор просто показал несколькими страницами ранее как все ет реализовать самому...
А я вот пропустил и подумал что он STL использует...
Извините, вопрос ищерпан.
ValeryLaptev
Эксперт С++
1040 / 819 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
12.01.2012, 10:26 #3
Цитата Сообщение от ultrafast Посмотреть сообщение
Все, разобрался....
Ем, как выяснилось автор просто показал несколькими страницами ранее как все ет реализовать самому...
А я вот пропустил и подумал что он STL использует...
Извините, вопрос ищерпан.
Вы хотели сказать "исчерпан"...
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
13.01.2012, 10:00 #4
у тебя там main() без возвращаемого значения определена, а в C++ такое не допускается
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2012, 10:00
Привет! Вот еще темы с ответами:

Ошибка при онлайн проверке задачи: "Определить найдены ли все части порваной газеты" - C++
Даны задачи, я их решил, с примером сходится, но сервер выдаёт ошибку: Хулиганы Первый и Второй очень не любят доску почёта своей...

Ошибка при сборке многофайлового проекта: "невозможно преобразовать "int" в "const golf" - C++
Сделал многофайловую программу программу, вот она: //golf.h #include &lt;iostream&gt; #ifndef golg_h_ #define golf_h_ const int Len =...

Где ошибка невозможно преобразовать указатель "this" из "const pers" в "pers &" при выводе объектов через cout - C++
Добрый день! Переписал код из книг Лафоре, создание мультимножества из собственных объектов- справочник телефонный, с именем и фамилией. ...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.01.2012, 10:00
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru