Указатели помогите пожалуйста
Главная проблема-линия 45:
#include <iostream> #include <cstring> using namespace std; int SpacesRemoval(char* Str); int main() { char Str[100]; cout << "Enter a sentence and I will strip out all of the spaces. " << endl; cin.getline(Str, 99); cout << "Your sentence without spaces in it is: " << endl; cout << "I removed " << SpacesRemoval(Str) << " spaces from the sentence." << endl; return 0; } int SpacesRemoval(char* Str) { char* removal = Str; char* temp = Str; int len = strlen(Str); int count = 0; char *p; p = Str; while (*p) { switch (toupper(*p++)) { case ' ': count++; } } while (*removal) { if (*removal != ' ') *temp++ = *removal; removal++; } *temp = 0; cout << Str << endl; // I am not supposed to use 'cout' in this function but I am confused in how to eliminate it, as the program doesn't work if I just remove it. return count; }
Что я уже пробовал:
Я пытался найти способ с тех пор, как прошло около 3-4 часов, но все напрасно. Вот почему я решил спросить об этом в интернете. Спасибо
PIEBALDconsult
Ну, я должен предположить, что это домашнее задание, так что, может быть, вы должны показать нам задание, чтобы мы хотя бы могли увидеть, где вы заблудились.
(На самом деле мы, конечно, не будем делать вашу домашнюю работу, но вы довольно близки.
Просто отобразите исправленную строку после вызова SpacesRemoval(Str)
0) Почему вы используете toupper?
1) Вам не нужно использовать strlen.
2) вам не нужны две петли; одной будет достаточно.
Member 12771931
Ну, вопрос в домашней работе заключается в том, что я должен написать программу, использующую только одну функцию, кроме основной, и попросить пользователя написать предложение, а затем программа удалит все пробелы из предложения и напечатает предложение без каких-либо пробелов, а также сообщит пользователю, сколько пробелов было удалено.
PIEBALDconsult
Ну, похоже, что вы в значительной степени там, вам просто нужно отобразить алетерную строку.
Member 12771931
Вот где я застрял, я пытался сделать это с самого утра, и теперь мой мозг полностью поджарился. Не могли бы вы мне помочь?
PIEBALDconsult
В основном, после вызова SpacesRemoval (Str) , дисплей Str.
Member 12771931
Он все еще остается прежним, если я не добавлю cout << Str << endl; в строке 45, программа при запуске не отображает предложение без пробелов. Он просто выводит количество удаленных пробелов.
PIEBALDconsult
Двигаться, что основным, после вызова SpacesRemoval(ул.)
Member 12771931
Спасибо, извините, что беспокою вас снова и снова, но теперь я должен переключить шаблон, например, предложение без пробелов должно быть сначала выведено, а затем удалено количество пробелов.
Jochen Arndt
Просто назначьте возвращаемое значение переменной:
инт удален = SpacesRemoval(ул.);
Затем распечатайте результаты, используя removed и Str по запросу.
Member 12771931
Спасибо вам всем за помощь. Я очень ценю это, спасибо.