Вот задача:
Составить программу, которая на входе должна получать последовательность цифр, после чего программа показывает цифру, порядковый номер которой ввел пользователь.
И вот мой код:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
char string[100];
cout << "Введите последовательность цифр: ";
cin >> string;
int k;
cout << "\nВведите порядковый номер цифры: ";
cin >> k;
if ((k - 1) < 0 || k > strlen(string))
cout << "\nНекорректный ввод порядкового номера" << endl << endl;
else
cout << "\nk-я цифра последовательности: " << string[k] << endl;
return 0;
}
Однако он не работает. Где же ошибка?
Пожалуй, напишу еще один ответ. Так как данный вопрос помечен как относящийся к С++, то было бы лучше заменить массив char'а строкой string.
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
string string;
cout << "Введите последовательность цифр: ";
getline (cin, string);
int k;
cout << "nВведите порядковый номер цифры: ";
cin >> k;
if ((k - 1) < 0 || k > string.length())
cout << "nНекорректный ввод порядкового номера" << endl << endl;
else
cout << "nk-я цифра последовательности: " << string[k - 1] << endl;
return 0;
}
Важно! Результат выполнения кода почти не изменится, только увеличится максимальная длина последовательности! Если нужно его поставить, проинициализируйте переменную string должным образом.
Ошибка в строке:
cout << "\nk-я цифра последовательности: " << string[k] << endl;
А надо:
cout << "\nk-я цифра последовательности: " << string[k - 1] << endl;
Дело в том, что в массивах счет индексов начинается с нуля. Попробуйте, должно заработать. Хотя странно, что ошибка именно в этом месте.
Ошибка здесь:
cout << "nk-я цифра последовательности: " << string[k] << endl;
Индекс измените на [k - 1]
.
поменяйте способ ввода
for (size_t i = 0; i < strlen(string); ++i)
std::cin >> string[i];
я думаю вы вводили цифры и где то ввели пробел, потому и не работал код, а лучше вводить в std::string
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Для разминки в с++ пишу небольшую ООП надстройку над WinApi, для того чтобы можно было парой строчек кода создавать окна и проводить необходимые...
Подскажите, как сделать синхронизацию процессов? Через fork создаю 2 дочерних процесса, и мне нужно читать файл, чтобы каждый процесс читал...
Мне нужно написать шаблон, который меняет местами диагонали матрицыПри компиляции выдает ошибку и не знаю как исправить
Сравнил попарно все изображения - получается матрица чисел (для удобства сжаты до 0-254) N x N, как теперь упорядочить чтобы похожие были рядом...