Форум программистов, компьютерный форум CyberForum.ru

Удаление пробелов - C++

Восстановить пароль Регистрация
 
Elize
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 31
28.12.2013, 15:46     Удаление пробелов #1
Помогите пожалуйста доделать программу(удаление пробелов в начале и в конце строки).
Само задание:Удаление лишних пробелов в строке (пробелы в начале и в конце строки, а также любые не единичные пробелы между словами).
Любые не единичные пробелы между словами программа удаляет,
осталось реализовать удаление пробелов в начале и в конце строки.
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
#include <string.h>
#include <conio.h>
#include <iostream>
#include<iostream>
#include<math.h>
using namespace std;
 
#pragma argsused
extern void deletes(char *s, int pos);
 void deletes(char *s, int pos)
{ int i;
if ((s[pos]== ' ') && (s[pos+1]== ' '))
{ deletes(s,pos+1); }
for (i = pos; i < strlen(s)-1; i++)
 {
  s[i]=s[i+1];
}
s[i]=0;
 
}
int main(int argc, char* argv[])
{
char s[150];
int i;
gets(s);
for (i = 0; i < strlen(s); i++)
 {  if ((s[i]==' ') && (s[i+1]==' '))
    deletes(s,i+1);
}
 cout <<s;
 getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2013, 15:46     Удаление пробелов
Посмотрите здесь:

C++ Удаление лишних пробелов
C++ Удаление начальных пробелов на С
Удаление пробелов из строки C++
удаление двойных пробелов в с++ C++
Удаление пробелов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
28.12.2013, 15:58     Удаление пробелов #2
добавьте
C++
1
2
3
4
if (s[0]==' ')
    deletes(s,0);
if (s[strlen(s)-1]==' ')
    deletes(s,strlen(s)-1);
uhx
 Аватар для uhx
56 / 56 / 6
Регистрация: 11.07.2013
Сообщений: 300
28.12.2013, 16:17     Удаление пробелов #3
Вообще все можно заменить на:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
using namespace std;
 
int main(){
    setlocale(0,"");
    string str = "  Это просто текст   для        cyberforum.ru        .";
    size_t fnd = str.find("  ");
    while(fnd != string::npos){
        if(str.find(" ")<=1) str.replace(str.find(" "),1,"");
        else str.replace(fnd, 2, " ");
        fnd = str.find("  ");
    }
    cout<<str;
    system("pause>>void");
}
Только в конце один пробел остается
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
28.12.2013, 16:34     Удаление пробелов #4
Используйте istringstream
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <sstream>
#include <string>
 
int main()
{
    const std::string str = "   Eniki   beniki   eli vareniki    ";
    std::istringstream ist(str);
    for (std::string word; ist >> word; std::cout << word << " ");
}
alexTortex
0 / 0 / 2
Регистрация: 30.10.2013
Сообщений: 8
28.12.2013, 16:35     Удаление пробелов #5
C
1
2
3
4
5
6
7
8
char * temp = str;
    while(*temp == ' ') temp++;
    strcpy(str, temp);
    int S = strlen(temp);
    str[S + 1] = '\0';
 
    while(str[--S] == ' ');
    str[S + 1] = '\0';
Вставьте код в начало функции
Elize
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 31
28.12.2013, 19:01  [ТС]     Удаление пробелов #6
zss, Спасибо, все теперь работает как надо
Elize
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 31
29.12.2013, 19:31  [ТС]     Удаление пробелов #7
Подскажите пожалуйста, при создании dll какую функцию по этому коду прописывать в .h???
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
#include <string.h>
#include <conio.h>
#include <iostream>
#include<iostream>
#include<math.h>
using namespace std;
 
#pragma argsused
extern void deletes(char *s, int pos);
 void deletes(char *s, int pos)
{ int i;
if ((s[pos]== ' ') && (s[pos+1]== ' '))
{ deletes(s,pos+1); }
for (i = pos; i < strlen(s)-1; i++)
 {
  s[i]=s[i+1];
}
s[i]=0;
 if (s[0]==' ')
deletes(s,0);
if (s[strlen(s)-1]==' ')
deletes(s,strlen(s)-1);
}
int main(int argc, char* argv[])
{
char s[150];
int i;
gets(s);
for (i = 0; i < strlen(s); i++)
 {  if ((s[i]==' ') && (s[i+1]==' '))
    deletes(s,i+1);
}
 cout <<s;
 getch();
}
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
29.12.2013, 21:04     Удаление пробелов #8
Цитата Сообщение от Elize Посмотреть сообщение
какую функцию по этому коду прописывать в .h???
.h тут ни при чем. Нужно создать Win32 проект, а в процессе создания
(3-я стр: параметры проекта) указать, что создается dll
Соответственно int main() не нужна будет.
Elize
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 31
29.12.2013, 21:17  [ТС]     Удаление пробелов #9
zss, Мне нужно создать dll, что бы потом в ib expert ее подключить и вывести решение. В script Executive создается, а в sql editor выводит ошибку, что "переполнение в процессе преобразования данных. ошибка преобразования из строки " jvghvk jhgh kjbk"."
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
29.12.2013, 21:26     Удаление пробелов #10
Цитата Сообщение от Elize Посмотреть сообщение
В script Executive создается, а в sql editor выводит ошибку
Я пользуюсь MS Visual Studio 2008
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2013, 22:32     Удаление пробелов
Еще ссылки по теме:

C++ Удаление лишних пробелов
удаление пробелов C++
C++ Создание программы со своей библиотекой ( удаление элементов с N по M в строке и удаление лишних пробелов(если 2 и более оставить один))

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

Или воспользуйтесь поиском по форуму:
Elize
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 31
29.12.2013, 22:32  [ТС]     Удаление пробелов #11
Создала dll
http://zalil.ru/34876267
В ib expert, в script executive вставила следующее:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
/*Регистрация UDF*/
{$ifexists udf deletes}
DROP external FUNCTION deletes;
commit;
{$endif}
 
DECLARE external FUNCTION deletes
DOUBLE PRECISION, DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
entry_point 'deletes'
module_name 'qwerty';
commit;
в sql editor:
SQL
1
SELECT deletes('abc fhfhffh fhfd',1) FROM rdb$database
В чем ошибка?помогите пожалуйста исправить
Yandex
Объявления
29.12.2013, 22:32     Удаление пробелов
Ответ Создать тему
Опции темы

Текущее время: 00:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru