В заданной строке удалить все пробелы. Если пробелов не было, выдать сообщение об этом, иначе напечатать количество удаленных пробелов.
Ввод | Вывод |
Однажды во дворе стояла ясная погода. | Однаждыводворестоялаяснаяпогода. 5 |
Единство предмета речи — это тема высказывания. | Единствопредметаречи—этотемавысказывания. 6 |
Слово. | Слово. Пробелов не было. |
Код программы:
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 |
#include <iostream> #include <string> using namespace std; int main() { int k=0; string s; getline(cin, s, '\n'); int i=0; for(i ; i<s.length(); i++){ if(s[i]==' ') { k++; s.erase(i, 1); i--; } } cout<<s; if(k==0){ cout<<endl<<"Пробелов не было."; } else{ cout<<endl<<k; } return 0; } |
Вводим строку из стандартного потока ввода. Используем getline. Вводим счетчик пробелов.
Проходя по элементам строки, если встречаем пробел, то увеличиваем счетчик на 1 и удаляем элемент. Потом возвращаемся обратно и в случае обнаражения пробела, удаляем его. Печатаем строку. Если пробелов в строке не было выводим: «Пробелов не было.» Иначе выводим число пробелов, которые были удалены.
Ссылка на ideone.com.
Код на Java:
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 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { int k; Scanner in = new Scanner (System.in); String s; s = in.nextLine(); int k1=s.length(); s=s.replace(" ",""); k=k1-s.length(); System.out.println(s); if(k==0){ System.out.println("Пробелов не было"); } else{ System.out.println(k); } } } |
Предлагаю тест.
«Что будет, если в предложении стоят несколько пробелов подряд?»
Форум удаляет двойные пробелы. Но Вы поняли, что я имею в виду.
Да, теперь нормально.
В теге pre двойные пробелы не удаляет:
Вы не удалили из строки ни одного пробела.
Просто не напечатали их.
Исправил.
Зачтено.
Просто для информации сделаю два замечания.
1. Это не самый быстрый способ. Функция erase() удаляет символ и сдвигает все остальные к началу.
2. Не следует делать никаких действий, кроме указанных в условии — считать пробелы, печатать «Пробелов не было». Представьте, что функция erase() поступает также.
Ну что это за калька с C++-программы. Посмотрите что делает метод replace класса String . Все гораздо проще, никакой цикл не нужен.
Исправил код.
Засчитано, 5 баллов.