Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/35: Рейтинг темы: голосов - 35, средняя оценка - 4.54
-22 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 90
1

Функция, которая удаляет начальные и конечные пробелы из строки

23.04.2014, 21:43. Показов 6455. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать функцию, которая удаляет начальные и конечные пробелы из строки, полученной в качестве аргумента

Добавлено через 1 час 33 минуты
Поможет кто с задачей, буду очень благодарен.
 Комментарий модератора 
Дублирование тем строго запрещено правилами форума.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2014, 21:43
Ответы с готовыми решениями:

Функция которая удаляет начальные и конечные пробелы из строки, полученной в качестве аргумента
Нужен код без использования strlen

Функция alltrim удаляет из строки начальные и конечные пробелы и возвращает указатель на преобразованную строку
Дали задание в ВУЗе. Назначение программы: Функция alltrim удаляет из строки начальные и конечные...

Функция удаляет начальные пробелы из строки...
Написать функцию которая удаляет начальные пробелы из строки, полученной в качестве аргумента.. В...

Программа, которая удаляет из введенной с клавиатуры строки начальные пробелы
программу, которая удаляет из введенной с кла¬виатуры строки начальные пробелы.

27
6 / 6 / 5
Регистрация: 10.08.2012
Сообщений: 82
23.04.2014, 21:52 2
какой тип у строки?

string
или
char[];

?
0
-22 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 90
23.04.2014, 22:00  [ТС] 3
string
0
Эксперт по математике/физикеЭксперт С++
2048 / 1366 / 395
Регистрация: 16.05.2013
Сообщений: 3,506
Записей в блоге: 6
24.04.2014, 11:57 4
Пользуйтесь:
C++
1
2
3
4
5
6
    void func(std::string& str) {
        std::string::size_type idx_low   = str.find_first_not_of(" ");
        std::string::size_type idx_higth = str.find_last_not_of(" ");
 
        str = str.substr(idx_low, idx_higth - idx_low);
    }
2
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.04.2014, 12:30 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
#include <boost/algorithm/string/trim.hpp>
 
int main()
{
   std::string str = "   Hello world    ";
   boost::algorithm::trim(str);
   std::cout << str;
 
   return 0;
}
0
6 / 6 / 5
Регистрация: 10.08.2012
Сообщений: 82
24.04.2014, 23:26 6
при получении аргумента string через стандартный ввод cin, пробелы не считываются.
C++
1
2
cin >> s;
//ввод "          stuff           "
s = "stuff"

собственно, зачем тебе такая программа?
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
25.04.2014, 00:07 7
Цитата Сообщение от Anonim107 Посмотреть сообщение
string
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <algorithm>
 
 
bool notSpace ( char x )
{
   return !isspace(x) ;
}
 
int main ( ) {
   std::string str ;
   std::getline ( std::cin , str ) ;
   str.erase ( str.begin() , std::find_if ( str.begin() , str.end() , notSpace ) ) ;
   str.erase ( std::find_if ( str.rbegin() , str.rend() , notSpace ).base() , str.end() ) ;
   std::cout << "\nnew string->" << str <<std::endl ;
}
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
13.05.2014, 03:16 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <cstring>
 
using namespace std;
void trim(char* arr)
{
    int size = strlen(arr);
 
    int counter = 0;
    for(int i=size-1;i>1;i--)
    {
        counter++;
        if(*(arr+i) != ' ')
        {
            *(arr+i+1) = '\0';
            break;
        }
    }
    int counter_2 = 0;
    for(int i=0; i<size-counter;i++)
    {
        
        if(*(arr+i) != ' ')
        {
            if(counter_2 > 0)
            {
                for(int i=0;i<size-counter;i++)
                {
                    *(arr+i) = *(arr+i+counter_2);
                }
            *(arr+size-counter-counter_2+1) = '\0';
            
            
            }
            break;
        }
        counter_2++;
    }
    
}
void main ()
{
    char* text = new char[255];
    strcpy(text, "       Privet kak dela                    ");
    trim(text);
    cout << text;
}
1
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
13.05.2014, 03:26 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
 
void func(std::string str)
{
    int i = 0;
    while(str[i] == ' ')
        i++;
        
    str.replace(0, i, "");
    i = str.size();
    
    while(str[i] == ' ')
        i--;
        
    str.replace(i, str.size() - 1, "");
    std::cout << str << std::endl;
}
 
int main()
{
    std::string str;
    std::cout << "Type text: ";
    getline(std::cin, str);
    func(str);
    
    system("pause");
    return 0;
}
1
-22 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 90
13.05.2014, 03:27  [ТС] 10
Спасибо вам, очень благодарен
0
Эксперт по математике/физикеЭксперт С++
2048 / 1366 / 395
Регистрация: 16.05.2013
Сообщений: 3,506
Записей в блоге: 6
13.05.2014, 08:47 11
Где-то это уже было https://www.cyberforum.ru/post6081601.html
0
0 / 0 / 4
Регистрация: 17.05.2014
Сообщений: 19
18.05.2014, 17:52 12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include "iostream"
using namespace std;
 
void ydalenie(static char str[])
{ int i, d=0, k;
    for(i=0; str[i]==' ';  i++){} // определяем количество пробелов впереди
        for(k=0; k<strlen(str); k++) // сдвигаем все элементы массива влево на i(количество пробелов впереди)
            str[k]=str[k+i];
    for(k=strlen(str); str[k]==' '; k--, d++){} // определяем количество пробелов в конце(d)
        for(k=0; k<strlen(str)-d-i; k++)     // выводим нужнуе нам элементы, без пробелов
            printf("%c", str[k]);  
}
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    char str[10] = {" "" ""d""s""a""r""e"" "" "}; // создаём строку, которую нужно отредактировать
    ydalenie(str);
    printf("\n");
    return 0;
}
Если я правильно понял задание, то вот его решение
0
-22 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 90
18.05.2014, 18:27  [ТС] 13
Спасибо за отзыв, но программа не запускается, я не могу в консоли ничего писать.
0
0 / 0 / 4
Регистрация: 17.05.2014
Сообщений: 19
18.05.2014, 19:03 14
На что именно ругается?
В моей программе строка уже введена в 19 строке кода
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
18.05.2014, 19:17 15
Конфликт в IDE скорее всего. Уберите #include "stdafx.h"
и вместо int _tmain(int argc, _TCHAR* argv[]) используйте main() без аргументов.
Если исчезает консоль getch(); из #include <conio.h> или system("pause");
1
-22 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 90
18.05.2014, 21:04  [ТС] 16
Предупреждение 1 warning C4042: str: имеет недопустимый класс хранения c:\users\nikita\documents\visual studio 2013\projects\consoleapplication39\consoleapplication39\consoleapplication39.cpp 9 1 ConsoleApplication39


Предупреждение 2 warning C4018: <: несоответствие типов со знаком и без знака c:\users\nikita\documents\visual studio 2013\projects\consoleapplication39\consoleapplication39\consoleapplication39.cpp 13 1 ConsoleApplication39


Предупреждение 3 warning C4018: <: несоответствие типов со знаком и без знака c:\users\nikita\documents\visual studio 2013\projects\consoleapplication39\consoleapplication39\consoleapplication39.cpp 16 1 ConsoleApplication39


Ошибка 4 error C2084: функция "int wmain(int,_TCHAR *[])" уже имеет текст реализации c:\users\nikita\documents\visual studio 2013\projects\consoleapplication39\consoleapplication39\consoleapplication39.cpp 31 1 ConsoleApplication39


Вот на это ругается в вашей программе, исправьте пожалуйста=)

Добавлено через 1 час 8 минут
Может кто помочь с программой
0
0 / 0 / 4
Регистрация: 17.05.2014
Сообщений: 19
18.05.2014, 22:04 17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "iostream"
using namespace std;
 
void ydalenie(static char str[])
{ int i, d=0, k;
    for(i=0; str[i]==' ';  i++){} // определяем количество пробелов впереди
        for(k=0; k<10-i; k++) // сдвигаем все элементы массива влево на i(количество пробелов впереди)
            str[k]=str[k+i];
    for(k=9-i; str[k]==' '; k--, d++){} // определяем количество пробелов в конце(d)
        for(k=0; k<10-d-i; k++)     // выводим нужные нам элементы, без пробелов
            printf("%c", str[k]);
        printf("*"); // *конец строки
}
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    char str[10];// создаём строку, которую нужно отредактировать
    printf("Введите строку из 10 элементов, считая пробелы:\n");
    scanf("%10c", &str);    
    ydalenie(str);
    printf("\n");
    return 0;
}
вот рабочий код, в который нужно вводить строку из 10 элементов и на выходе получаем строку без пробелов в начала и конце

Добавлено через 3 минуты
Цитата Сообщение от GuGo1991 Посмотреть сообщение
Если исчезает консоль getch(); из #include <conio.h> или system("pause");
так делать не стоит, если запустить программу Ctrl+F5, программа отработает и не закроется, в если она закрывается значит вы просто запускаете отладку программы вместо её выполнения
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
18.05.2014, 22:10 18
kompromiss, смотря где. Я не работаю в VS.
0
-22 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 90
18.05.2014, 22:14  [ТС] 19
Предупреждение 1 warning C4042: str: имеет недопустимый класс хранения c:\users\nikita\documents\visual studio 2013\projects\consoleapplication46\consoleapplication46\consoleapplication46.cpp 8 1 ConsoleApplication46




Ошибка 2 error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\users\nikita\documents\visual studio 2013\projects\consoleapplication46\consoleapplication46\consoleapplication46.cpp 27 1 ConsoleApplication46



Ошибка 3 error C2084: функция "int wmain(int,_TCHAR *[])" уже имеет текст реализации c:\users\nikita\documents\visual studio 2013\projects\consoleapplication46\consoleapplication46\consoleapplication46.cpp 35 1 ConsoleApplication46

kompromiss я программу запустил и мне выдает ошибки, помогите справить.
0
0 / 0 / 4
Регистрация: 17.05.2014
Сообщений: 19
18.05.2014, 22:22 20
Цитата Сообщение от Anonim107 Посмотреть сообщение
"int wmain(int,_TCHAR *[])"
Такой функции вообще в моём коде нету
пробуйте заменить
C++
1
int _tmain(int argc, _TCHAR* argv[])
на
C++
1
int main()
и в заголовке дописать
C++
1
#include "stdafx.h"
если не сработает то ставьте 2010 студию, тут таких ошибок не возникает
0
18.05.2014, 22:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2014, 22:22
Помогаю со студенческими работами здесь

Написать программу, которая удаляет из введенной с клавиатуры строки конечные пробелы
Пожалуйста помогите... Написать программу, которая удаляет из введенной с клавиатуры строки...

Написать программу, которая удаляет конечные пробелы из введенной с клавиатуры строки
Написать программу, которая удаляет конечные пробелы из введенной с клавиатуры строки.

Написать программу, которая удаляет из введенной с клавиатуры строки начальные пробелы.
Написать программу, которая удаляет из введенной с клавиатуры строки начальные пробелы.

Написать программу, которая удаляет из введенного с клавиатуры строки начальные пробелы
Написать программу, которая удаляет из введенного с клавиатуры строки начальные пробелы.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru