Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для Predvestnik
7 / 6 / 4
Регистрация: 09.10.2010
Сообщений: 192

Удаление из строки

08.02.2011, 19:52. Показов 1157. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Из введённой с клавиатуры строки нужно удалить все символы не являющиеся латинскими буквами.
Удалить что-либо не проблема а вот как задать условие, что нужно удалять?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2011, 19:52
Ответы с готовыми решениями:

БД с операциями: добавление новой строки, удаление строки, редактирование имеющейся строки
Нужно создать базу данных в паскале, с операциями: добавление новой строки, удаление строки, редактирование имеющей строки. Желательно с...

Здесь есть удаление столбца, как добавить удаление строки
#include <iostream> #include <conio.h> using namespace std; int main() { int n; do {cout << "Razmer massiva: "; cin >> n;...

Удаление строки из listbox и удаление круга из panel
Стоит задача, чтобы при щелчке по листбоксу с координатами кружков на панели удаляся соответствующий кружок и строка из листбокса. Я...

13
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
08.02.2011, 20:02
Predvestnik,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    str.erase(std::remove_if(str.begin(), str.end(),[](char t) {return !isalpha(t);}), str.end());
    std::cout<<str<<'\n';
    return 0;
}
Добавлено через 2 минуты
Без лямбды.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
#include <functional>
 
struct eraser:public std::unary_function<char, bool>
{
    result_type operator () (argument_type one)
    {
        return !isalpha(one);
    }
};
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    str.erase(std::remove_if(str.begin(), str.end(), eraser()), str.end());
    std::cout<<str<<'\n';
    return 0;
}
0
 Аватар для Predvestnik
7 / 6 / 4
Регистрация: 09.10.2010
Сообщений: 192
08.02.2011, 20:38  [ТС]
спасибо но мне нужно на turbo с всё осуществить, и такой код не примут
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
08.02.2011, 20:42
Predvestnik, Дык если нет проблем с удалением и нужно только узнать про условие... Сравниваете, используя функцию isalpha.
C++
1
2
3
4
if(!isalpha(str[i]))
{
   //Удаляем символ
}
И так по всей строке...
0
 Аватар для Predvestnik
7 / 6 / 4
Регистрация: 09.10.2010
Сообщений: 192
08.02.2011, 20:45  [ТС]
эта функция проверяет является ли символ латинской буквой, я правильно понял?
доп библиотеку нужно для неё подключать?
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
08.02.2011, 20:49
Цитата Сообщение от Predvestnik Посмотреть сообщение
эта функция проверяет является ли символ латинской буквой, я правильно понял?
Да.
Цитата Сообщение от Predvestnik Посмотреть сообщение
доп библиотеку нужно для неё подключать?
C
1
#include <ctype.h>
0
 Аватар для Predvestnik
7 / 6 / 4
Регистрация: 09.10.2010
Сообщений: 192
08.02.2011, 20:51  [ТС]
спасибо, теперь попробую делом заняться)))
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
08.02.2011, 20:55
Цитата Сообщение от Predvestnik Посмотреть сообщение
Удалить что-либо не проблема а вот как задать условие, что нужно удалять?
Операторами условных переходов, операторами циклов и булевыми выражениями.

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
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[]) {
  const int k_buffer_size = 4096;
  char buffer[k_buffer_size];
  fgets(buffer, k_buffer_size, stdin);
 
  char *result = (char*)malloc(strlen(buffer) + 1);
 
  char *source_symbol = buffer;
  char *destination_symbol = result;
  while (*source_symbol != '\0')
    if ((*source_symbol >= 'a' && *source_symbol <= 'z') ||
        (*source_symbol >= 'A' && *source_symbol <= 'Z'))
      *(destination_symbol++) = *(source_symbol++);
    else
      ++source_symbol;
  *destination_symbol = '\0';
 
  printf("%s\n", result);
 
  free(result);
  return 0;
}
0
 Аватар для Predvestnik
7 / 6 / 4
Регистрация: 09.10.2010
Сообщений: 192
08.02.2011, 21:15  [ТС]
да с функцией isalpha чёт не получается, не пойму чё, а вот в Вашем коде, lemegeton , не всё пойму
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
#include "stdafx.h"
#include <conio.h>
#include <math.h>
#include <string.h>
#include <ctype.h>
 
void main()
{
        char st[256];
        int i,k;
        printf("Vvedite stroku simvolov:\n");
        scanf("%s",st);  
        printf("Ishodnaja stroka:\n%s\n",st);
        printf("\nResult\n");
        for(i=0; i<strlen(st)-1; i++)
        {
            if(!isalpha(st[i]))
                {
                  for(k=i; k<strlen(st);k++)
                  {
                      st[k]=st[k+1];// сдвигаем все символы влево
                  }
                                           
                }
    
        }
       printf("%s",st); 
       getch();
 
}
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
08.02.2011, 22:08
В моем примере читается строка со стандартного вывода, размером до 4096 байт, создается новая переменная result размером с количество введенных символов + 1 на символ 0, копируются в неё из введенной строки те символы, которые совпадают с символами латинского алфавита. Без функции isalpha.

Не по теме:

Цитата Сообщение от Predvestnik Посмотреть сообщение
спасибо но мне нужно на turbo с всё осуществить
Цитата Сообщение от Predvestnik Посмотреть сообщение
#include "stdafx.h"
Turbo C такой Turbo C. ^____________^

0
 Аватар для Predvestnik
7 / 6 / 4
Регистрация: 09.10.2010
Сообщений: 192
08.02.2011, 22:13  [ТС]
осуществить нужно на турбо си, но делаю не себе поэтому до окончательного результата буду делать там где мне удобней =)

то я какраз понял, а вот зачем free(result);
и bufer....
0
 Аватар для MILAN
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
08.02.2011, 22:20
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
int main()
{
    char str[256];
    int i;
    printf("Enter string -> ");
    gets(str);
    printf("\nResult ->");
     for(i=0; i<strlen(str); i++)
     {
         if(((str[i]>=65 && str[i]<=90) || (str[i]>=97 && str[i]<=122))) 
         {
             printf("%c",str[i]);
         }
     }
    getch(); 
    return 0;
 
}
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
08.02.2011, 22:24
free чтобы память выделенную освободить.
buffer -- чтобы считать в него много байт из потока (стандартный ввод).
0
 Аватар для Predvestnik
7 / 6 / 4
Регистрация: 09.10.2010
Сообщений: 192
08.02.2011, 23:10  [ТС]
Спасибо всем, из всех вариантов получилось сделать один нормальный=)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.02.2011, 23:10
Помогаю со студенческими работами здесь

Строки.Удаление из строки повтор. Найти сумму не используя арифметическое сложение
1)Дана строка. Удалить из строки повторяющиеся символы. К примеру &quot;aaabbccccc&quot; -&gt; &quot;abc&quot;. Желательно через функцию. 2)Вводяться 2 очень...

Поиск строки и удаление строки, опираясь только на символы в ней
Всем привет! Нужно чтобы программа находила строку в текстовом документе, опираясь на символы в ней. Процедура поиска определенных символов...

Как запретить удаление строки в DataGridView, если пользователь не выбрал ни одной строки?
Здравствуйте! У меня есть datagridview и кнопка удаления записи на форме. Данные в datagridview попадают из таблицы базы данных...

Удаление конкретной строки из списка строк, при этом не трогать дублирующие строки
Необходимо из списка удалить конкретную строку, при этом не затронуть дублирующие строки. Как удалять элемент разобралась, а вот как...

Поиск по заданному выражению строки в файле и удаление найденной строки и нескольких прилежащих к ней строк
Доброго времени суток! Помогите, пожалуйста, разобраться. У меня лог файл, из которого мне нужно найти строки, в которых содержится...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru