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

Удалить в строке лишние пробелы, оставив между словами ровно по одному

29.11.2014, 17:56. Показов 9928. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана строка состоящая из слов, между которыми есть некое количество пробелов.
Требуется удалить лишние пробелы, оставив между словами ровно по одному.
Если в начале или в конце строки имеются пробелы, то точно так же нужно оставить лишь один из них.
Иными словами если пробелы повторяются 2 и более раз подряд, нужно убрать все кроме одного.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    char g[1000];
    gets(g);
    int i=1,k=0;
    for(;g[i];i++)
     if(g[i]==' ' && g[i-1]==' ');
     else  g[k++]=g[i-1];
    g[++k]=0;
    printf("%s",g);
    return 0;
}
Что у меня не так? При загрузке на сервер пишет Wrong Answer при первом тесте.

Добавлено через 50 минут
Решил обмануть сервер:
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 <iostream>
#include <conio.h>
#include <cstring>
 
using namespace std;
 
int main()
{
    char b = 0;
    char k;
    char h[1000];
    int i = 0;
    while (k!=char(13))
    {
    k = getch();
    if ((k==b && b!=' ') || (k!=b)){
    cout << k;
    h[i]=k;
    i++;
    }
    b=k;
    }
    cout << "\n" <<h;
}
Тобишь в этой версии программы, ввести 2 пробела подряд невозможно. А так как строка это введенное, то все по идее хорошо... ОДНАКО мне пришло: "Idleness Limit Exceeded, TestN=1"
Я так понимаю, что проблема в команде getchar(), которая реагирует на нажатие клавиши...
Что нужно поправить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2014, 17:56
Ответы с готовыми решениями:

Работа с файлами. Удалить все лишние пробелы, оставив между словами не более одного пробела
Дан текстовый файл. Удалить из него все лишние пробелы, оставив между словами не более одного...

Убрать в текстовом файле ненужные пробелы, оставив между словами по одному, между предложениями по два.
Мое задание: убрать в текстовом файле ненужные пробелы, оставив между словами по одному, между...

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

В каждой строке удалить лишние пробелы между словами и разместить их по левому краю, сохраняя первоначальную длину строк
Можете помочь?)Заранее спасибо

1
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
29.11.2014, 18:12 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
{
    char g[1000];
    gets(g);
    int i=0,k=0;
    while(g[i++]==' ')
           ; // пропускаем пробелы в начале
    g[k++]=g[i++]; // переписали 1-ый символ
    for(;g[i];i++)
    {
         if(g[i]!=' ' ||  g[i-1]!=' ') // переписываем только если не пробел, или предыдущий не пробел
             g[k++]=g[i];
    }
     if(g[k-1]==' ') // последний пробел не нужен
            k--;
    g[k]=0; // конец строки
    printf("%s",g);
    return 0;
}
1
29.11.2014, 18:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2014, 18:12
Помогаю со студенческими работами здесь

Строка: Удалить лишние пробелы между словами
Задание: нужно удалить лишние пробелы между словами (если один пробел, то его нужно оставить). #...

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

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

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


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

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