Я здесь новичок и очень плохо знаком с программированием, и за все время, что я потратил на изучение интернета и этого сайта, я не могу найти ответ на этот мой вопрос.Мне нужно случайным образом выбрать один элемент из списка символов и распечатать его, а затем повторить это количество раз, введенное пользователем.Я пытаюсь создать текстовый генератор для практики набора текста с использованием отдельных клавиш, а не слов.(Да, я знаю, что я очень опоздал на вечеринку «печатать правильно», но мои набеги на кодирование заставили меня понять, что это был более полезный навык, чем я думал.)
До сих пор я в основном нашел ответы, которые используютитератор для печати всех элементов списка подряд, а это не то, что мне нужно.Я также постоянно сталкиваюсь с людьми, которые говорят, что используют вектор вместо списка, но моя книга по С ++, из которой я начал учиться, не затрагивает слишком «продвинутых» вещей, поэтому я застрял там.Хотя использование списка кажется хорошей идеей для меня, но это может быть только мой разговор с новичком.Массив был бы слишком жестким для того, что я хочу выполнить, потому что если бы пользователь мог ввести ключи, которые он хочет в более поздней версии этой программы, а не просто кодировать их, как я сделал для первой попытки, это было бы болееидеально.Но, в любом случае, моя программа теперь выглядит так:
// Version 1
// Text Generator for Typing Practice with Individual Keys:
// For inputting into typing practice programs/sites with "insert your text" fields.
// Generates a random list of letters from a list of known keys,
// that only displays up to a user-entered amount of characters,
// separated into paragraphs.
#include <iostream>
#include <cstdlib>
#include <list>
#include <ctime>
using namespace std;
int main () {
//Declare variables used below
int x = 0;
int list_size = 0;
int p = 0;
// Add new letters to the list below as you learn them!
list <char> Keys_Known = {' ', ' ', ' ', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', 'e', 'r', 'u', 'i'};
// Define function(s) used below
char get_Text(); {
for (int i = 0; i <= x; ++i) { // For x amount of times
p = srand(time(nullptr)) % list_size;
// Randomly choose a character from the list by its index,
// limited to the total number of elements in the list,
cout << Keys_Known[p];
// and finally output the letter value of the index.
}
}
// Get and set list_size here
list_size = Keys_Known.size();
cout << "Enter total number of characters wanted: " << endl;
cin >> x;
// Set x to the total number of characters wanted in your practice text.
// Maybe about 100 is good? ((Try with 10 for testing!))
cout << get_Text() << "/n" << get_Text() << "/n";
// Print two blocks of random text separated into paragraphs.
return 0;
}
Я продолжаю получать сообщения об ошибках типов int p и int list_size, не работающих с%, как обычно я ограничиваю диапазон случайных чисел.Eclipse также говорит мне, что я ничего не могу сказать «Keys_Known []», потому что он понятия не имеет, что [] должно означать.Я даже попытался поставить 0 там, но он все еще действует, как будто я не могу использовать индексы.Я пропускаю заголовок "#include"?Точные ошибки, которые я получаю:
"недопустимые операнды типов 'void' и 'int' в двоичном операторе% 'строка 29 C / C ++ Проблема"
и:
"нет соответствия для оператора [] '(типы операндов:' std :: __ cxx11 :: list 'и' int ') строка 33 C / C ++ Проблема "
Любая помощь приветствуется, спасибо!