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

Программа по подсчету арифметических знаков - C++

Восстановить пароль Регистрация
 
Оксана 1234
 Аватар для Оксана 1234
4 / 4 / 0
Регистрация: 10.04.2013
Сообщений: 158
16.04.2013, 18:34     Программа по подсчету арифметических знаков #1
Ввести ленту произвольной длины, которую трактовать как арифметическое выражение, содержащие идентификаторы переменных, константы, знаки арифметических операций и скобки. Отдельные конструкции могут быть отделены одним или несколькими пробелами. Вывести информацию о частоте использования арифметических операций в данном выражении (в первом столбце символ операции, во втором - частоту использования).
Помогите, пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2013, 18:34     Программа по подсчету арифметических знаков
Посмотрите здесь:

C++ Классы для арифметических операций с большими числами (целые числа более 10 знаков)
Вычисление арифметических выражений C++
C++ Программа выполнения арифметических действий с очень большим целыми числами
Программа выводит на экран предложения, содержащие максимальное количество знаков пунктуации C++
C++ Определить количество вхождений строки из n знаков в строку из k знаков
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
16.04.2013, 22:29     Программа по подсчету арифметических знаков #2
Оксана 1234,

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
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
 
class Arithmetic{
    private:
        vector<pair<char, int> > coll;
 
    public:
        Arithmetic(string _str){
            for(unsigned i = 0; i < _str.size(); ++i)
                coll.push_back(make_pair(_str[i], 0));
        }
 
        void get_operation(){
            for_each(coll.begin(), coll.end(), ptr_fun(Arithmetic::print));
        }
 
        static  
        void print(pair<char, int> op){
            cout << op.first << ": " << op.second << endl;
        }
 
        void operation(string _str){
            for(string::size_type i = 0; i < _str.size(); ++i)
                for(vector<pair<char, int> >::size_type j = 0; j < coll.size(); ++j)
                        if(_str[i] == coll[j].first)
                            ++coll[j].second;
        }
};
 
int main()
{
    string operation("+-*/%");
    string str("2 + 4 * 7 / 19 % 22 + 7 - 41 / 152");
 
    Arithmetic op(operation);
    op.operation(str);
    op.get_operation();
 
    cout << "\n\n";
    return 0;
}
Оксана 1234
 Аватар для Оксана 1234
4 / 4 / 0
Регистрация: 10.04.2013
Сообщений: 158
17.04.2013, 00:13  [ТС]     Программа по подсчету арифметических знаков #3
Извините но большенство знаков я просто не знаю, потому что мы еще такого не проходили.
Можно как то попроще.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
17.04.2013, 08:43     Программа по подсчету арифметических знаков #4
Оксана 1234, вот другой, вариант, могу объяснить, но самое простое тогда уже в цикле проходите и сравнивайте элементы, но это извините конечно детский сад, так что вот

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
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
 
void print(pair<char, int> &op){
    cout << op.first << ": " << op.second << endl;
}
 
void Arithmetic(vector<pair<char, int> > &_coll, string &_str){
    typedef vector<pair<char, int> > MyVec;
    typedef string Str;
 
    for(Str::size_type i = 0; i < _str.size(); ++i)
        for(MyVec::size_type j = 0; j < _coll.size(); ++j)
            if(_coll[j].first == _str[i])
                ++_coll[j].second;
 
    for_each(_coll.begin(), _coll.end(), print);
}
 
int main()
{
    string operation("+-*/%");
    string str("2 + 4 * 7 / 19 % 22 + 7 - 41 / 152");
 
    vector<pair<char, int> > coll;
    for(unsigned i = 0; i < operation.size(); ++i)
        coll.push_back(make_pair(operation[i], 0));
 
    Arithmetic(coll, str);
 
    cout << "\n\n";
    return 0;
}
Оксана 1234
 Аватар для Оксана 1234
4 / 4 / 0
Регистрация: 10.04.2013
Сообщений: 158
16.05.2013, 23:01  [ТС]     Программа по подсчету арифметических знаков #5
Это не совсем правильно, но доредагувавшы возможно что-то путное выйдет. Спасибо!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#define _USE_MATH_DEFINES
#define USE_CRT_SECURE_NO_WARNING
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
 const int size=100;
using namespace std;
void main()
{int m=0;
char vuraz [size];
cout<<"Vvedit vuraz: ";cin>>vuraz;
int k=strlen(vuraz);
for (int j=0; j<=k; j++)
{
char znaku[5] ={'+','-','/','%','*'};
for (int i=0; i<5; i++)
{if(znaku[i]=vuraz[j])
{j++; m++;cout <<"kilkist "<<znaku[i]<<m;}}
}
}
Оксана 1234
 Аватар для Оксана 1234
4 / 4 / 0
Регистрация: 10.04.2013
Сообщений: 158
14.10.2013, 19:40  [ТС]     Программа по подсчету арифметических знаков #6
Готовый ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#define _USE_MATH_DEFINES
#define USE_CRT_SECURE_NO_WARNING
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
 const int size=100;
using namespace std;
void main()
{
    int m[5] = {0,0,0,0,0};
char vuraz [size];
cout<<"Vvedit vuraz: ";cin>>vuraz;
int k=strlen(vuraz);
char znaku[5] ={'+','-','/','%','*'};
for (int j=0; j<=k; j++)
{
    for (int i=0; i<5; i++)
        {if(znaku[i]==vuraz[j])
            {m[i]++;}}
}for(int i=0; i<5;i++)
{cout <<"Kilkist "<<znaku[i]<<"\t"<<m[i]<<"\n";}}
Yandex
Объявления
14.10.2013, 19:40     Программа по подсчету арифметических знаков
Ответ Создать тему
Опции темы

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