Я написал этот код ниже для крошечной программы, которая получает строку (и помещает ее в массив) и число, а затем ищет через массив, чтобы найти, имеет ли он повторяющийся символ (и подсчитывает количество повторений), если так; программа будет сравнивать время повторения определенного символа и если количество повторений равно количеству, которое дал пользователь; программа заменит их символом «A». Например; если мы дадим программу «BBCC» и номер 2, она должна дать нам результаты «AAAA». Проблема в том, что мой код работает для некоторых примеров и не работает для приведенного выше примера. Вот код:Незначительная ошибка в моем коде на C++; Как это исправить?
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
char str[30];
int i, j, k, l, number, counter = 0;
char ch;
cout << "Enter a string: ";
gets (str);
cout << "\nEnter a number: ";
cin >> number;
for (i =0; str[i]; i++){
ch = str[i];
for (j = 0; str[j]; j++){
if (str[j] == ch){
counter++;
}
}
if (counter == number){
for (k = 0; str[k]; k++){
if (str[k] == ch){
str[k] = 'A';
}
}
}
}
for (l = 0; str[l]; l++){
cout << str[l];
}
getchar();
return 0;
}
Другая ошибка в том, что если мы дадим ему строку «ABC» и номер 2; результаты будут «AAC»! Я знаю, что мой код немного грязный, потому что я новичок, поэтому, пожалуйста, извинись и помогите мне исправить мою проблему. Спасибо.
Я не уверен, как этот вопрос когда-либо будет помогать будущим посетителям? :/ –
Никогда не используйте 'gets', вместо этого используйте' std :: string' и обычный оператор ввода '>>'. –
Что касается вашей проблемы, узнайте, как использовать отладчик, рядом с компилятором и редактором он должен быть наиболее распространенным инструментом в вашем наборе инструментов. Используя отладчик, вы можете проходить код за строкой, видя значения всех задействованных переменных, и это поможет вам увидеть, ведет ли код себя так, как вы ожидаете. –