Дана строка. Напишите программу, которая удалит из этой строки все лишние пробелы. Пробел будем считать лишним, если:
- он находится в самом начале строки, до самого первого слова;
- он находится в конце строки, после самого последнего слова;
- несколько пробелов расположены между двумя словами (проще говоря, если слова разделены более чем одним пробелом, тогда все пробелы кроме одного — лишние).
Входные данные
Дана строка [latex]s[/latex] (0 ≤ |S| ≤ 255). Строка содержит только латинские буквы и пробелы.
Выходные данные
Требуется вывести строку без лишних пробелов.
Код
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <iostream> #include <string> using namespace std; int main(){     string s;     getline(cin, s);     for (int i = 0; i < s.length(); i++)          if (s[i] == ' ' && s[i + 1] == ' ') {s.erase(i, 1); i = (i - 1);}     cout << s << endl;     return 0; } | 
Код
| 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 28 29 30 | #include <iostream> #include <cstring> using namespace std; const short SIZE = 257;      int main(){     int j = 0;     char * str1 = new char[SIZE];     char * str2 = new char[SIZE];     cin.getline(str1, SIZE);     int space = 0;     for (int i = 0; i < strlen(str1); i++) {          if (str1[i] == ' '){             while (!space){ // space != 0                   str2[j] = ' ';                   j++;                   space = 1;             }          }          else {              str2[j] = str1[i];              j++;              space = 0;         }     }     str2[j] = 0;     printf("%s", str2);     return 0; } | 
Тесты
| 
 | 
 | ||||
| Ivanov Maxim | 
 | ||||
| Scott Fitzgerald | 
 | ||||
| Gertruda Stal | 
 | ||||
| John Green | 
 | 
Решение
Первый код написан на string. Вводим строку [latex]s[/latex], которая содержит латинские буквы и пробелы. В цикле рассматриваем все символы строки от начала до конца. В условии после каждого следующего символа ставим пробелы, используем функцию erase, которая удаляет из строки лишние пробелы. Выводим строку.
Второй код написан на cstring. Вводим дополнительную строку того же размера, что и первая строка. В цикле for просматриваем все символы от начала до конца. В условии после каждого следующего символа в первой и второй строках ставим пробелы, присваиваем символы первой и второй строки, выводим вторую строку с помощью printf.
 
						
Я перечислю фрагменты текста, которые на мой взгляд не передают какого-либо смысла или ошибочны:
Если Вам не понятно, что меня смущает, задайте вопрос по почте, указав фразу.