0 / 0 / 0
Регистрация: 28.10.2011
Сообщений: 13
1

Удаление двойных пробелов

08.12.2011, 16:09. Показов 4044. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Условие:

Написать программу, которая бы в произвольной строке (не более 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
#include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{
int i,j;
char *st;
clrscr();
 
printf("vvod stroki \n");
gets(st);
 
for(i=0;i<=strlen(st);i++)
if((st[i]==' ') && (st[i+1]==' ') && (st[i+2]==' ') )
{for(j=i;j<=strlen(st);j++)
st[j]=st[j+3];
i=i-3;}
 
printf("\n");
puts(st);
printf("dlina = %d",strlen(st));
 
getch();
}
 Комментарий модератора 
Используйте теги форматирования кода!


написать что делает цикл подробно
спасибо заранее!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2011, 16:09
Ответы с готовыми решениями:

Удаление пробелов
Как удалить лишние пробелы в строке с помощью strtok_s, т.е чтобы удалились двойные, тройные и т.д...

Удаление лишних пробелов
Приветствую. Все с той же задачей, нужно написать функцию, которая удаляет лишние пробелы из...

Удаление всех пробелов из строки
Здравствуйте. Нужно удалить из большой строки все пробелы. // Убираем все пробелы в RgbTable for...

Удаление пробелов в конце строки
В общем написал программу которая удаляет пробелы в конце каждой строки, но при больших значениях...

7
5 / 3 / 0
Регистрация: 08.12.2011
Сообщений: 15
08.12.2011, 16:28 2
Код:

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
#include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{
int i,j;
char *st;
clrscr();
 
printf("vvod stroki \n");
gets(st);
 
for(i=0;i<=strlen(st);i++)  // Для каждого i пока i меньше длинны строки st прибавлять по 1
                                      // пробежать по всей строке
  if((st[i]==' ') && (st[i+1]==' ') && (st[i+2]==' ') ) // если текущий элемент и следующий за ним пробел
    { // тогда
      for(j=i;j<=strlen(st);j++) // пробегаем по строке и 
        st[j]=st[j+3];     // смещаем символы строки на 2 назад
      i=i-3;  // так как мы сместили всю строку назад то и курсор цикла смещаем 
    }
 
printf("\n");
puts(st);
printf("dlina = %d",strlen(st));
 
getch();
}
кстати код скорее всего не верный, в моем понимании удалить двойной пробел это заменить его на один пробел

Добавлено через 6 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for(i=0;i<=strlen(st);i++)  // Для каждого i пока i меньше длинны строки st прибавлять по 1
                                      // пробежать по всей строке
  if((st[i]==' ') && (st[i+1]==' ')) // если текущий элемент и следующий за ним пробел
    { // тогда
      for(j=i;j<=strlen(st);j++) // пробегаем по строке и 
        st[j]=st[j+1];     // смещаем символы строки на 1 назад
      i=i-1;  // так как мы сместили всю строку назад то и курсор цикла смещаем 
    }
 
printf("\n");
puts(st);
printf("dlina = %d",strlen(st));
 
getch();
}
вот так правильнее будет , тогда мы просто строку например "пример _ _ два _ пробела" превращаем в "пример _ два _ пробела"
0
0 / 0 / 0
Регистрация: 28.10.2011
Сообщений: 13
08.12.2011, 16:38  [ТС] 3
спасибо
0
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 9
09.12.2011, 11:31 4
мне нужно чтобы ответ получился таким

Например: asd----jhk---qwe (- допустим это пробел)
И должно получиться: asdjhk-qwe
0
5 / 3 / 0
Регистрация: 08.12.2011
Сообщений: 15
09.12.2011, 11:33 5
Цитата Сообщение от qwerty2011 Посмотреть сообщение
мне нужно чтобы ответ получился таким

Например: asd----jhk---qwe (- допустим это пробел)
И должно получиться: asdjhk-qwe
тот код что я привел не дает такого результатаа?
0
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 9
09.12.2011, 11:34 6
MBazarov, не дает
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
09.12.2011, 11:40 7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <string>
#include <sstream>
#include <iostream>
 
using namespace std;
 
int main()
{
   string line = "how       about  this case   ";
 
   stringstream ss(line);
   string word;
   string newline;
   
   while (ss >> word)
     newline += word + " ";
 
   cout << newline << '[' << newline.length() << ']' << std::endl;
}
0
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 9
09.12.2011, 11:45 8
Цитата Сообщение от fasked Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <string>
#include <sstream>
#include <iostream>
 
using namespace std;
 
int main()
{
   string line = "how       about  this case   ";
 
   stringstream ss(line);
   string word;
   string newline;
   
   while (ss >> word)
     newline += word + " ";
 
   cout << newline << '[' << newline.length() << ']' << std::endl;
}
не очень понимаю что здесь написано
у меня только пока начальное изучение с++
0
09.12.2011, 11:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2011, 11:45
Помогаю со студенческими работами здесь

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

Удаление лишних пробелов из строки
Допустим дана строка :&quot; ФЫвфвфв фывфывф фывфв фывфывфыв asasawq&quot; Нужно что бы...

Удаление из файла всех пробелов
В файле есть текст к примеру &quot;Uznaesh ne poimesh&quot; нужно вывести на экран и записать в файл удалив...

Удаление лишних пробелов в программе
Задание: Считая, что предложения в тексте заканчиваются точкой с последующим обобщенным...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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