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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить сумму модулей элементов массива, расположенных после первого элемента, равного нулю http://www.cyberforum.ru/cpp-beginners/thread1314328.html
Дан вещественный массив а(n).Вычислить сумму модулей элементов массива,расположенных после первого элемента,равного нулю. Если таких элементов в последовательности нет,вывести соответствующее...
C++ Башни в Ханое, кое-что не ясно В темах про ханойсие башни тишина, видимо все давно всё поняли, как всегда кроме меня. Механизм решения, в принципе, ясен, остался 1 маленький вопрос #include <iostream> using namespace std;... http://www.cyberforum.ru/cpp-beginners/thread1314320.html
В матрице AxB переместить столбцы между собой C++
в матрице AxB переместить столбцы между собой местами так, чтобы они следовали в таком порядке: n, 1, n-1, 2, ... помоги пожалуйста решить в С++
C++ Суммирование элементов одномерного массива
всем привет,теперь имея доступ к каждой цифре какого нибудь десятичного числа,я возвел ее в третью степень. например число 153; 1^3 = 3; 5^3 = 125; 3^3 = 27; и после возведения в степень эти...
C++ Вывести подстроку между двумя точками http://www.cyberforum.ru/cpp-beginners/thread1314284.html
ЗАДАЧА: На вход дана строка (заканчивается символом 13), содержащая РОВНО 2 точки. Вывести строку между ними. Вот мой говн*код: #include <iostream> #include <cstring> #include <string> #include...
C++ Такая вот задачка Участки нумеруются, начиная от города A до города B. Мотоцикл i-ый участок проезжает за время ai, машина – за время bi (1 <= ai, bi <= 1000; ai, bi – целые). Одновременно мотоцикл и машина начинают... подробнее

Показать сообщение отдельно
Яродан
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 12

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

29.11.2014, 17:56. Просмотров 1601. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.