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

Не получается отсортировать рабочий график - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Язык программирования С++ http://www.cyberforum.ru/cpp-beginners/thread643695.html
Доброго времени суток, Уважаемые Форумчане! Я учусь в БГУИР на инженер-программиста (Минск). И возник вопрос - Хочу стать экспертом в области С++. Расскажите с чего начать и впоследствие улучшить свои навыки по с++, начиная свой путь от новичка до профессионала. Также интересует С++ для 3d игр. Вопрос больше программерам. Спасибо!
C++ очередь с приоритетом, извлечение минимума сабж http://www.cplusplus.com/reference/stl/priority_queue по умолчанию там есть только метод извлечения максимума в сети нашел такой способ - #include <iostream> #include <queue> #include <vector> int main() { http://www.cyberforum.ru/cpp-beginners/thread643678.html
Выделение памяти под массив C++
Требуется выделить память под матрицу. Будет ли следующий код работать корректно? //глобальная область int x_size = 3; int y_size = 4; int *p;
C++ Проверить, являются ли числа в массиве возрастающими?
Всем доброго времени суток, долго боролся над данной проблемой, изменял код по всячески, пробовал разные проверки на возрастание, все впустую. Программа по первому условию судит все массивы - если сначала проверять на невозрастание, то все введенные массивы она признает такими, и наоборот. Прилагаю код и очень надеюсь на вашу помощь. Желательно указать на ошибку, а не переписывать с нуля....
C++ Timus 1003 - TLE #1 http://www.cyberforum.ru/cpp-beginners/thread643646.html
В общем, никак не получается сделать задачу эту. Копаю ее уже месяц, перепробовал разные методы, но постоянно получаю тайм-лимит. Идея текущего метода такая - создаем граф с ребрами, где вершины - крайние позиции, а вес ребра - четность. И просто нужно отслеживать, чтобы не происходило такой ситуации, что от одной границы до другой идут разные пути, и на этих путях четности разные. В этом...
C++ Описать динамическую информацию о наличии автобусов в автобусном парке Составить программу, которая содержит динамическую информацию о наличии автобусов в автобусном парке.Сведенения о каждом автобусе вкл -Номер автобуса -ФИО -№маршрута Программа должна обеспечивать -начальное формирование данных обо всех автобусах в парке в виде списка -при выезде каждго автобуса из парка вводится №автобуса, и программа удаляет данные об этом автобусе из списка... подробнее

Показать сообщение отдельно
Roof
 Аватар для Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
29.08.2012, 08:37     Не получается отсортировать рабочий график
Я не понял из первого поста, что именно должна делать программа, но прошёлся по коду и выявил некоторые ошибки и недочеты, смотрите комментарии.
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
91
92
93
94
#include <iostream>
#include <fstream>
//#include <vector> это не используется
//#include <stdlib.h> и это тоже
 
using namespace std;
 
ifstream in;
 
void date_sort( string );
void dayandtime( string tooaeg[] );
 
int main() {
    string filename;
    do {
        cout << "What file would you like to load? ";
        getline( cin, filename );
        in.open( filename.c_str(), ios::in );
        if ( !in ) {
            cerr << "Couldn't open file (" << filename << "). Please, try again.\n";
        }
    } while ( !in );
    while ( in.good() ) {
        string line;
        getline( in, line );
        date_sort( line );
    }
    in.close();
    return 0;
}
void date_sort( string line ) {
    //int i=0;//указатель на букву в строке  //заменил
    string::size_type i = 0;
    int pos = 0;
    string tooaeg[ 7 ]; //дни недели
    //int day=0; // это зачем нужно?
    while ( i < line.length() ) {
        switch ( line[ i ] ) {
        case ',':
            pos++;
            break;
        default:
            if ( tooaeg[ pos ] == " " ) { //убираем пробелы вначале
                tooaeg[ pos ] = line[ i ];
            } else { //прибавляем по букве
                tooaeg[ pos ].append( line, i, 1 );
            }
            break;
        }
        i++;
    }
    dayandtime( tooaeg );
}
void dayandtime( string tooaeg[] ) {
    string week[ 7 ] = "ETKNRLP"; //Дни недели 
    // массив из 7 элементов типа string
    // причем week[ 0 ] == "ETKNRLP" и week[ any ] == "ETKNRLP", проверял на компиляторе g++
    // таким образом лучше не делать, думаю, что Вы подразумевали другое.
    int i = 0;
    int first = 0;
    int second = 0;
    while ( i < 7 ) {
        string str = tooaeg[ i ];
        //for ( int g = 0; g < str.size(); g++ ) { //заменил
        for ( string::size_type g = 0; g < str.size(); g++ ) {
            if ( isdigit( str[ 3 ] ) ) {
                cout << "normal day" << endl;
                break;
            } else {
                for ( int j = 0; j < 7; j++ ) {
                    // str[ 0 ] это символ, а week[ j ] это string - потому и нельзя сравнить
                    // думайте, что исправить
                    if ( str[ 0 ] == week[ j ] ) {
                        first = j;
                    }
                    if ( str[ 2 ] == week[ j ] ) { // аналогично
                        second == j; // думаю подразумевается second = j
                    }
                    if ( first != 0 && second != 0 ) {
                        for ( int k = 0; k < second - first + 1; k++ ) {
                            cout << "complex day" << endl;
                        }
                    }
                }
                break;
            }
        }
        if ( str == "" ) {
            cout << "empty string" << endl;
        }
        i++;
    }
 
}
Вот для проверки еще поглядите пример. Думаю, что станет понятней.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
int main() {
    string week[ 7 ] = "ETKNRLP"; //Дни недели
    cout << week[ 0 ] << endl;
    cout << week[ 1 ] << endl;
    cout << week[ 5 ] << endl;
    
    return 0;
}
 
Текущее время: 04:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru