Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
 Аватар для murod
28 / 7 / 4
Регистрация: 04.11.2010
Сообщений: 163

Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов

22.07.2011, 17:35. Показов 3387. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.07.2011, 17:35
Ответы с готовыми решениями:

Дана строка, состоящая из символов. Удалить из этой строки все цифры, записав в другую строку
Проблема в том, что я не знаю как в строке a := ord('0') div 10; сделать перечисление от 0 до 9 чтобы присваивались разные элементы ...

Дана символьная строка, содержащая буквы, цифры и пробелы. Написать строку задом наперед, удалив из нее все пробелы
Дана символьная строка, содержащая буквы, цифры и пробелы. Написать строку задом наперед, удалив из нее все пробелы Delphi

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

17
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
22.07.2011, 17:37
и в чом затык?
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
22.07.2011, 17:42
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
#define SIZE 20
 
int main() {
    char str1[SIZE] = "a db nn  d";
    char str2[SIZE] = { 0 };
    int i, j;
 
    for (i = 0, j = 0; str1[i] != '\0' && i < SIZE; ++i) {
        if (str1[i] != ' ') {
            str2[j++] = str1[i];
        }
    }
 
    printf("%s\n", str2);
    return 0;
}
0
 Аватар для murod
28 / 7 / 4
Регистрация: 04.11.2010
Сообщений: 163
22.07.2011, 17:43  [ТС]
а если строка вводится с клавиатуры ?
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
22.07.2011, 17:45
Цитата Сообщение от murod Посмотреть сообщение
а если строка вводится с клавиатуры ?
А это уже сам, чей не маленький
1
 Аватар для murod
28 / 7 / 4
Регистрация: 04.11.2010
Сообщений: 163
22.07.2011, 17:45  [ТС]
а понял все большое спасибо !
0
Эксперт С++
 Аватар для nameless
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
22.07.2011, 18:14
murod,

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <algorithm>
#include <iostream>
#include <string>
 
int main()
{
   std::string str = "this is test string";
   str.erase(std::remove(str.begin(), str.end(), ' '), str.end());
   std::cout << str << std::endl;
 
   return 0;
}
0
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
22.07.2011, 21:58
Вот вариант накидал, обработка в одном буфере, в параметре можешь задавать любой символ.
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
25
26
27
28
29
30
31
32
#include <stdio.h>
 
 
char*  chr_del(char* str, char ch) {
      char* src = str;
      char* ca, *cb;
      while( *str ) {
          if( *str == ch ){
                ca = str;
                cb = str + 1;
                while(*ca++ = *cb++);
                continue;
          }
          *str++;
      }
      return src;
}
 
 
 
int main(void) {
 
   char buf[255];
   printf("input string: ");
   gets(buf);
 
   chr_del(buf, ' ');
   printf("result: %s\n", buf);
 
   getchar();
   return 0;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
22.07.2011, 22:19
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
25
26
27
28
29
/* ANSI C 99 */
/* удалить все пробелы... */
 
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
 
char * remove_spaces(char * str){
    char buf[strlen(str) + 1], * b = buf, * s = str;
    
    while ( *s ){
        if ( ! isspace(*s) )
            *b++ = *s;
        ++s;
    }
    *b = '\0';
    
    return strcpy(str, buf);
}
 
int main(void){
    char buf[BUFSIZ];
    
    while ( printf("String: ") && scanf("%[^\n]%*c", buf) == 1 )
        printf("Result: %s\n", remove_spaces(buf));
    
    exit(0);
}
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
22.07.2011, 22:31
easybudda, в C99 такое:
C
1
char buf[strlen(str) + 1]
разрешено?

Добавлено через 9 минут
Нашел, действительно в C99 так можно, незнал.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
22.07.2011, 22:33
Kastaneda, ага. Там, кстати, ещё много полезного...
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
22.07.2011, 23:21
Цитата Сообщение от easybudda Посмотреть сообщение
Kastaneda, ага. Там, кстати, ещё много полезного...
А как оно так по-хитрому там устроено ?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
23.07.2011, 00:32
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от asics Посмотреть сообщение
А как оно так по-хитрому там устроено ?
Из книжки Р. Лав "Linux системное программирование":
речь о системном вызове alloca(), который как-раз так же память выделяет...
... Эта память живёт в стеке и автоматически освобождается, когда вызывающая функция возвращает результат.
И тут примерно так же - при каждом вызове от стека кусок нужной длинны отрезается, при выходе возвращается...
Там же дальше:
VLA (массивы переменной длинны) позволяют избегать нагрузки, создаваемой выделением динамической памяти практически так же, как это делает системный вызов alloca()
Да и вообще очень интересная книжка, рекомендую...
3
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
23.07.2011, 02:08
C
1
 char buf[strlen(str) + 1]
хм...интересно, почему такая фича до сих пор не в стандарте С++
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
23.07.2011, 09:35
Цитата Сообщение от Maxwe11 Посмотреть сообщение
C
1
 char buf[strlen(str) + 1]
хм...интересно, почему такая фича до сих пор не в стандарте С++
Цитата Сообщение от easybudda Посмотреть сообщение
речь о системном вызове alloca(), который как-раз так же память выделяет...
Вот alloca(), функция очень не безопасна, думаю поэтому она не прежилась и в С++ врядли такое появится.
0
 Аватар для ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
23.07.2011, 11:49
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
  
int main() {
  int i;
  string op = "trop lop kop";
  cout << op << '\n';
  i = count(op.begin(), op.end(), ' ');
  remove_copy(op.begin(),op.end(),op.begin(),' ');
  op.resize(op.size() - i);
  cout << op << '\n';
  return 0;
}
О так можно.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
23.07.2011, 14:20
Цитата Сообщение от Maxwe11 Посмотреть сообщение
хм...интересно, почему такая фича до сих пор не в стандарте С++
Нашел в 0x, частично будет поддержка подобных вещей, т.е. сейчас такой код является ошибочным:
C++
1
2
3
int getval(){ return 5;}
///////////////////////////////////
int mas[getval()+2];
В 0x будет введено ключевое слово constexpr, которое позволяет пользователю гарантировать, что или функция или конструктор объекта возвращает константу времени компиляции. Т.е. слудующий код будет допустимым:
C++
1
2
3
constexpr int getval(){ return 5;}
///////////////////////////////////
int mas[getval()+2];
Но тут все в "рамках приличия", память выделяется на этапе компиляции, т.е. это не тоже самое, что в С99, но все же - удобство налицо
0
23.07.2011, 20:13

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
функция очень не безопасна
Любая дополнительная возможность требует ответственного подхода. С++ абсолютно в духе языков высокого уровня избавляется по мере возможности от подобных "небезопасных" конструкций. В силу сложности этого языка может оно и правильно - любой дополнительный "подводный камень" может много крови попортить. Вот по этому мне и нравится язык С... :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.07.2011, 20:13
Помогаю со студенческими работами здесь

Дана строка S. Удалить из строки все пробелы , заменив их на '**' .
Дана строка S. Удалить из строки все пробелы , заменив их на '**' .

Дана символьная строка, содержащая русские буквы, цифры и пробелы. Написать строку задом наперед, удалив из нее все цифры и пробелы
Дана символьная строка, содержащая русские буквы, цифры и пробелы. Написать строку задом наперед, удалив из нее все цифры и пробелы.

Дана строка. Удалить все пробелы, подсчитать кол-во удалений
Здравствуйте) Помогите,пожалуйста с решением задачи: Дана строка.Удалить все пробелы, подсчитать кол-во удалений.

Дана исходная строка. Удалить из данной строки все начальные пробелы
Здравствуйте. У меня есть несколько задач, но вроде как в одной теме нельзя размещать несколько заданий... Одно из заданий:Дана исходная...

Дана строка, удалить все слова из одной и двух букв, пробелы не удалять
Дана строка, удалить все слова из одной и двух букв, пробелы не удалять..


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru