Форум программистов, компьютерный форум CyberForum.ru

Найти слова с онк и енк в тексте - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Компилятор с обширной библиотекой http://www.cyberforum.ru/cpp-beginners/thread869291.html
Добрый день уважаемые форумчане. Не так давно стал обучаться программированию на языке С++. Использую компилятор code::blocks, но как оказалось база данных этой программы не столь велика. На ней невозможно создавать отдельное окно, менять цвет фона, шрифта и тп. Подскажите пожалуйста, какой компилятор использовать для редактируемых окон, фона, шрифтов и тп.? Или если это возможно, как обогатить...
C++ Реализация класса в отдельном файле Изучаю C++ (вернее только начал) по учебнику "Харви М. Дейтел, Пол Дж. Дейтел - Как программировать на C++" и застрял на создании классов в отдельном файле с разбиением на интерфейс и реализацию. Есть 3 файла: Заголовочный класса: #include <string> using std::string; class GradeBook { http://www.cyberforum.ru/cpp-beginners/thread869266.html
C++ Не могу понять, почему так заполняется вектор
Всем привет, возникла вот такая вот проблема с циклом: //функция который ищет мин и 2 макс элемента в спектре double CspectralevaluationDlg::search_interf_max_and_min(vector<double>A) { double temp=A; double max_1=0, max_2=0; int calc_max_1=0,calc_max_2=0,calc_min=0; double min_interf=0; CString quest; for(int i=0;i<A.size()/2;i++)
C++ Дано целое число N. Определите, есть ли в числе 2N цифра, равная введѐнной цифре К.
Дано целое число N. Определите, есть ли в числе 2N цифра, равная введѐнной цифре К.
C++ Разработать класс Man (человек) и производный класс Student (студент). Описать атрибуты. http://www.cyberforum.ru/cpp-beginners/thread869243.html
Разработать класс Man (человек) и производный класс Student (студент). Описать атрибуты.
C++ Разработать класс Airplane (самолет). Определить конструктор и деструктор. Реализовать объявленные методы доступа к данным. решите пожалуйста вот эту задачу, вроде бы простая.. и если можно объясните, что где что значит. (С++) Разработать класс Airplane (самолет). Определить конструктор и деструктор. Реализовать объявленные методы доступа к данным. подробнее

Показать сообщение отдельно
undestroyer
0 / 0 / 0
Регистрация: 24.03.2013
Сообщений: 53
19.05.2013, 08:09     Найти слова с онк и енк в тексте
Здравствуйте, решаю лаб. работу по программированию. Задание: в произвольном тексте (взятом и файла) (10 строк, не более 80 символов в строке) найти слова содержащие последовательность символов ОНК или ЕНК. Записать в другой файл (имя файла задается пользователем) все эти слова и количество повторений каждого слова в тексте.

Подготовленный для тестирования текст:
123
sssdf
авав
слово с онк: ручонка собачонка
стово с енк: избенка сестренка
Мой вариант решения:

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
 
 
using namespace std;
 
void main()
{
    setlocale(LC_ALL,"rus");
    char a[50],b[50],c[800],w[20][15],s[15];
    int i,j,n,k,r,t,f[20]={0},q=0;
    bool x;
    FILE *f1, *f2;
    cout<<"откуда брать текст:\n";
    gets(a);
    cout<<"куда сохранить результат:\n";
    gets(b);
    f1 = fopen(a,"rt");
    f2 = fopen(b,"wt");
    for (i=0;!(feof(f1));i++)
        c[i]=fgetc(f1);
    cout<<"Текст из файла:\n";
    for (j=0;j<i-1;j++)
        cout<<c[j];
    cout<<"\nслова с онк или енк:\n";
    //ищем онк и енк
    for (j=0;j<i-1;j++)
        if (((c[j]=='о')&&(c[j+1]=='н')&&(c[j+2]=='к'))||((c[j]=='е')&&(c[j+1]=='н')&&(c[j+2]=='к')))
        {
            //если нашли - ищем начало и конец слова
            n=j;
            while ((c[n-1]!=' ')&&(c[n-1]!='\n'))
            {
                n--;//начало
            }
            k=j;
            while ((c[k+1]!=' ')&&(c[k+1]!='\n'))
            {
                k++;//конец
            }
            for (r=0;r<15;r++)
                s[r]=0;//обнуление массива слова
            for (r=0;r<k-n;r++)
                s[r]=c[n+r];//сохранение слова в массив s
            x=0;//x-индикатор нового слова =1 если слово уже встречалось =0 если слово новое
            for (t=0;t<20;t++)//проверка встретили слово в первый раз или уже видели
                if (w[t]==s)
                {
                    f[t]++;//если видели - +1 счетчику
                    x=1;
                }
            if (x==0)//если не видели
            {
                for (r=0;r<15;r++)
                    w[q][r]=s[r]; //сохраняем слово в массив w
                f[q]++;
                q++;
            }
        }
 
    for (r=0;r<q;r++)
    {
        printf("слово\t%s\t%d раз\n",w[r],f[r]);
        fprintf(f2,"слово\t%s\t%d раз\n",w[r],f[r]);
    }
    fclose(f1);
    fclose(f2);
    system("pause");
}
Программа нормально компилируется и полностью выполняется, но не сохраняет ни 1 слова с онк или енк в массив w[20][15] и не реагирует на повторение. На мой взгляд либо я ошибся когда писал сохранение слова в отдельный массив, либо проблемы с кодировкой русского текста. Что посоветуете сделать?

Добавлено через 16 часов 18 минут
UPD: Ошибка найдена в 44 строке, код обновлен до рабочего, но повторения все еще считаются не правильно, ущу дальше...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru