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

C++ и STL (раскритикуйте мою первую прогу) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Строки http://www.cyberforum.ru/cpp-beginners/thread116119.html
Всем привет! Есть такая задача: в последовательности символов найти цифры и посчитать их сумму. Делаю через ф-цию strpbrk ... - но что-то не сходится ... Кто-нибудь может помочь? #include <iostream.h> #include <string.h> int main () { int sum=0; char *str = new char ; char *x;
C++ Телефонная книга В общем, ребят, мне надо сделать подобие телефонной книги. Для записи контактов определить структуру: {Фамилия,Имя,Адрес,Номер телефона}. Так вот, как работать со структурами я уже знаю, я могу записать структуру в массив и потом использовать её, могу сделать динамический массив структур, ну и т.д. Проблема у меня в том, что я не могу разобраться, как записать структуру или массив структур в... http://www.cyberforum.ru/cpp-beginners/thread116089.html
C++ Команда выбора
Ввести номер месяца. Вывести количество дней в нем.
C++ Лишние символы в строке
Составить и отладить программу, которая в заданном предложении находит все пары слов, где одно является обращением другого, т.е. состоит из тех же букв, расположенных в обратном порядке. Составить строку из таких пар и вывести на экран в следующем виде: abc – cba прим1 – 1мирп 123 – 321 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #define N 128
C++ найти минимальное количество символов в слове http://www.cyberforum.ru/cpp-beginners/thread116038.html
мне задан Типовой расчет. Обработка символьной информации. на С++ в графическом интерфейсе надо найти минимальное количество символов в слове. помогите пожалуйста. Спасибо.:sorry:
C++ вычисление пи Не могу понять как написать эту программу( помогите Напишите программу, которая вычисляет число л ("Пи") с заданной пользователем точностью. Для вычисления значения числа л воспользуйтесь тем, что значение частичной суммы ряда: 1-1/3+1/5-1/7+1/9-... при суммировании достаточно большого количества членов приближается к значению л/4. С клавиатуры введите точность вычислений t, например t=0.00001,... подробнее

Показать сообщение отдельно
KrisV
0 / 0 / 0
Регистрация: 31.03.2010
Сообщений: 36
13.04.2010, 11:13     C++ и STL (раскритикуйте мою первую прогу)
Много всего делал на си а вот на С++ кроме калькулятора в Builder ничего. Вот написал такую прогу, которая анализирут текстовый файл и выдает информацию какое слово сколько раз встречается в тесте.
Принцип следующий - обявляется Dictionary в котором "массив", "индексы" которого это слова, а значения - это как часто они встречаются в тексте. В конце этот "массив" печатается.
Алгоритм вычитан в интернете.

Прога работает. Но, просьба к участникам, посмотреть код и раскритиковать, что где неправильно или неоптимально ...т.е. что где не есть хорошо. Я использовал STL т.к. хотелось посмотреть что это и как с ним работать.
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
71
72
73
74
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>
 
using namespace std;
 
class Pair {
    friend class Dictionary;
public:
    Pair(string str) {index = str, val = 0;};
    void operator++(int) {val++;};
private:
    string index;
    int val;
};
 
typedef vector<Pair>::iterator  it_t;
 
class Dictionary {
public:
    Dictionary() {arr.clear();};
    void print();
    it_t my_find(string index);
    Pair& operator[] (string index);
private:
    vector<Pair>    arr;
};
 
void Dictionary::print()
{
    for (it_t i = arr.begin(); i != arr.end(); i++)
        cout << "Word: " << (*i).index << "\t\t" << (*i).val << endl;
}
 
it_t Dictionary::my_find(string index)
{
    for (it_t i = arr.begin(); i != arr.end(); i++)
        if ((*i).index == index)
            return i;
    return arr.end();
}
 
Pair& Dictionary::operator[] (string index)
{
    it_t i = my_find(index);
 
    if (i != arr.end())
        return *i;
    else {
        Pair *p = new Pair(index);
        arr.push_back(*p);
        delete p;
        return arr.back();
    }
 
};
 
int main() {
    Dictionary dict;
    string word;
 
    ifstream text_file("words.txt", ifstream::in);
    while (text_file.good()) {
        word.clear();
        text_file >> word;
        dict[word]++;
    }
    text_file.close();
    dict.print();
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru