Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9

Почему целых две секунды выполняется программа?

03.03.2019, 17:45. Показов 2094. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <stdexcept>
#include <vector>
#include <string>
 
using namespace std;
 
int main(int argc, char** argv)
{
    vector<int>* x;
    for (int i = 1; i < 11; i++)
        x->push_back(i);
    delete x;
    return 0;
}
Почему целых две секунды выполняется программа? И почему отображается:
Process exited after 2.409 seconds with return value 3221225477
? Почему 3221225477, а не 0?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.03.2019, 17:45
Ответы с готовыми решениями:

Задание на операторы цикла (подскажите, почему не выполняется программа)
Рассмотрим некоторое натуральное n (n &gt; 1). Если оно четно, то разделим его на 2, иначе умножим на 3 и прибавим 1. Если полученное число не...

Не пойму, как сделать подсчет и почему программа не выполняется полностью
Задание - из исходного файла с информацией вывести на экран название и суммарную стоимость для продукта от каждого поставщика, а после...

Почему эта программа в многопоточном режиме выдаёт за гуды не гуды, а так же стопорится каждые 2 секунды?
Никак не могу понять. Весь проект: http://rghost.ru/54345553 unit Unit6; interface uses

15
19456 / 10069 / 2451
Регистрация: 30.01.2014
Сообщений: 17,749
03.03.2019, 17:49
Лучший ответ Сообщение было отмечено Соколиный глаз как решение

Решение

Соколиный глаз, У вас объект по указателю х отсутствует. Программа в состоянии UB, может быть все что угодно.
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
03.03.2019, 17:49
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
vector<int>* x;
указатель не рабочий
C++
1
vector<int>* x = new vector<int>{};
1
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
03.03.2019, 17:50  [ТС]
DrOffset, да, точно, вечно с ними путаюсь.
0
19456 / 10069 / 2451
Регистрация: 30.01.2014
Сообщений: 17,749
03.03.2019, 17:50
Соколиный глаз,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <stdexcept>
#include <vector>
#include <string>
 
using namespace std;
 
int main(int argc, char** argv)
{
    vector<int> x;
    for (int i = 1; i < 11; i++)
        x.push_back(i);
 
    return 0;
}
1
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
03.03.2019, 17:51
Измените:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int> x;
    for (int i = 1; i < 11; i++)
        x.push_back(i);
    return 0;
}
1
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
03.03.2019, 17:53  [ТС]
Ещё вопрос. Как передать нулевой указатель в функцию линейного поиска:
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
#include <iostream>
#include <stdexcept>
#include <vector>
#include <string>
 
using namespace std;
 
const string INVALID_ARGUMENT_STRING = "áûë NULL";
 
template<typename T>
bool linear_seach(vector<T>* container, T target)
{
    if (!container)
        throw invalid_argument("container" + INVALID_ARGUMENT_STRING);
    
    int i = 0;
    while (i < container->size() && target != container->at(i))
        i++;
    return i < container->size();
}
 
int main(int argc, char** argv)
{
    vector<int>* x = new vector<int>{};
    for (int i = 1; i < 11; i++)
        x->push_back(i);
    cout << linear_seach(x, 4) << endl;
    delete x;
    return 0;
}
? NULL не принимает.
0
19456 / 10069 / 2451
Регистрация: 30.01.2014
Сообщений: 17,749
03.03.2019, 17:55
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
вечно с ними путаюсь.
Выкрутите на максимум в вашей IDE предупреждения. Хотя бы об использовании неинициализированного указателя должен быть warning.

Цитата Сообщение от Соколиный глаз Посмотреть сообщение
NULL не принимает.
В каком месте он здесь нужен?
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
03.03.2019, 17:56  [ТС]
DrOffset, хочу чтобы прога упала от моего исключения. Поэтому NULL хочу.

Добавлено через 26 секунд
Цитата Сообщение от DrOffset Посмотреть сообщение
Выкрутите на максимум в вашей IDE предупреждения.
Как? У меня DevC++.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
03.03.2019, 17:57
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
? NULL не принимает.
конечно
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
if (!container)
* * * * throw invalid_argument("container" + INVALID_ARGUMENT_STRING)
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
03.03.2019, 17:58
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
хочу чтобы прога упала от моего исключения
Разделите что-нибудь целое на 0
0
19456 / 10069 / 2451
Регистрация: 30.01.2014
Сообщений: 17,749
03.03.2019, 18:00
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Как передать нулевой указатель в функцию
Достаточно просто 0 передать. NULL - это макрос, подключите <cstdlib>

А вообще ваш код решает проблему, которой нет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template<typename T>
bool linear_seach(vector<T> const & container, T target)
{
    size_t i = 0;
    while (i < container.size() && target != container[i])
        i++;
    return i < container.size();
}
 
int main(int argc, char** argv)
{
    vector<int> x;
    for (int i = 1; i < 11; i++)
        x.push_back(i);
    cout << linear_seach(x, 4) << endl;
 
    return 0;
}
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
03.03.2019, 18:00
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
хочу чтобы прога упала от моего исключения. Поэтому NULL хочу.
так упадет
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
#include <iostream>
#include <stdexcept>
#include <vector>
#include <string>
 
using namespace std;
 
const string INVALID_ARGUMENT_STRING = "áûë NULL";
 
template<typename T>
bool linear_seach(vector<T>* container, T target)
{
    if (!container)
        throw invalid_argument("container" + INVALID_ARGUMENT_STRING);
    
    int i = 0;
    while (i < container->size() && target != container->at(i))
        i++;
    return i < container->size();
}
 
int main(int argc, char** argv)
{
    vector<int>* x = nullptr;
    cout << linear_seach(x, 4) << endl;
    return 0;
}
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
03.03.2019, 18:04  [ТС]
Хм, и что я тупил:
C++
1
vector<int>* x = NULL;
...

Добавлено через 56 секунд
P.S. Я отправил своё сообщение, только после - увидел твоё...

Добавлено через 1 минуту
Мне не нравится то, что я пишу:
C++
1
hrow invalid_argument("container" + INVALID_ARGUMENT_STRING);
Можно сделать как нибудь примерно так (аналог nameof()):
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
using System;
using System.Collections.Generic;
 
namespace LinearSeach
{
    /// <summary>
    /// Содержит методы расширения для Enumerable.
    /// </summary>
    public static class EnumerableExtensions
    {
        private const string ArgumentNullExceptionString = "{0} было равно null";
 
        /// <summary>
        /// Выполняет поиск указанного элемента в коллекции.
        /// </summary>
        /// <typeparam name="T">Тип элемента.</typeparam>
        /// <param name="collection">Коллекция.</param>
        /// <param name="target">Искомый элемент.</param>
        /// <param name="equalityComparer">Компаратор.</param>
        /// <returns>True, если искомый элемент присутствует в коллекции, иначе False.</returns>
        public static bool Find<T>(this IEnumerable<T> collection, T target, IEqualityComparer<T> equalityComparer)
        {
            if (collection == null)
                throw new ArgumentNullException(string.Format(ArgumentNullExceptionString, nameof(collection)));
 
            if (equalityComparer == null)
                throw new ArgumentNullException(string.Format(ArgumentNullExceptionString, nameof(equalityComparer)));
 
            foreach (var item in collection)
                if (equalityComparer.Equals(target, item))
                    return true;
            return false;
        }
 
        /// <summary>
        /// Выполняет поиск указанного элемента в коллекции.
        /// </summary>
        /// <typeparam name="T">Тип элемента.</typeparam>
        /// <param name="collection">Коллекция.</param>
        /// <param name="target">Искомый элемент.</param>
        /// <returns>True, если искомый элемент присутствует в коллекции, иначе False</returns>
        public static bool Find<T>(this IEnumerable<T> collection, T target) => collection.Find(target, EqualityComparer<T>.Default);
    }
}
?
0
19456 / 10069 / 2451
Регистрация: 30.01.2014
Сообщений: 17,749
03.03.2019, 18:18
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Как? У меня DevC++.
1
19456 / 10069 / 2451
Регистрация: 30.01.2014
Сообщений: 17,749
03.03.2019, 18:38
Лучший ответ Сообщение было отмечено Соколиный глаз как решение

Решение

Цитата Сообщение от Соколиный глаз Посмотреть сообщение
аналог nameof()
Встроенных средств, кроме typeid(*container).name() - нет.

Добавлено через 11 минут
A, я кажись немного не о том подумал. Наверное в вашем случае можно так:
C++
1
2
3
4
5
6
#define nameof(name) #name
 
//.................
 
 
throw invalid_argument(nameof(container) + INVALID_ARGUMENT_STRING)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.03.2019, 18:38
Помогаю со студенческими работами здесь

Как сделать паузу в программе на две секунды?
Как сделать паузу в программе на две секунды?

Какой код спрячет изображение через две секунды
Имеется окно приложения. Необходимо, чтобы при запуске приложение высвечивалось изображение, и после 2 секунд исчезало. Код я так...

Оптимизация PHP кода,есть скрипт который обрабатывает текст,аналоги работают за секунды,мой выполняется шесть минут
Скрипт:нужно узнать какая из букв в тексте расположена первее всех,и вывести её номер в этом тексте, и делать это всё в цикле пока пока...

Вероятность того, что за две секунды на АТС поступит менее двух вызовов
Среднее число вызовов, поступающих на АТС в минуту, равно 120. Какова вероятность того, что за две секунды на АТС поступит менее двух...

Как сложить две временные отметки в виде дни часы: минуты: секунды
Здравствуйте! Подскажите пожалуйста, как сложить две временные отметки в виде дни часы: минуты: секунды? Спасибо!


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
CQRS (Command Query Responsibility Segregation) на Java
Javaican 12.05.2025
CQRS — Command Query Responsibility Segregation, или разделение ответственности команд и запросов. Суть этого архитектурного паттерна проста: операции чтения данных (запросы) отделяются от операций. . .
Шаблоны и приёмы реализации DDD на C#
stackOverflow 12.05.2025
Когда я впервые погрузился в мир Domain-Driven Design, мне показалось, что это очередная модная методология, которая скоро канет в лету. Однако годы практики убедили меня в обратном. DDD — не просто. . .
Исследование рантаймов контейнеров Docker, containerd и rkt
Mr. Docker 11.05.2025
Когда мы говорим о контейнерных рантаймах, мы обсуждаем программные компоненты, отвечающие за исполнение контейнеризованных приложений. Это тот слой, который берет образ контейнера и превращает его в. . .
Micronaut и GraalVM - будущее микросервисов на Java?
Javaican 11.05.2025
Облачные вычисления безжалостно обнажили ахиллесову пяту Java — прожорливость к ресурсам и медлительный старт приложений. Традиционные фреймворки, годами радовавшие корпоративных разработчиков своей. . .
Инфраструктура как код на C#
stackOverflow 11.05.2025
IaC — это управление и развертывание инфраструктуры через машиночитаемые файлы определений, а не через физическую настройку оборудования или интерактивные инструменты. Представьте: все ваши серверы,. . .
Инъекция зависимостей в ASP.NET Core - Практический подход
UnmanagedCoder 11.05.2025
Инъекция зависимостей (Dependency Injection, DI) — это техника программирования, которая кардинально меняет подход к управлению зависимостями в приложениях. Представьте модульный дом, где каждая. . .
Битва за скорость: может ли Java догнать Rust и C++?
Javaican 11.05.2025
Java, с её мантрой "напиши один раз, запускай где угодно", десятилетиями остаётся в тени своих "быстрых" собратьев, когда речь заходит о сырой вычислительной мощи. Rust и C++ традиционно занимают. . .
Упрощение разработки облачной инфраструктуры с Golang
golander 11.05.2025
Причины популярности Go в облачной инфраструктуре просты и одновременно глубоки. Прежде всего — поразительная конкурентность, реализованная через горутины, которые дешевле традиционных потоков в. . .
Создание конвейеров данных ETL с помощью Pandas
AI_Generated 10.05.2025
Помню свой первый опыт работы с большим датасетом — это была катастрофа из неотформатированных CSV-файлов, странных значений NULL и дубликатов, от которых ехала крыша. Тогда я потратил три дня на. . .
C++ и OpenCV - Гайд по продвинутому компьютерному зрению
bytestream 10.05.2025
Компьютерное зрение — одна из тех технологий, которые буквально меняют мир на наших глазах. Если оглянуться на несколько лет назад, то сложно представить, что алгоритмы смогут не просто распознавать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru