0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 26
1

В произвольной тексте на русском языке вывести строки, содержащие более 5 букв "о"

30.01.2012, 17:05. Показов 1362. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем! Вобщем у меня проблема, есть задачка: В произвольной тексте на русском языке вывести строки, содержащие более 5 букв "о".

Не подскажите как это реализовать?) как поменять буквы в тексте я уже понял, а вот над этим ломаю голову.
Вот что я попытался сделать(ясно дело бред написал)

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
#include "stdafx.h"
#include<iostream>
#include<string>
#include<fstream>
#include<clocale>
using namespace std;
 
int main(){
    setlocale(LC_ALL,".1251");
    string fname;
    cout<<"введите имя файла "<<endl;
    cin>>fname;
    fstream in(fname.c_str(),ios::in|ios::binary);
    int size;//
    if (!in.is_open())
    {
        cout<<"файл не найден или невозможно открыть файл \n";
        return(0);
    }
    in.seekg(0, ios::end);
    size = int(in.tellg())+1;
    in.seekg(0, ios::beg);
    char * buff = new char [size];
    memset(buff, '\0', size);
    in.read(buff, size);
    in.close();// всё что выше понятно, мне подсказали это для другой проги а вот что ниже писать хз
           for (int i = 0; buff[i]!='\0' ; i++)
    {
        for (int i = 0; buff[i]!='\n' ; i++)
        {
           int kol = 0;
           if(buff[i] == 'о')
           kol++;
           {
               if( kol>=5&&buff[i]!='\n')
               {
                   cout<<" "<<buff[i];
               }
           }
        }
    } 
    cout<<"результат "<<buff<<endl;
    system("PAUSE");
    delete [] buff;
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2012, 17:05
Ответы с готовыми решениями:

Вывести слова строки, содержащие не более 4 букв
Здравствуйте. Задание: Вписать строку в консоль. Вывести слова этой строки, состоящие не более чем...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...

Определить номера позиций гласных букв в данном тексте на русском языке
Помогите решить задачу в C++. Определить номера позиций гласных букв в данном тексте на русском...

Определите долю гласных букв в заданном тексте на русском (английском) языке
Здравствуйте.Помогите пожалуйста с заданием.Заранее спасибо.

7
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
30.01.2012, 17:14 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <fstream>
#include <string>
#include <algorithm>
#include <iostream>
 
int main()
{
    std::ifstream fin("input.txt");
    std::string str;
    while(std::getline(fin, str))
        if(std::count(str.begin(), str.end(), 'o') > 5)
            std::cout << str << std::endl;
    fin.close();
    return 0;
}
1
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 26
30.01.2012, 17:19  [ТС] 3
программа компилится, но при подстановке файла с текстом программа ничего не выводит.
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
30.01.2012, 17:37 4
Bash
1
2
3
4
5
6
7
8
9
10
11
12
soon@bt:~/src/C++$ cat input.txt
asdooasd
asdoasdoasdoooo
oooo
oo
oooooo
ooasdiiasdoasdoadoodas
soon@bt:~/src/C++$ ./main
asdoasdoasdoooo
oooooo
ooasdiiasdoasdoadoodas
soon@bt:~/src/C++$
Для русского нужно настроить локаль, я полагаю. И изменить if, там английская o.
1
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 26
30.01.2012, 18:40  [ТС] 5
Спасибо!) Вы очень помогли!)

Добавлено через 4 минуты
А можно ещё вопросик? В ещё 1 задаче условие, что надо вывести строки без буквы о, т.е. получается в условии нужно исправить 'о' == 0?
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
30.01.2012, 18:47 6
Цитата Сообщение от Killspamers Посмотреть сообщение
т.е. получается в условии нужно исправить 'о' == 0?
Да
C++
1
if(std::count(str.begin(), str.end(), 'o') == 0)
1
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 26
30.01.2012, 18:49  [ТС] 7
Не получается, при таком условии не учитывается регистр.
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
30.01.2012, 18:57 8
Можете воспользоваться std::find_if
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.01.2012, 18:57
Помогаю со студенческими работами здесь

Перебрать все слова длиной не более n, составленные из букв "а" и "b"
Перебрать все слова длиной не более n, составленные из букв &quot;а&quot; и &quot;b&quot;.

Определить, каких букв в тексте больше: "м" или "н"
дано предложение.Определить каких букв в нём больше: м или н

Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки
Написать программу, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до...

Проверить в тексте окончания "тся", "ться"; вывести слова с этими окончаниями на экран
Сделать ввод текста. Проверить в тексте окончания тся, ться. Вывести слова с этими окончаниями на...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru