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

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

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

Как преобразовать код для n-ого количества строк? - C++

09.07.2014, 12:06. Просмотров 241. Ответов 8
Метки нет (Все метки)

Всем доброго дня, у меня есть проблема с кодом, не получается вот что, сделать так чтобы частоты символом считались для всего текста, а не для строки отдельно. Есть код:
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
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUS");
    int i, j, n, len = 0, m, p = 0, y;
 
    char text[1000] = { 0 };
    char find[1000] = { 0 };
    char *sub = NULL;
    cout << "Введите кол-во строк:";
    cin >> m;
    j = 0;
    for (y = 0; y <= m; y++)
    {
        cin.getline(text, 999);
        len = strlen(text);
        p += len;
 
        for (i = 0; text[i] != '\0'; i++)
        {
            if (!strchr(find, text[i]))
            {
                find[j] = text[i];
                j = j + 1;
            }
        }
 
 
        for (n = j = 0; find[j] != '\0'; j++)
        {
            if (sub = strchr(text, find[j]))
            {
                cout << "Символ:" << find[j] << " ";
                for (n = 1; sub != NULL; n++)
                {
                    if (sub + 1)
                        sub = strchr(sub + 1, find[j]);
                }
                cout << "Встречается раз:" << (n - 1) << " "
                    << "Его частота в строке:" << (100.0*(n - 1)) / p << "%" << endl;
            }
        }p = 0;
    }
    cout << "Общее количество элементов:" << p;
 
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2014, 12:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как преобразовать код для n-ого количества строк? (C++):

Вывести на экран значения 0-ого, 3-ого и 13-ого битов числа n в формате short int - C++
Задано число n в формате short int. Вывести на экран значения 0-ого, 3-ого и 13-ого битов представления в ЭВМ этого числа. Объяснить...

Как преобразовать код? - C++
Было задание 1. &quot;1. Создайте класс Vector, описанного выше вида, для хранения и обработки двумерных векторов. Задайте конструкторы и...

Написать программу для подсчета общего количества строк в исходном коде - C++
Написать программу для подсчета общего количества строк в исходном коде ;

Написать программу для подсчета общего количества строк в исходном коде - C++
1) Написать программу для подсчета общего количества строк в исходном коде; 2) Расширить программу п. 1, чтобы она выводила значение a....

Код для подсчета количества секунд между двумя моментами времени - C++
Дано время1,записанное в виде ЧЧ:ММ:СС , определить сколько секунд осталось до времени2,записанного в виде ЧЧ:ММ:СС.Если не сложно поясните...

Как инициализировать глобальную переменную в зависимости от количества строк в файле - C++
Есть переменная типа int glob = 3; объявлена в не main(), т.е. глобальная. После неё, тоже не в mаin, объявлены структуры ex: struct...

8
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
09.07.2014, 15:16 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <string.h>
#include <stdio.h>
 
#include <stdlib.h>
using namespace std;
 
int main()
{
 
    int i, j, n, len = 0, m, p = 0, y;
 
 
    char find[1000] = { 0 };
    char *sub = NULL;
    cout << "Vvedite kolichestvo strok:";
    cin >> m;
    char text[m][1000] ;
    j = 0;
    for (y = 0; y <= m; y++)
    {
        cin.getline(text[y], 999);
        len = strlen(text[y]);
        p += len;
 
        for (i = 0; text[y][i] != '\0'; i++)
        {
            if (!strchr(find, text[y][i]))
            {
                find[j] = text[y][i];
                j = j + 1;
            }
        }
    }
bool flag;
 
       for (j = 0; find[j] != '\0'; j++)
        {
            flag = false;
            n = 0;
            for (y = 0; y <= m; y++)
            {
                if ((sub = strchr(text[y], find[j])))
                {
                   flag = true;
                    while(sub != NULL)
                    {
                        n++;
                        sub = strchr(sub + 1, find[j]);
                    }
 
 
                }
            }
            if (flag)
            {
 
                cout << "Simvol:" << find[j] << " ";
                cout << "Vstrechaetsa:" << (n ) << " "
                    << "Ego chastota v stroke:" << (100.0*(n )) / p << "%" << endl;
            }
        }
 
    cout << "obwee kolichestvo simvolov : " << p;
 
    system("pause");
    return 0;
}
1
Glebordan
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 37
09.07.2014, 16:27  [ТС] #3
Это конечно приятно, но так и я могу. Ты ведь просто приписал строковый индекс к массиву и подредактировал потом немного, но проблемы ты этим не решил
0
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
09.07.2014, 16:35 #4
как не решил?!
Цитата Сообщение от Glebordan Посмотреть сообщение
сделать так чтобы частоты символом считались для всего текста, а не для строки отдельно
ну программа считает частоты символов для всего текста?
0
Glebordan
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 37
09.07.2014, 16:40  [ТС] #5
Ты ведь создаёшь динамический массив, там нужно освобождать память. Просто если ты хотел на это намекнуть, то спасибо

Добавлено через 1 минуту
Чувак ты молодец, прости что бочку на тебя катил... там надо было чуть-чуть подправить
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
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
using namespace std;
 
int main()
{
 
    int i, j, n, len = 0, m, p = 0, y;
 
 
    char find[1000] = { 0 };
    char *sub = NULL;
    cout << "Vvedite kolichestvo strok:";
    cin >> m;
    char text[10][1000];
    j = 0;
    for (y = 0; y <= m; y++)
    {
        cin.getline(text[y], 999);
        len = strlen(text[y]);
        p += len;
 
        for (i = 0; text[y][i] != '\0'; i++)
        {
            if (!strchr(find, text[y][i]))
            {
                find[j] = text[y][i];
                j = j + 1;
            }
        }
    }
    bool flag;
 
    for (j = 0; find[j] != '\0'; j++)
    {
        flag = false;
        n = 0;
        for (y = 0; y <= m; y++)
        {
            if ((sub = strchr(text[y], find[j])))
            {
                flag = true;
                while (sub != NULL)
                {
                    n++;
                    sub = strchr(sub + 1, find[j]);
                }
 
 
            }
        }
        if (flag)
        {
 
            cout << "Simvol:" << find[j] << " ";
            cout << "Vstrechaetsa:" << (n) << " "
                << "Ego chastota v stroke:" << (100.0*(n)) / p << "%" << endl;
        }
    }
 
    cout << "obwee kolichestvo simvolov : " << p;
 
    system("pause");
    return 0;
}
0
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
09.07.2014, 16:45 #6
ты опять неправильно понял
C++
1
2
cout << "Vvedite kolichestvo strok:";
    cin >> m;
здесь ты задаешь размер массива
то есть сколько строк у тебя будет в тексте
если не знаешь скока строк то лучше std::vector вместо массива использовать
0
Glebordan
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 37
09.07.2014, 16:48  [ТС] #7
Да ну... просто компилятор мне говорит, что надо освобождать память Да и я на сколько помню лекции и практики это динамический массив и для него надо место освободить Т.к. компилятор заранее не знат сколько места надо под массив Если я что путаю то поправь меня
0
Kerry_Jr
Модератор
Эксперт PHP
2206 / 2002 / 701
Регистрация: 14.05.2014
Сообщений: 5,865
Записей в блоге: 1
Завершенные тесты: 5
09.07.2014, 17:04 #8
Glebordan, если поможет
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
#include <iostream>
#include <windows.h>
#include <cstring>
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int symbol[256] = {0};
    char text[1000];
    int count = 0, n;
    std::cout << "Введите количество строк: ";
    std::cin >> n;
    std::cin.ignore();
    for (int i = 0; i < n; i++)
    {
        std::cin.getline(text, 999);
        for (int j = 0; j < strlen(text); j++)
            symbol[(unsigned char)text[j]]++;
    }
    for (int i = 0; i < 256; i++)
    {
        if (symbol[i] != 0)
            std::cout << "Символ '" << (unsigned char)i << "' встречается в тексте " << symbol[i] << " раз" << std::endl; 
    }
    
    return 0;
}
2
Glebordan
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 37
09.07.2014, 17:12  [ТС] #9
Нет, больше не надо, предыдущий вариант работает, если ввести констану Но и за твой ответ спасибо
0
09.07.2014, 17:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2014, 17:12
Привет! Вот еще темы с ответами:

Есть код программы на вычисление количества слов, как изменить условие? - C++
Есть код программы, как изменить условие, чтобы вычисляло только количество слов, которые заканчиваются на букву а? #include &lt;iostream&gt; ...

Как преобразовать файл в биты (в нули и единицы), чтобы потом можно было его зашифровать в код Грея? - C++
Добрый день всем! У меня к вам несколько вопросов, которые касаются следующего: В институте дали задание сделать программу которая...

Код склеивания строк, нужно поправить код соединения строк с запятыми для Excel - VBA
Есть красивый код но в нем учитывается и пустые строки для соединения и получается не красиво соединение с двумя запятыми как не...

Алгоритм и структура для поиска большого количества строк в другом массиве строк - Алгоритмы
Здравствуйте! Я решаю следующую задачу: Есть файл со &quot;строками&quot; (средняя длина которых 40-50 символов) и таких строк порядка 100000....


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

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

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