Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Killspamers
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 26
#1

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

30.01.2012, 17:05. Просмотров 826. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2012, 17:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В произвольной тексте на русском языке вывести строки, содержащие более 5 букв "о" (C++):

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

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

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

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

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

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

7
soon
2542 / 1307 / 81
Регистрация: 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
Killspamers
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 26
30.01.2012, 17:19  [ТС] #3
программа компилится, но при подстановке файла с текстом программа ничего не выводит.
0
soon
2542 / 1307 / 81
Регистрация: 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
Killspamers
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 26
30.01.2012, 18:40  [ТС] #5
Спасибо!) Вы очень помогли!)

Добавлено через 4 минуты
А можно ещё вопросик? В ещё 1 задаче условие, что надо вывести строки без буквы о, т.е. получается в условии нужно исправить 'о' == 0?
0
soon
2542 / 1307 / 81
Регистрация: 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
Killspamers
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 26
30.01.2012, 18:49  [ТС] #7
Не получается, при таком условии не учитывается регистр.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
30.01.2012, 18:57 #8
Можете воспользоваться std::find_if
1
30.01.2012, 18:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2012, 18:57
Привет! Вот еще темы с ответами:

Определить длину данной строки и количество букв "а" в ней. Вывести имя в обратном порядке - C++
Ввести фамилию, имя и отчество как одно текстовое дано. Определить длину данной строки и количество букв &quot;а&quot; в нем. Решить задачу двумя...

Найти номер последней по порядку строки в матрице, содержащей наибольшее количество букв "ш", "щ" - C++
Нужен код к этому условию, пожалуйста. Дана символьная матрица размера 13х18. Найти номер последней по порядку строки,содержащей...

В чем разница между "Порядок выполнения программ на языке C" и "Структура программы на языке C" - C++
в конспектах у себя не нашел, хоть и записывал все, что объяснял преподаватель. вот, собственно, сам вопрос: Структура программы на...

Вывести сообщение "Можно", если из букв введенной строки X можно составить введенную строку Y - C++
Не могу понять самой сути задания. Вывести сообщение &quot;Можно&quot;, если из букв введенной строки X можно составить введенную строку Y,при...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.