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

Удалить двойные пробелы и определить длину новой строки - C++

Восстановить пароль Регистрация
 
qwerty2011
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 9
09.12.2011, 11:22     Удалить двойные пробелы и определить длину новой строки #1
Условие:
Написать программу, которая бы в произвольной строке (не более 80 символов) удаляла двойные пробелы и определяла длину новой строки.

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
#include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{
 int i,j;
 char *st; /*Znacheniem stroki yavlyaetsya adres ee pervogo elementa,
            sledovatelno, stroka v Ci – eto ukazatel na pervyi simvol stroki.
            Poetomu pri zadanii stroki mozhno takzhe primenyat sposob
            opisaniya c ispolzovaniem ukazatelya*/
 clrscr();
 
 printf("vvod stroki \n");
 gets(st);
 
 for(i=0;i<=strlen(st);i++) /*Dlya kazhdogo i poka i menshe dlinny stroki st pribavlyat po 1*/
                            /*probezhat po vsyei stroke*/
 if((st[i]==' ') && (st[i+1]==' ') && (st[i+2]==' ') ) /*yesli tekushchiД* element i sleduyushchii
                                                        za nim probel*/
  { /*togda*/
    for(j=i;j<=strlen(st);j++) /*probegaem po stroke i*/
    st[j]=st[j+3]; /*smeshchaem simvoly stroki na 2 nazad*/
    i=i-3; /*tak kak my smestili vsyu stroku nazad to i kursor tsikla smeshchaem*/
    }
 
 printf("\n");
 puts(st);
 printf("dlina = %d",strlen(st));
 
 getch();
}

прога как бы правильная, но мне нужно чтобы рядом стоящие двойные пробелы были удалены
Например: asd----jhk---qwe (- допустим это пробел)
И должно получиться: asdjhk-qwe
а в этой проге получается наоборот: asd-jhkqwe
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2011, 11:22     Удалить двойные пробелы и определить длину новой строки
Посмотрите здесь:

Функция доводит длину строки до заданной, вставляя пробелы между словами C++
удалить пробелы из строки C++
В произвольной строке удалить двойные пробелы и определить длину новой строки C++
C++ Функция доводит длину строки до заданной, вставляя пробелы между словами
Дана строка. Удалить из строки все двойные символы. Пример: “asddewwf” → “asdewf” C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MBazarov
5 / 3 / 1
Регистрация: 08.12.2011
Сообщений: 15
09.12.2011, 11:24     Удалить двойные пробелы и определить длину новой строки #2
http://www.cyberforum.ru/cpp-beginne...ead402117.html - уже было
qwerty2011
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 9
09.12.2011, 11:30  [ТС]     Удалить двойные пробелы и определить длину новой строки #3
Цитата Сообщение от MBazarov Посмотреть сообщение
аа, сорри не заметил ответа там

Добавлено через 3 минуты
неа
мне нужно чтобы остался один пробел
а не 2
т.е. вот так должно получиться

Например: asd----jhk---qwe (- допустим это пробел)
И должно получиться: asdjhk-qwe
MBazarov
5 / 3 / 1
Регистрация: 08.12.2011
Сообщений: 15
09.12.2011, 11:54     Удалить двойные пробелы и определить длину новой строки #4
удаление двойных пробелов даст вам asd--jhk--qwe, это по постановке задачи
там в задаче я вам описал цикл правильный, вам лишь нужно инициировать строку и правильно заполнить. если надо удалить все пробелы и оставить 1 то прогоните еще раз, или в цикле...
Yandex
Объявления
09.12.2011, 11:54     Удалить двойные пробелы и определить длину новой строки
Ответ Создать тему
Опции темы

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