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

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

Восстановить пароль Регистрация
 
Glebordan
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 36
09.07.2014, 12:06     Как преобразовать код для n-ого количества строк? #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
#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;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2014, 12:06     Как преобразовать код для n-ого количества строк?
Посмотрите здесь:

Массив строк преобразовать в строку C++
C++ Есть код программы на вычисление количества слов, как изменить условие?
C++ Чтение определенного количества строк
Как инициализировать глобальную переменную в зависимости от количества строк в файле C++
Как преобразовать файл в биты (в нули и единицы), чтобы потом можно было его зашифровать в код Грея? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
09.07.2014, 15:16     Как преобразовать код для n-ого количества строк? #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;
}
Glebordan
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 36
09.07.2014, 16:27  [ТС]     Как преобразовать код для n-ого количества строк? #3
Это конечно приятно, но так и я могу. Ты ведь просто приписал строковый индекс к массиву и подредактировал потом немного, но проблемы ты этим не решил
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
09.07.2014, 16:35     Как преобразовать код для n-ого количества строк? #4
как не решил?!
Цитата Сообщение от Glebordan Посмотреть сообщение
сделать так чтобы частоты символом считались для всего текста, а не для строки отдельно
ну программа считает частоты символов для всего текста?
Glebordan
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 36
09.07.2014, 16:40  [ТС]     Как преобразовать код для n-ого количества строк? #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;
}
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
09.07.2014, 16:45     Как преобразовать код для n-ого количества строк? #6
ты опять неправильно понял
C++
1
2
cout << "Vvedite kolichestvo strok:";
    cin >> m;
здесь ты задаешь размер массива
то есть сколько строк у тебя будет в тексте
если не знаешь скока строк то лучше std::vector вместо массива использовать
Glebordan
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 36
09.07.2014, 16:48  [ТС]     Как преобразовать код для n-ого количества строк? #7
Да ну... просто компилятор мне говорит, что надо освобождать память Да и я на сколько помню лекции и практики это динамический массив и для него надо место освободить Т.к. компилятор заранее не знат сколько места надо под массив Если я что путаю то поправь меня
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 574
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
09.07.2014, 17:04     Как преобразовать код для n-ого количества строк? #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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2014, 17:12     Как преобразовать код для n-ого количества строк?
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Glebordan
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 36
09.07.2014, 17:12  [ТС]     Как преобразовать код для n-ого количества строк? #9
Нет, больше не надо, предыдущий вариант работает, если ввести констану Но и за твой ответ спасибо
Yandex
Объявления
09.07.2014, 17:12     Как преобразовать код для n-ого количества строк?
Ответ Создать тему
Опции темы

Текущее время: 01:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru