Всем привет. Есть такая задача : В Входном файле дается никнейм, нам надо, чтобы в таблице сортировки по имени этот ник стоял как можно ниже, притом удалить можно только один символ. Мой код:
ifstream in("input.txt");
ofstream out("output.txt");
string str;
char ch[str.size()],temp;
in >> str;
strcpy(ch, str.c_str());
temp=ch[0];
for(int i=0;i<str.size();i++){
if(ch[i] > temp){
delete ch[i];
break;
}
else temp=ch[i];
}
string str2=ch;
out << str2;
Мы смотрим, если второй символ ниже в алфавите первого, мы первый удаляем Компилятор указывает на одну единственную ошибку - delete ch[i]; Eroor:type 'char' argument given to 'delete', expected pointer Как быть?
delete
не из той оперы...
Ваше delete ch[i];
следует развернуть в
for(int j = i+1; ch[j-1] = ch[j]; ++j);
Или воспользоваться memmove()
.
Слушайте, а что вы сдесь вообще делаете? Вот у вас есть некая переменная str, которая, как можно заключить из метода c_str() имеет тип std::string. Так зачем вы используете массив char? Не поймите меня неверно, я люблю Си, но вот зачем использовать функции из cstring в перемешку с классом string? Тем более что вы это делаете не верно. И раз уж у вас вопрос с меткой с++, то порекомендую сделать все через string (и правильно). Как то так:
ifstream in("input.txt");
ofstream out("output.txt");
std::string str;
// сдесь вы вообще брали у str size, который равен 0 на данный момент
in >> str;
// две строки сдесь вообще не нужны - у вас дублирование данных
// далее вы в вопросе указали что нужно удалить первый символ, если он меньше второго, но почему то обходите всю строку, вместо того, чтобы сделать так:
if (str[0] < str[1])
str.erase(str.begin());
else
str.erase(1);
out << str;
Обратите внимание, что не только код сократился, но и количество переменных тоже сократилось. Ровно до одной.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Нужно сделать простейший калькулятор чтобы он работал с числовыми и строковыми значениямиОперации + - * /
Задача у меня была вот в чём: Создайте программу, имитирующую многоквартирный домНеобходимо иметь классы “Человек”, “Квартира”, “Дом”
По завершению работы функции выдает ошибку
Решал задачу, суть которой было найти максимальное количество повторенийПосле решения задачи посмотрел предложенный вариант её решения