2016-04-19 7 views
2

Итак, проблема заключается в том, что у меня есть массив, содержащий 27 символов, и мне нужно написать функцию для отображения определенного символа 0-25 на основе пользовательского ввода.Извлечение переменной из массива

Массив является постоянной строкой:

const string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

А идея состоит в том, что пользователь вводит значение в диапазоне от 1 до 25 (INT значения), которое затем отображает букву коспонсоров в массиве. Я делаю это с помощью:

cout << ALPHABET[value]; 

Мои вопросы является ли это appropreate способ создания массива и я смог получить значение из массива таким образом.

const string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

int main() 
{ 
    int value; //Variable defining user entered value 
    cout << "Please enter a number between 0-25." << endl; 
    cin >> value; 
    if (value > 25) //If statement to display "-1" if number entered is past "Z" 
     cout << "-1" << endl; 
    else 
     cout << ALPHABET[value]; 

    return 0; 
} 
+0

Предполагая, что 'string' вы имеете в виду' std :: string', вы на самом деле не создали массив. Вы создали объект, который позволяет получить доступ к массиву. –

+0

Шаг 1: Введите код. Шаг 2: Исправьте ошибки. Шаг 3. Задайте вопросы о переполнении стека для ошибок, которые вы не можете исправить. Кажется, вы на первом шаге, вернитесь, когда вы доберетесь до 3. – user657267

+0

Будет ли факт, что его объект будет проблемой? – Johnapples

ответ

1

Мои вопросы является ли это appropreate способ создания массива и я смог получить значение из массива таким образом.

Хотя это работает, чтобы использовать строку:

int main() 
{ 
    const string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

    int num = -1; 
    while (num < 0 || num > 25) { 
     cout << "Enter number (0 - 25): "; 
     cin >> num; 
    } 

    cout << ALPHABET[num] << '\n'; 
} 

Мне нравится использовать std::vector для содержащий последовательность элементов:

vector<char> ALPHABET(26); 
iota(begin(ALPHABET), end(ALPHABET), 'A'); 
+0

Я обновил свой код, чтобы добавить некоторую ясность. Я отношусь к входам и выходам. Он строит отлично без ошибок, он просто не делает то, что мне нужно. – Johnapples

+0

@Johnapples Я отредактировал свой ответ, чтобы использовать строку –

+0

. Какое возможное преимущество имеет «вектор» над «строкой» или нормальным массивом? Я могу только думать о недостатках. Посмотрите на длину определения для одного. Я знаю, что нам нравится рекомендовать 'vector' по умолчанию, но, конечно же, не для _everything_. –

0

Может быть, это то, что вы хотите сделать. Что включает в себя правильный способ создания массива.

#include <iostream> 

char ALPHABET[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '\0' }; 
//the \0 means the end of the array of characters a.k.a. a string 

int main() 
{ 
    int value; //Variable defining user entered value 
    std::cout << "Please enter a number between 0-25." << std::endl; 
    std::cin >> value; 

    if (value > 25 || value < 0) //If statement to display "-1" if number entered is past "Z" 
     std::cout << "-1" << std::endl; 
    else 
     std::cout << ALPHABET[value]; 

return 0; 
} 

(Есть несколько способов создать массив) Как «полукокс АЛФАВИТ [26] = { 'A', 'B', 'C', 'D', 'E', 'F' , 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', ' S ',' T ',' U ',' V ',' W ',' X ',' Y ',' Z ',' \ 0 '};

26 означает, что НЕ может быть больше 26 символов в этом массиве.

Если вы запутались во мне, не используя «using namespace std;», а вместо этого «std ::», если у вас есть два пространства имен с «cout» или «endl» в них программа не знаю, какой из них вы хотите использовать.

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

Смежные вопросы