Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2023, 13:15   #41
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Допустим, вообще не отслеживаем выданные карты, т.е. какой номер n запросили, тот и отметили, и вернули:
Код:
int selectnext(int n)
{
    int i = n;
    cardsdrawn[i] = true;
    return i;
}
Теперь вместо простого присвоения "перегоняем" n в i через цикл:
Код:
int selectnext(int n)
{
    int i = 0;
    while (n-- > 0)
        i++;
    cardsdrawn[i] = true;
    return i;
}
Результат тот же: в i то же значение, что и в n.
А теперь добавляем два допцикла, которые дополнительно сдвигают i, чтобы i всегда указывала только на невыбранные карты:
Код:
int selectnext(int n)
{
    int i = 0;
    while (cardsdrawn[i])
        i++;
    while (n-- > 0)
    {
        i++;
        while (cardsdrawn[i])
            i++;
    }
    cardsdrawn[i] = true;
    return i;
}
Давайте пример попроще. Три раза взять 2ю невыбранную карту:
Код:
n = 2
i          0 1 2 3 4
n          0 1 2 3 4 // нумерация свободных и занятых совпадает
cardsdrawn 0 0 0 0 0
---
cardsdrawn 0 0 x 0 0 // взяли карту с номером i = 2
=====
n = 2
i          0 1 2 3 4
n          0 1   2 3 // нумерация свободных и занятых уже не совпадает
cardsdrawn 0 0 x 0 0
---
cardsdrawn 0 0 x x 0 // взяли карту с номером i = 3
=====
n = 2
i          0 1 2 3 4
n          0 1     2
cardsdrawn 0 0 x x 0
---
cardsdrawn 0 0 x x x // взяли карту с номером i = 4
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.03.2023, 22:04   #42
Damyen
Пользователь
 
Регистрация: 14.03.2022
Сообщений: 32
По умолчанию

Спасибо, вроде стало понятно.
Damyen вне форума Ответить с цитированием
Старый 12.03.2023, 20:53   #43
Damyen
Пользователь
 
Регистрация: 14.03.2022
Сообщений: 32
По умолчанию

А как напечатать двумерный массив матрицей? Почему у меня печатается в одну строку?
Изображения
Тип файла: jpg Вопрос5.jpg (66.4 Кб, 0 просмотров)
Damyen вне форума Ответить с цитированием
Старый 12.03.2023, 21:03   #44
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Добавить во внешний цикл "cout << endl;" после печати строки.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 03.04.2023, 13:15   #45
Damyen
Пользователь
 
Регистрация: 14.03.2022
Сообщений: 32
По умолчанию

Добрый день. Вот в книге написан пример...Почему в начале программы функция "get_a_string" имеет один набор аргументов, а непосредственно в самой программе - другой набор аргументов, с другими названиями? Хотя этот код компилируется и программа работает вроде как правильно. Но разве компилятор не должен ругаться на разные имена аргументов?
Изображения
Тип файла: jpg Вопрос6.jpg (115.5 Кб, 7 просмотров)
Damyen вне форума Ответить с цитированием
Старый 03.04.2023, 13:30   #46
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Не должен. Имена аргументов в прототипе функции вообще можно опустить. Там главное указать типы и количество аргументов. Эта строка (прототип, в начале) нужна только для того, чтобы компилятор не ругался на неправильный порядок следования функций. Все функции до их использования должны быть объявлены. Но если код не может быть размещён заранее, тогда пишется прототип.
macomics вне форума Ответить с цитированием
Старый 04.04.2023, 06:56   #47
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

Damyen, если есть возможность, определение функции нужно размещать до её вызова, тогда не придётся засорять код лишними объявлениями
Алексей1153 вне форума Ответить с цитированием
Старый 04.04.2023, 20:48   #48
Damyen
Пользователь
 
Регистрация: 14.03.2022
Сообщений: 32
По умолчанию

А в данной программе, начальным адресом, с которого читаются символы во входной строке, является "buffer" ?
Damyen вне форума Ответить с цитированием
Старый 04.04.2023, 21:33   #49
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

На входе при первой итерации цикла в main значение pos = 0, тогда функция get_a_string начнет обращаться к buffer[0] - значит считывание будет с начала буфера.
macomics вне форума Ответить с цитированием
Старый 10.06.2023, 22:45   #50
Damyen
Пользователь
 
Регистрация: 14.03.2022
Сообщений: 32
По умолчанию

Подскажите, а указатели в С++ подразделяются на виды? Вот, в книге встретил предложение "Вот обращение к прямому указателю...". Получается есть еще "непрямые указатели" ? Или прямой указатель - это обычный указатель?
Damyen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы по C и C++ jonikster Общие вопросы C/C++ 25 17.11.2017 09:10
Вопросы Ilai Помощь студентам 5 29.10.2014 21:35
Вопросы по БД Rost93 PHP 9 28.06.2011 22:18
Вопросы по С++ Fantazerishka Общие вопросы C/C++ 2 19.05.2010 06:52