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

Нужно вынести часть программы в отдельный модуль - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Однозвязный список через template http://www.cyberforum.ru/cpp-beginners/thread887472.html
Помогите разобрать код в тех местах где я поставил //???? . Код не мой, и указатели я не очень хорошо понимаю. #include <iostream> using namespace std; /////////////////////////////////////////// template <class T> struct element { element* next;
C++ Классы: составить описание объектного типа Matrix (инициализации единичной, квадратных матриц, сложение, транспонирование, вычисление определителя) Составить описание объектного типа Matrix, обеспечивающего инициализации единичной матрицы, квадратных матриц, сложение матриц, транспонирование, вычисление определителя матрицы. http://www.cyberforum.ru/cpp-beginners/thread887469.html
C++ Получить строку, в которой наибольшее число знаков препинания
Дан текстовый файл. Получить строку, в которой наибольшее число знаков препинания.
Подключение статической библиотеки (libxls) C++
Здравствуйте, недавно столкнулся с необходимостью читать из .xls файла, нашел для этого библиотеку libxls. В их readme написано, что они "A multiplatform, C/C++ library for parsing Excel(TM) files." (то есть я так понял что в винду в проект с плюсами это запихнуть можно), однако в архиве с названием "Win32 binary: libxls-0.2.0-win32.tar.gz" (судя по всему для винды?) лежат хедеры и файл .a,...
C++ где моду прочитать о деревьях с нуля? http://www.cyberforum.ru/cpp-beginners/thread887463.html
где моду прочитать о деревьях с нуля?
C++ Как правильно сделать функцию? (Из Паскаля в С++) Добрый день, уважаемые программисты! Подскажите пожалуйста вот такое дело: есть код на Турбопаскале, и надо всё это дело в С++. Вроде бы переводила, переводила, но вот выплыл такой кусок кода и я не знаю что делать: procedure Delete (X: string; var PNode: TPtrNode; var H: boolean); //выполняет поиск удаляемого узла и его замену var Q: TPtrNode; // сохраняет указатель на удаляемый узел подробнее

Показать сообщение отдельно
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
04.06.2013, 22:39     Нужно вынести часть программы в отдельный модуль
Lilechka, код плохой. Намешано всё в кучу и FILE* и fstream, cout и printf. По-хорошему, надо всё переписать. Но если Вам нужно просто разбить на модули, возможно, подойдет такой вариант:

main.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include "info.h"
 
using namespace std;
 
int main() {
    setlocale(LC_ALL,"Rus"); // включаем в консоли русский язык
    const int MAX_PATH = 256; // константа, содержащая максимальную длину имени
    char *fn1 = new char[MAX_PATH]; // строка для хранения имени файла ввода
    cout << "Введите файл для чтения: ";
    cin >> fn1;
    FILE *f = NULL;
    f = fopen(fn1, "r"); // открываем файл для чтения
    if (f == NULL) {
        printf("Файл не найден: \"%s\"\n", fn1);
    } else {
        func( fn1, f );
    }
    return 0;
}


info.cpp
Кликните здесь для просмотра всего текста
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 "info.h"
#include <fstream>
#include <map>
 
void info( const char* fn1, FILE* f )
{
    map<char, int> letter; // создаем контейнер(ассоциативный массив) letter; char - буква, int - сколько раз встречается в тексте
    ifstream input(fn1);                // считывать файл по одному символу
    while (!input.eof())                //пока не конец файла, цикл
        if (input.peek() != EOF)        //если следующий символ во входном потоке не равен концу файла
            letter[input.get()]++;      //плюсуем соответсвующий счетчик
    int res=0;                          //с помощью res считается общее количество символов в тексте
    char c;
    while ((c = fgetc(f)) != EOF) {
        if (c != 10 && c != 13) {
            res++;
        }
    }
    input.close();                      //закрываем входной поток
    cout << "Эти символы встречаются в тексте столько раз" << endl;
    for (map<char, int>::iterator it = letter.begin(); it != letter.end(); it++) {  /*итератор типа map<char,int> (то есть указатель) 
                                                                                    инициализируем адресом первого элемента. 
                                                                                    Пока итератор не равен адресу последнего элемента, итератор++ */
        cout << it->first << '=' << it->second << endl; // берем указатель, разыменовываем его и обращаемся к элементу first структуры
        double chastota = ((double) (it->second)/res)*1.00; // считаем частоту встречаемости символа
        double countInf=-(chastota*(log(chastota)/log(2))); // считаем количество информации для символа
        cout << "Частота встречаемости символа " << it->first << " = ";
        printf("%1.7f", chastota);
        cout << endl;
        cout << "Количество информации = ";
        printf("%1.3f", countInf);
        cout << " бит" << endl;
    }
    cout << "Всего уникальных символов в тексте: " << letter.size() << endl;
    cout << "Всего символов в тексте: " << res << endl;
}


info.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
void info( const char* fn1, FILE* f );
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru