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

Вектора. Их инициализация и использование в ветвлениях

25.08.2016, 21:20. Показов 2986. Ответов 3

Студворк — интернет-сервис помощи студентам
Добрый вечер. Подскажите, как можно решить 2 появившиеся проблемы
1)Строка 10 "vector <char> a(n, "I");". Инициализация символьного вектора. Не принимает размер вектора в виде int. Это ошибка библиотеки, или я не понимаю, как создать вектор длины n и инициализировать его символами I?
2)Строка 15 "for (int j = l(i); j < 8; j++)". "Ошибка : вызов объекта типа класса без соответствующей функции operator() или функций преобразования указателя в функцию" разве l(i) в данном случае не является числом (т.е. это не указатель и разъименовать его нельзя)? Как данную ошибку можно исправить
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    int n, k;
    cin >> n >> k;
    vector <int> l(k), r(k);
    vector <char> a(n, "I");
    for (int i = 0; i < k; i++){
        cin >> l[i] >> r[i];
    }
    for (int i = 0; i < k; i++){    
        for (int j = l(i); j < 8; j++){
            //
        }
        }
        
    }
    cout << "NO";
    return 0;
}
C++ (Qt)
1
Ваш код
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.08.2016, 21:20
Ответы с готовыми решениями:

Инициализация вектора
Как создать и сразу инициализировать вектор числами 5 3 1 3 5 2 5?

Инициализация вектора
у меня в классе есть vector из string (константный, просто строки нужны как образец для других функций), в конструкторе соответственно надо...

Инициализация вектора
Приветствую всех. Есть вектор std::vector. При изменении его размерности функцией resize что содержат элементы вектора? Мусор или...

3
2393 / 1920 / 763
Регистрация: 27.07.2012
Сообщений: 5,560
25.08.2016, 21:24
Лучший ответ Сообщение было отмечено Hait как решение

Решение

1) vector <char> a(n, 'I'); - символы задаются в одиночных кавычках
2)
Цитата Сообщение от Hait Посмотреть сообщение
разве l(i) в данном случае не является числом
Нет. l(i) - попытка вызвать operator() для вектора, которого у него естественно нет. Для доступа к элементу используются квадратные скобки - [].
1
2 / 1 / 1
Регистрация: 23.02.2015
Сообщений: 73
25.08.2016, 23:49  [ТС]
спасибо

Добавлено через 2 часа 11 минут
John Prick,
А можете еще вот ту подсказать?
N кеглей выставили в один ряд, занумеровав их слева направо числами от 1 до N. Затем по этому ряду бросили K шаров, при этом i-й шар сбил все кегли с номерами от li до ri включительно. Определите, какие кегли остались стоять на месте.

Формат входных данных
Программа получает на вход количество кеглей N и количество бросков K. Далее идет K пар чисел li, ri, при этом 1 ≤ li, ri ≤ N.

Формат выходных данных
Программа должна вывести последовательность из N символов, где j-й символ есть “I”, если j-я кегля осталась стоять, или “.”, если j-я кегля была сбита.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    int n, k;
    cin >> n >> k;
    vector <int> l(k), r(k);
    vector <char> a(n, 'I');
    for (int i = 0; i < k; i++){
        cin >> l[i] >> r[i];
    }
    for (int i = 0; i < k; i++){    
        for (int j = (l[i] - 1); j < r[k]; j++){
            a[j] = '.';
        }       
    }
    for (int i = 0; i < n; i++)
        cout << a[i];
    return 0;
}
Пишет, что на 14-15 строке выход за пределы вектора. Вроде все проверил, где может быть ошибка?

Контрольные значения
Sample Input:
10 3
8 10
2 5
3 6
Ответ
I.....I...

Добавлено через 6 минут
Уже не надо, нашел
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.08.2016, 21:10
Цитата Сообщение от Hait Посмотреть сообщение
N кеглей
Мне кажется, это задача на знание std::string:
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
//N кеглей выставили в один ряд, занумеровав их слева направо числами от 1 до N.
//Затем по этому ряду бросили K шаров, при этом i-й шар сбил все кегли с номерами
//от li до ri включительно.
//Определите, какие кегли остались стоять на месте.
 
//Формат входных данных
//Программа получает на вход количество кеглей N и количество бросков K.
//Далее идет K пар чисел li, ri, при этом 1 ≤ li, ri ≤ N.
 
//Формат выходных данных
//Программа должна вывести последовательность из N символов, где j-й символ
//есть “I”, если j-я кегля осталась стоять, или “.”, если j-я кегля была сбита.
///////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
///////////////////////////////////////////////////////////////////////////////
typedef std::string         T_str;
typedef T_str::size_type    T_pos;
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    int     n{};
    int     k{};
 
    std::cin    >>  n
                >>  k;
 
    T_str   s(n, 'I');
 
    for( int  i{}; i < k; ++i )
    {
        int     L{};
        int     R{};
 
        std::cin    >>  L
                    >>  R;
 
        T_pos   pos     =   L   -   1;
        T_pos   count   =   R   -   pos;
 
        s.replace
            (
                pos,
                count,
                count,
                '.'
            );
    }//for
 
    std::cout   <<  s
                <<  std::endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.08.2016, 21:10
Помогаю со студенческими работами здесь

Инициализация вектора
Почему вектор не хочет инициализироваться при обьявлении? vector&lt;int&gt; vec = {1,2,3}; Имеем Error (active) E0289 no instance...

Инициализация вектора
#include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; int main() { std::vector&lt; int &gt; n (4,100); std::vector&lt; int...

Инициализация вектора
Как правильно инициализировать двумерный символьный вектор? Пробовал вот так, не получилось vector&lt; vector&lt;char&gt; &gt; map(2,...

Инициализация вектора в стиле С++0х
У меня связка последний Code::Blocks+ последний minigw, но в коде вот такая инициализация вектора: vector&lt;int&gt; ar={1,2,3,4,5,6}; ...

Инициализация вектора класса
Здравствуйте. Следующий код не работает: struct stRefName { AnsiString BranchName; AnsiString TableName; }; typedef...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru