Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 1
Регистрация: 02.11.2010
Сообщений: 78

Вопрос по Visual Studio 2008

11.02.2011, 21:01. Показов 1110. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Запустил программку в 11 утра сегодня. До сих пор выполняется. Надо с работы уходить домой. Думаю прийти в понедельник и посмотреть за какое время она выполнилась ( если ей хватит времени ).
Вопрос такой : в этой среде есть возможность , или настройка какая-нибудь для просмотра время выполнения дебагинга?)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.02.2011, 21:01
Ответы с готовыми решениями:

Вопрос про Visual Studio 2008
Здравствуйте! Начал изучать С++ примерно 2 недели назад (читаю книгу, делаю упражнения). Пользуюсь компилятором Dev-C++, решил начать...

Написать программу. Задания нужно выполнять на языке Visual C++ в среде Microsoft Visual Studio 2008
Можете написать программу? Задание по номером 3.24 (2 рисунок).

Несовместимость visual c++ 6.0 и visual studio 2008
почему правильно гаписанная программа в visual c++ 6.0 не работает в visual studio 2008 , а именно #include <iostream> ...

8
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.02.2011, 21:05
4ance, а чисто теоретически данная программа может столько выполняться? Может там зациклилось чего, а вы ждёте.
0
2 / 2 / 1
Регистрация: 02.11.2010
Сообщений: 78
11.02.2011, 21:15  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
4ance, а чисто теоретически данная программа может столько выполняться? Может там зациклилось чего, а вы ждёте.
Там идёт последовательность действий 17!(факториал) раз.
Программу тестировал вдоль и поперёк на малых значениях ( до 5! включительно ) - работает, зацикливания нет, так что в этом я уверен. Могу кинуть код, но в нём долго разбираться - да и не за чем.

Утром попытался запустить её для значений 6!, она дебажилась больше минуты - вырубил( лень ждать было), поставил сразу на максимум - просто для интереса сколько времени займёт это. Вот сижу до сих пор

Хотя функцию, которая выполняется 3,5 х 10^34 раз (17!) - скину, чтобы понятнее было.
Поиск в ширину:

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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
int UnichtojenieFigury( int *x, int *y, int Ocherednost )
{
    cout << "Ocherednost = " << Ocherednost << endl;
    cout << "*( x + Ocherednost ) = " << *( x + Ocherednost ) << endl;
    cout << "*( y + Ocherednost ) = " << *( y + Ocherednost ) << endl;
    cout << "*( x + Ocherednost + 1 ) = " << *( x + Ocherednost + 1 ) << endl;
    cout << "*( y + Ocherednost + 1) = " << *( y + Ocherednost + 1 ) << endl;
 
    int Doska[ 8 ][ 8 ];     // Шахматное поле
    int Queue[ 2 ][ 64 ];    // Очередь [ 2 ] - для координат х и у, [ 64 ] - 64 поля на доске
    int i, j;                // Переменные для цикла for
    int a, b;                // Координаты х и у для Queue[][]
    int Start;               // Метка начала очереди
    int Last;                // Метка конца очереди
 
    for ( i = 0; i < 8; i++ )
        for ( j = 0; j < 8; j++ )
            Doska[ i ][ j ] = -1;        // Заполняет матрицу значением -1                         
 
    Doska[ *( x + Ocherednost ) ][ *( y + Ocherednost ) ] = 0;        // Клетка начала пути
 
    cout << "Doska[ *( x + Ocherednost ) ][ *( y + Ocherednost ) ] = " << Doska[ *( x + Ocherednost ) ][ *( y + Ocherednost ) ] << endl;
    cout << "Doska[ *( x + Ocherednost + 1 ) ][ *( y + Ocherednost + 1 ) ] = " << Doska[ *( x + Ocherednost + 1 ) ][ *( y + Ocherednost + 1 ) ] << endl;
 
    Queue[ 0 ][ 0 ] = *( x + Ocherednost );        // Заносит в очередь координату Х начальной клетки
    Queue[ 1 ][ 0 ] = *( y + Ocherednost );        // Заносит в очередь координату Y начальной клетки
    Start = 0;                    // Начальная позиция левого указателя
    Last = 1;                    // Начальная позиция правого указателя
 
    // Запускаем цикл, который продолжает работу до тех пор,
    // пока очередь не пуста или искомый конечный элемент не помечен
    while ( ( Start != Last ) && ( Doska[ *( x + Ocherednost + 1 ) ][ *( y + Ocherednost + 1 ) ] == -1 ) )
    {
        a = Queue[ 0 ][ Start ];    // Запоминает координату Х текущей клетки
        b = Queue[ 1 ][ Start ];    // Запоминает координату Y текущей клетки
 
        /* Следующие 8 операторов if перебирают все возможные ходы коня,
        предусматривая возможность выхода за пределы поля, и если клетка, в которую можно пойти, 
        не помечена, то ее координаты заносятся в очередь,
        а она сама помечается увеличенной на единицу меткой клетки,
        из которой мы попали в текущую */ 
 
        if ( ( Doska[ a + 2 ][ b - 1 ] == -1 ) && ( a + 2 < 8 ) && ( b - 1 < 8 ) && ( a + 2 >= 0 ) && ( b - 1 >= 0 ) )
        {
            Queue[ 0 ][ Last ] = a + 2;
            Queue[ 1 ][ Last ] = b - 1;
            Last++;
            Doska[ a + 2 ][ b - 1 ] = Doska[ a ][ b ] + 1;
        }
        if ( ( Doska[ a + 2 ][ b + 1 ] == -1 ) && ( a + 2 < 8 ) && ( b + 1 < 8 ) && ( a + 2 >= 0 ) && ( b + 1 >= 0 ) )
        {
            Queue[ 0 ][ Last ] = a + 2;
            Queue[ 1 ][ Last ] = b + 1;
            Last++;
            Doska[ a + 2 ][ b + 1 ] = Doska[ a ][ b ] + 1;
        }
        if ( ( Doska[ a - 2 ][ b + 1 ] == -1 ) && ( a - 2 < 8 ) && ( b + 1 < 8 ) && ( a - 2 >= 0 ) && ( b + 1 >= 0 ) )
        {
            Queue[ 0 ][ Last ] = a - 2;
            Queue[ 1 ][ Last ] = b + 1;
            Last++;
            Doska[ a - 2 ][ b + 1 ] = Doska[ a ][ b ] + 1;
        }
        if ( ( Doska[ a - 2 ][ b - 1 ] == -1 ) && ( a - 2 < 8 ) && ( b - 1 < 8 ) && ( a - 2 >= 0 ) && ( b - 1 >= 0 ) )
        {
            Queue[ 0 ][ Last ] = a - 2;
            Queue[ 1 ][ Last ] = b - 1;
            Last++;
            Doska[ a - 2 ][ b - 1 ] = Doska[ a ][ b ] + 1;
        }
        if ( ( Doska[ a - 1 ][ b + 2 ] == -1 ) && ( a - 1 < 8 ) && ( b + 2 < 8 ) && ( a - 1 >= 0 ) && ( b + 2 >= 0 ) )
        {
            Queue[ 0 ][ Last ] = a - 1;
            Queue[ 1 ][ Last ] = b + 2;
            Last++;
            Doska[ a - 1 ][ b + 2 ] = Doska[ a ][ b ] + 1;
        }
        if ( ( Doska[ a + 1 ][ b + 2 ] == -1 ) && ( a + 1 < 8 ) && ( b + 2 < 8 ) && ( a + 1 >= 0 ) && ( b + 2 >= 0 ) )
        {
            Queue[ 0 ][ Last ] = a + 1;
            Queue[ 1 ][ Last ] = b + 2;
            Last++;
            Doska[ a + 1 ][ b + 2 ] = Doska[ a ][ b ] + 1;
        }
        if ( ( Doska[ a + 1 ][ b - 2 ] == -1 ) && ( a + 1 < 8 ) && ( b - 2 < 8 ) && ( a + 1 >= 0 ) && ( b - 2 >= 0 ) )
        {
            Queue[ 0 ][ Last ] = a + 1;
            Queue[ 1 ][ Last ] = b - 2;
            Last++;
            Doska[ a + 1 ][ b - 2 ] = Doska[ a ][ b ] + 1;
        }
        if ( ( Doska[ a - 1 ][ b - 2 ] == -1 ) && ( a - 1 < 8 ) && ( b - 2 < 8 ) && ( a - 1 >= 0 ) && ( b - 2 >= 0 ) )
        {
            Queue[ 0 ][ Last ] = a - 1;
            Queue[ 1 ][ Last ] = b - 2;
            Last++;
            Doska[ a - 1 ][ b - 2 ] = Doska[ a ][ b ] + 1;
        }
        Start++;    // Удаляет первый элемент из очереди
    }
 
    cout << "Проделанная работа в функции:\n\n";
    for ( i = 0; i < 8; i++ )
    {
        for ( j = 0; j < 8; j++ )
        {      
            printf( "%3d ",  Doska[ i ][ j ] );
        }
        cout << '\n' << endl;
    } 
    cout << '\n' << endl;
 
    return Doska[ *( x + Ocherednost + 1 ) ][ *( y + Ocherednost + 1 ) ];  // Возвращает минимальное количество шагов, требуемое до достижения следующей цели
}
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.02.2011, 21:21
Хм, да, вроде зациклиться не должна... Тогда придётся ждать или Ctrl+C)))
0
2 / 2 / 1
Регистрация: 02.11.2010
Сообщений: 78
11.02.2011, 22:22  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
Хм, да, вроде зациклиться не должна... Тогда придётся ждать или Ctrl+C)))
Толькo не ctrl+c)))
Там есть пауза, но она мне ничего не даёт. Поставил бы какой-нить счётчик - счётик увидел бы, сколько раз он прокрутился.

Сейчас думаю, что затея бесполезная, так как 6! = 720 он мне считал полминуты примерно.
Грубо округляем получается что 1000 считается минуту, а 10 ^ 35 - не судьба за 3 дня посчитать это точно)
0
 Аватар для zulkis
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
12.02.2011, 11:34
эмм 17! это 3.5 * 10^14 вроде
Что собственно не супер и большая величина.
А оптимизация кода компилятором включена?
Кстати, программа то не решила еще ?)
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
12.02.2011, 11:49
Цитата Сообщение от 4ance Посмотреть сообщение
Вопрос такой : в этой среде есть возможность , или настройка какая-нибудь для просмотра время выполнения дебагинга?
А написать собственный логгер, который бы записывал все действия в файл?
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
12.02.2011, 13:27
Цитата Сообщение от M128K145 Посмотреть сообщение
А написать собственный логгер, который бы записывал все действия в файл?
Да, как то тоже сталкивался с подобной проблемой, оставлял программу на ночь, все что нужно, записывалось в файл. По-моему хорошее решение.
0
2 / 2 / 1
Регистрация: 02.11.2010
Сообщений: 78
13.02.2011, 11:04  [ТС]
Цитата Сообщение от M128K145 Посмотреть сообщение
А написать собственный логгер, который бы записывал все действия в файл?
Можно было, конечно, но тогда об этом не подумал.

Подумал просто - дай-ка по максимуму поставлю её ( ну, может, часа 2 это займёт) )!

Ну а когда она уже компилится вносить изменения поздно

Добавлено через 4 минуты
Цитата Сообщение от zulkis Посмотреть сообщение
эмм 17! это 3.5 * 10^14 вроде
Что собственно не супер и большая величина.
А оптимизация кода компилятором включена?
Кстати, программа то не решила еще ?)
Оптимизация кода - если по дефолту в VS2008 не стоит, то я не настраивал это.

А программа - не знаю - выполняется или нет, я её в 11 утра в пятницу на работе включил, когда вечером уходил оттуда - оставил её компилиться. В понедельник приду - узнаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.02.2011, 11:04
Помогаю со студенческими работами здесь

Visual studio 2008 C++
Вычислите сумму элементов верхнего правого треугольника матрицы и количество элементов в нем. матрица размером 5x5

Visual Studio 2008
Здравствуйте.У меня студия 2010 (экспресс-версия) поставилась,но при запуске уже когда ввел уже код(я уже активировал когда-то,но тогда 7...

Visual Studio 2008 ошибка
Вот установил Visual Studio 2008 на 5 компах, пашет все нормально! Дистрибутив студии качественный! И на Win7 и на Xp становиться и...

[C#] Visual studio 2008 анимация
Суть в следующем: Необходимо что бы замкунутый сплайн, (который условно представляет собой кусочек угля) Point aa =...

Файлы Visual Studio 2008
Трабл серьезный, абсолютно все программы(С\С++) которые работают с файлами перестали работать внутри среды , то есть вот есть рабочий код...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru