


Прошу помогите сижу с этой гребаной задачкой 3 день С++ динамическое массивы
Есть библиотека в которой 2 функции 1 возвращает из строки "p" некое количество букв по порядку слева на право, а вот со второй проблема, по заданию сказано вернуть исходную строку "p" без пробелов, т. е если у меня исходная строчка имеет пробел то его программа должна игнорировать. Вообщем нужно помочь написать в функции fo счетчик который будет возвращать исходную строку без пробелов
#ifndef _file_H_
#define _file_H_
char* foo(const char* p, int n)
{
char* s = new char[n];
s[n] = 0;
while (n--) s[n] = p[n];
return s;
}
const char* fo(const char* p)
{
return p;
}
#endif // !_file_H_
Это мэйн
int main()
{
const char* string = "sdfsdfsd";
int n;
cout << "vvedite kolichestvo simvolov: ";
cin >> n;
if (n <= 0)
{
cout << "vvedite znachenie zanogo: ";
cin >> n;
}
cout << fo(string) << "\n" << foo(string, n);
}
Если нужно именно через char*, то, например, так:
char* trm(const char* p) {
int n = 1;
while (*p) { if (*p++ != ' ') { ++n; } }
char *s = n + new char[n];
while (n--) {
while (*p == ' ') { --p; }
*--s = *p--;
}
return s;
}
Отвлекись от задачи и решение найдётся,))
Только полюбив свое дело, ты во всем разберёшься
#include iostream // подключаем библиотеку ввода и вывода
#include string // библиотека для работы со строками
using namespace std ; // используем именное пространство std
int main()
{
setlocale(LC_ALL, "Russian"); // включаем русский язык
string str;
cout << "Введите строку" << endl;
getline(cin, str);
for(int i = 0; i < str.length(); i++) {
if(str[i] == ' ') {
str.erase(i,1);
i--;
}
cout << str << endl;
system("PAUSE"); // чтобы программа не закрывалась
return 0 ; // возвращаем функции main() ноль
}