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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать программу с использованием структуры, состоящей из переменных, определяющих объект http://www.cyberforum.ru/cpp-beginners/thread425592.html
«Студент»: фамилия, имя, год рождения, номер группы, оценки по каждому экзамену. Объявить массив структур. Ввод элементов структуры осуществляется с клавиатуры: 1. Осуществить поиск по фамилии, выдать на экран данные о студенте, и на основе анализа первого символа переменной «номер группы» определить курс, на котором он обучается. 2. Определить количество отличников в группе и выдать на экран...
C++ Умножение по модулю Здравствуйте уважаемые программисты, вопрос у меня весьма специфический, надеюсь создал тему в правильном месте. Собственно и он. Дано задание: "Во входном файле в первой строке записаны символы некоторое число, например 7. В двух следующих строках целочисленные коэффиценты двух многочленов (0<=коэфицент<число) через пробел. Разработать программу умножения многочленов по модулю заданного... http://www.cyberforum.ru/cpp-beginners/thread425589.html
C++ Функции поиска
Задача: В записной книжке указаны: Ф.И.О., адрес, телефон. Определить функции: 1) поиска адреса и телефона по Ф.И.О. 2) поиска Ф.И.О. по адресу и/или телефону Проблемы: Как грамотно создать записную книжку, что бы в ней адекватно хранились данные? Как работают сами функции я представляю в принципе, достаточно сравнивать вводимые данные с теми, что в записной книжке, но проблема заключается...
C++ Как сохранить вещественное число, разбив его на два целых?
Здравствуйте, мне нужно написать класс дробного числа, где первая целая часть это LongLong(его я реализовал, он беззнаковый), а вторая часть short int. Наткнулся на такую неприятность: например 5.05, 05 в short int не сохранится (ноль перед числом отбрасывается), посоветуйте, может кто сталкивался.
C++ Сделать фото результата программ http://www.cyberforum.ru/cpp-beginners/thread425521.html
Вобщем у меня есть две программы и мне нужно, что бы кто-небудь скинул фото результата данной программы #include "stdafx.h" #include <iostream> #include <string> #include <sstream> int main() { using namespace std::string sn,s; int l,k,kod;
C++ Разработать класс для представления сведений о студенте Разработать класс для представления сведений о студентах: фамилия, группа, массив из четырёх оценок. Класс должен включать весь необходимый интерфейс: конструкторы, перегрузку операций, другие необходимые методы. Разработать функции: Ввода данных о нескольких студентах в массив Сортировки массива по фамилиям(По сумме баллов) Поиск студентов, не сдавших более 2 экзаменов (паарметры: массив,... подробнее

Показать сообщение отдельно
ultrafast
0 / 0 / 0
Регистрация: 04.06.2011
Сообщений: 3
10.01.2012, 16:54     Ошибка в книге Скиены "Олимпиадные задачи по програмированию"?!
Итак, всем привет Начал я на днях читать книгу Скиены, сейчас на главе про структуры даных.
В книге приведен премер задачи "Сборы на войну" где используются очереди.
Но проблема в том что програма не работает.
Немного почитав про очереди увидел что в примере они об’являются неправильно(?), а некоторые функции которые использует автор вобще несуществуют(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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru