Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Яродан
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 12
#1

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

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

Дана строка состоящая из слов, между которыми есть некое количество пробелов.
Требуется удалить лишние пробелы, оставив между словами ровно по одному.
Если в начале или в конце строки имеются пробелы, то точно так же нужно оставить лишь один из них.
Иными словами если пробелы повторяются 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
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2014, 17:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить в строке лишние пробелы, оставив между словами ровно по одному (C++):

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

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

Строка: Удалить лишние пробелы между словами - C++
Задание: нужно удалить лишние пробелы между словами (если один пробел, то его нужно оставить). # include &lt;conio.h&gt; # include...

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

Выделить в тексте лишние пробелы между словами - C++
ЕЩе одна задачка из Павловской... Прошу помощи!!! Если вам лень решать всю задачу, то меня очень интересует второй пункт... Но буду рад...

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

1
zss
Модератор
Эксперт С++
6516 / 6078 / 2001
Регистрация: 18.12.2011
Сообщений: 15,792
Завершенные тесты: 1
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2014, 18:12
Привет! Вот еще темы с ответами:

Вывести на экран содержимое файла удалив лишние пробелы между словами - C++
помогите дописать программу на visual c++ Дан текстовый файл, в котором слова разделены 1 и более пробелами. Вывести на экран содержимое...

Убрать лишние пробелы, оставить по одному пробелу между слов - C++
Помогите пожалуйста!!! Убрать лишние пробелы, оставить по одному пробелу между слов. (С++)

Удалить лишние пробелы в строке - C++
Добрый день. Прошу написать простую программу по заданию: В строке, введённой с клавиатуры, удалить все лишние пробелы. На форуме...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru