Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Kapioner
1 / 1 / 0
Регистрация: 16.02.2011
Сообщений: 30

Работа с текстом. Объясните алгоритм если не сложно..

17.02.2011, 18:25. Показов 1294. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Дан текстовый файл, фразы в котором отделены друг от друга точками, а слова – пробелами и знаками препинания. Удалить из этого файла фразы, содержащие предлоги «с», «на», «под».

Добавлено через 4 часа 36 минут
По типу такой задачи есть на форуме но там ничего дельного не сказанно(
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2011, 18:25
Ответы с готовыми решениями:

Почему не работает программа??? Объясните пожалуйста, если не сложно то исправьте(
Почему не работает программа??? Объясните пожалуйста, если не сложно то исправьте(

Работа с текстом в формулах ЕСЛИ
Добрый день! Помогите решить задачу: Есть желание упростить заполнение доверенностей (1с и подобные программы не подходят), решил...

Кому не сложно, объясните
Пожалуйста, помогите исправить ошибку. Я, если честно даже не понимаю, почему так и почему вторые два графика получились, а первый нет. ...

11
 Аватар для dxdy
99 / 99 / 14
Регистрация: 14.06.2010
Сообщений: 284
17.02.2011, 18:33
нужно именно предлоги или те слова которые начинаются на «с», «на», «под»?
1
 Аватар для Kapioner
1 / 1 / 0
Регистрация: 16.02.2011
Сообщений: 30
17.02.2011, 18:39  [ТС]
Удалить фразы содержащиее ТОЛЬКО предлоги с на под
0
 Аватар для dxdy
99 / 99 / 14
Регистрация: 14.06.2010
Сообщений: 284
17.02.2011, 18:46
скорее это лингвистика, а не программирование. Здесь наверно нужно разбивать слово и проверять по словарю ведь русский язык очень богатый.

Не по теме:

Можно вопрос, а для каких целей разрабатывается данная программа?

1
 Аватар для Kapioner
1 / 1 / 0
Регистрация: 16.02.2011
Сообщений: 30
17.02.2011, 19:01  [ТС]
Дана фраза до точки которая содержит слова. И если среди слов есть предлоги эти то удалить эту фразу.Может просто услови типа если ' ' и 'н' и 'a' и ' ' то удалять фразу? Эту задачку нашёл просто, хочу потренироваться, но не знаю как её сделать)
0
 Аватар для igorrr37
2880 / 2027 / 992
Регистрация: 21.12.2010
Сообщений: 3,780
Записей в блоге: 9
17.02.2011, 19:28
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include<iostream>
#include<algorithm>
#include<vector>
#include<fstream>
#include<sstream>
#include<windows.h>
 
char c[256];
 
void print(std::string s){
    CharToOem(s.c_str(), c);
    std::cout<<c<<'.';
}
 
bool comp(char c){
    return (c<-64||c>-1)&&c!=-72&&c!=-88;
}
 
int main(){
    std::string path, s, s1, s2, d=" с  на  под С  На  Под";
    std::cout<<"Enter file path\n";
    getline(std::cin, path);
    std::fstream fs(path.c_str());
    if(!fs){std::cerr<<"File not found"; return 1;}
    std::vector<std::string> v, del, res;
    std::stringstream ss(d);
    while(ss>>d){
        del.push_back(d);
    }
    while(getline(fs, s, '.')){
        s2=s;
        std::replace_if(s.begin(), s.end(), comp, ' ');
        ss.clear();
        ss.str(s);
        while(ss>>s1){
            v.push_back(s1);
        }
        if(std::find_first_of(v.begin(), v.end(), del.begin(), del.end())==v.end()){
            res.push_back(s2);
        }
        v.clear();
    }
    fs.close();
    fs.open(path.c_str(), std::ios::out);
    for(int i=0; i<res.size(); i++){
        print(res[i]);
        fs<<res[i]<<'.';
    }
    fs.close();
}
1
17.02.2011, 19:34

Не по теме:

считываем по 1 символу файл.
записываем их в массив 1.
как только встречаем символ 'с'.
заносим его в массив 2.
считываем дальнейший символ - если он пробел. то считываем символы из файла до ',' и очищаем массив 2.
если не пробел - данные массива 2. добавляем в массив 1.
считываем по 1 символу в массив 1....

в конце открываем файл в режиме чтения и записываем массив 1

пока писал текст алгоритма, уже код написали =)

1
 Аватар для Kapioner
1 / 1 / 0
Регистрация: 16.02.2011
Сообщений: 30
17.02.2011, 19:43  [ТС]
igorrr37 Спасибо за кодбольшое буду разбираться попытаюсь на обычный си сделать
no0ker спасибо за алгоритм, очень полезно!
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
17.02.2011, 19: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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>
#include <windows.h>
 
void insert_space(std::string &str){
  const std::string delim(" ,.:;?!");
  for(std::string::value_type i = 0; i < str.length(); ++i)
    if(delim.find(str[i]) != std::string::npos)
      str[i] = ' ';
}
 
int main(){
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  std::ifstream fin("INPUT.TXT");
  const std::string find_pred = "с на под";
 
  while(!fin.eof()){
    std::string buffer, tmp;
    std::vector<std::string> words, preds;
    bool key = true;
 
    getline(fin, buffer, '.');
    insert_space(buffer);
    std::istringstream ist(buffer), _ist(find_pred);
 
    while(ist >> tmp)
      words.push_back(tmp);
    while(_ist >> tmp)
      preds.push_back(tmp);
 
    for(int i = 0; i < words.size(); ++i)
      for(int j = 0; j < preds.size(); ++j)
        if(words[i].find(preds[j]) != std::string::npos)
          key = false;
 
    if(key){
      for(int i = 0; i < words.size(); ++i)
        std::cout << words[i] << ' ';
    std::cout << '.';
    }
  }
  return 0;
}
1
 Аватар для Kapioner
1 / 1 / 0
Регистрация: 16.02.2011
Сообщений: 30
17.02.2011, 20:23  [ТС]
А на обычный Си перевести не сложно будет? текстовые операторы такиеже там?
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
17.02.2011, 20:24
Цитата Сообщение от Kapioner Посмотреть сообщение
текстовые операторы такиеже там?
Нет...
0
 Аватар для Kapioner
1 / 1 / 0
Регистрация: 16.02.2011
Сообщений: 30
17.02.2011, 21:36  [ТС]
плохо((

Добавлено через 5 минут
может кто помочь перевести в обычный си? буду премного благодарен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.02.2011, 21:36
Помогаю со студенческими работами здесь

Объясните, тут вроде не сложно
может кто объяснить как работает данная процедура.... program proc26; function IsPower5(K: integer): boolean; begin while K...

вк апи: Не понимаю ошибок интерпретатора, кому не сложно, объясните, пожалуйста.
Недавно в питоне, и не понимаю ошибок интерпретатора, кому не сложно объясните,пожалуйста

Кому не сложно объясните почему на рисунке во втором треугольнике больше площадь?
Оба больших треугольника равны также как и каждая пара фигур по отдельности верхнего и нижнего треугольников . Вопрос откуда появился...

Сложно ли расфифровать следующий алгоритм?
Заинтересовался темой криптографии. Сразу скажу что в этом я не спец. Интересуюсь для себя. Если заменить каждый символ в тексте на...

Покритикуйте, если не сложно.
Собственно вот: http://panpolski.com


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 19.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru