Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Лысков Игорь Витальевич
Статус: Профессионал
Рейтинг: 89
∙ повысить рейтинг >>
Micren
Статус: Студент
Рейтинг: 74
∙ повысить рейтинг >>
Person
Статус: 3-й класс
Рейтинг: 54
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 1260
от 13.03.2009, 12:02

Администратор:Калашников О.А.
В рассылке:Подписчиков: 493, Экспертов: 46
В номере:Вопросов: 12, Ответов: 15

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 161838: Здравствуйте, уважаемые эксперты <img src="http://rusfaq.ru/images/Forum/5.gif" border="0"> Помогите пожалуйста с задачей на С (си): через файл открыть текст и удвоить в тексте каждую литеру. В приложении прикрепляю файл такой же уже решённой задач...


Вопрос № 161854: Доброй ночи! Уважаемы эксперты! Помогите пожалуйста в решени задач! Буду очень признателен и благодарен! 1) Дано натуральное число n. Получить последовательность b1, b2,...,bn, где при i=1,2...,n. Значение bi (b i-ое) равно: i(1/1!+2/2!+....
Вопрос № 161865: Выложите, пожалуйста, компилятор "IAR C Compiler"....
Вопрос № 161874: В заданном одномерном массиве поменять местами соседние элементы, стоящие на четных местах с элементами стоящими на нечетных местах....
Вопрос № 161892:< /a> строка содержит произвольный русский текст. Проверить каких букв в нем больше гласных или согласных....
Вопрос № 161921: Здраствуйте, дорогие эксперты! Мне нужно очень ваша помощь. Помогите решить задачи по динамическому программированию. Первая задача: Анаграммер Анаграммер — специальное устройство для получения из слова его анаграмм (то есть сл...
Вопрос № 161973: Здравствуйте, уважаемые эксперты. Помогите пожалуйста создать классы для обработки текстовых файлов с методами для выделения предложений, слов, подсчета числа слов, числа предложений, числа букв, согласных, гласных, чисел, точек, запятых и других зна...
Вопрос № 162024: Здраствуйте уважаемые эксперты! У меня вопрос по C++ builder-у. (6) подскажите полжалуйста как нужно написать обработчик чтобы вывести массив в listbox....
Вопрос № 162053 : Доброго времени суток, уважаемые эксперты. Помогите пожалуйста с такой задачей: реализовать двоичный поиск по числовому ключу в списке. Благодарен Вам за помощь....
Вопрос № 162054: Здравствуйте. Задаю вопрос здесь, т.к. эта тема на мой взгляд ближе к СС++ Я не могу откомпилировать qt-win-opensource-4.4.3-mingw. запускаю автоматическую компиляцию. результат ниже. делаю это естественно под windows Зар...
Вопрос № 162194: Привет всем! У меня тут возникла проблема с вычислением больших чисел: ((2^510)^(2^511))(mod(2^512). По возможности как пишется исходный код? Всем заранее благодарен!...
Вопрос № 162215: Здравствуйте Уважаемые эксперты!!! Необходима ваша помощь в исправлении программы(код приведен ниже, программу делал на с++ в Visual studio) Задание: Класс “Записная книжка” с полями: ФИО, номер телефона, день рождения (массив и з 3-х чисел). <b...

Вопрос № 161.838
Здравствуйте, уважаемые эксперты Помогите пожалуйста с задачей на С (си): через файл открыть текст и удвоить в тексте каждую литеру. В приложении прикрепляю файл такой же уже решённой задачи, но на ЯП Pascal (не знаю, может чем-то это поможет). Заранее благодарен

Приложение:

Отправлен: 02.03.2009, 18:01
Вопрос задал: Kolyablinov (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Digitall
Здравствуйте, Kolyablinov!
Смотрите, проверяйте. В "Microsoft Visual Studio 2008" компилируется без ошибок.

Приложение:

Ответ отправил: Digitall (статус: 1-й класс)
Ответ отправлен: 03.03.2009, 09:54

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 244925 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 161.854
    Доброй ночи! Уважаемы эксперты!
    Помогите пожалуйста в решени задач!
    Буду очень признателен и благодарен!
    1) Дано натуральное число n. Получить последовательность b1, b2,...,bn, где при i=1,2...,n. Значение bi (b i-ое) равно:
    i(1/1!+2/2!+...+1/i!)
    2) Дана квадратная матрица A порядка m. Получить матрицы: --смотреть рисунок--
    рисунок
    3) Даны действительные числа x1,y1,x2,y2,...,x10,y10. Найти периметр десятиугольника, вершины которого имеют соответственно координаты (x1,y1),(x2,y2),...,(x10,y10). (Определить процедуру вычисления расстояния между двумя точками, заданными своими координатами).
    И можно пожалуйста с подробным объяснением всего!
    И если вас не затруднит то составить блок-хемы!
    Заранее огромное вам спасибо!
    Пожалуйсто помогите мне!
    Отправлен: 02.03.2009, 21:00
    Вопрос задал: Дмитрий Васильев (статус: Посетитель)
    Всего ответов: 2
    Мини-форум вопроса >>> (сообщений: 6)

    Отвечает: Абельхарисов Руслан/Marked One
    Здравствуйте, Дмитрий Васильев!
    Задача №1:
    Код:

    //Код проверялся в Microsoft Visual C++ 2008 Express Edition
    #include "stdafx.h"
    #include "iostream"

    using namespace std;

    int _tmain(int argc, _TCHAR* argv[])
    {
    int n;
    int f = 1;
    double result = 0;
    cout << "n: ";
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
    f *= i;
    result += (double)i / f;
    cout << result << " ";
    }
    cout << endl;
    system("PAUSE");
    return 0;
    }

    Задача №3
    Код:
    //Код проверялся в Microsoft Visual C++ 2008 Express Edition
    #include "stdafx.h"
    #include "iostream"
    #include "math.h"

    using namespace std;

    //Функция, возвращающая растояние между точками
    double rast(double x1, double y1, double x2, double y2)
    {
    return sqrt((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1));
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
    //Кол-во углов в многоугольнике
    const int n = 10;
    //Массивы координат
    double x[n];
    double y[n];
    //Периметр
    double p = 0;
    //Получаем координаты вершин многоугольника
    for (int i = 0; i < n; i++)
    {
    printf("x%d, y%d: ", i + 1, i + 1);
    cin >> x[i] >> y[i];
    }
    //Суммируем растояния между точками
    for (int i = 0; i < n - 1; i++)
    {
    p += rast(x[i], y[i], x[i + 1], y[i + 1]);
    }
    //Растояние между последней и первой точкой
    p += rast(x[0], y[0], x[n - 1], y[n - 1]);
    //Результат
    cout << "result: " << p << endl;
    system("PAUSE");
    return 0;
    }

    Удачи!!!
    ---------
    Нам не дано предугадать, как слово наше отзовется (C) Тютчев
    Ответ отправил: Абельхарисов Руслан/Marked One (статус: Практикант)
    Ответ отправлен: 02.03.2009, 22:00

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 244890 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Micren
    Здравствуйте, Дмитрий Васильев!
    Решение задачи 2. VC++
    Код:

    #include <limits>
    #include <locale>
    #include <iostream>
    #include <iomanip>
    #include <stdexcept>
    #include <string>

    using namespace std;

    // Класс квадратных матриц
    class SquareMatrix
    {
    public:
    // Конструктор
    explicit SquareMatrix(unsigned int dimension);
    SquareMatrix(const SquareMatrix& matrix);
    // Деструктор
    ~SquareMatrix(void);
    // Оператор присваивания
    const SquareMatrix& operator=(const SquareMatrix& matrix);
    // Сложение матриц
    SquareMatrix operator+(const SquareMatrix& matrix) const;
    // Вычитание матриц
    SquareMatrix operator-(const SquareMatrix& matrix) const;
    // Умнож ение матрицы на число
    SquareMatrix operator*(double value) const;
    friend SquareMatrix operator*(double value,const SquareMatrix& matrix);
    // Возвращает элемент по индексу
    double& Item(unsigned int subscript1, unsigned int subscript2) const;
    // Возвращает размер
    unsigned int Dimension(void) const;
    // Транспонирование матрицы
    static SquareMatrix Transpose(const SquareMatrix& matrix);
    // Оператор вывода
    friend wostream& operator<<(wostream& stream,SquareMatrix matrix);
    protected:
    // Размерность
    unsigned int _dimension;
    // Указатель на матрицу
    double* _matrix;
    };

    // Шаблонная функция для ввода данных
    template<class T>
    T InputNum(wstring msg)
    {
    while(true)
    {
    T data;
    wcout<<msg;
    wcin.setf(ios::skipws);
    wcin>>data;
    if(wcin.fail())
    {
    wcout<<L"Ошибочный ввод"<<endl;
    wcin.clear();
    wcin.ignore(numeric_limits& lt;streamsize>::max(),L' ');
    }
    else
    {
    wcin.ignore(numeric_limits<streamsize>::max(),L' ');
    return data;
    }
    }
    }

    int main()
    {
    locale::global(locale("rus_rus.866"));
    try
    {
    // Вводим размерность
    unsigned int dim=InputNum<unsigned int>(L"Введите размерность матрицы:");
    SquareMatrix A(dim);
    // Вводим матрицу
    for(unsigned int i=0;i<dim;i++)
    {
    for(unsigned int j=0;j<dim;j++)
    {
    wchar_t buf[11];
    _itow_s(i+1,buf,10);
    wstring quest=L"Введите элемент матрицы [";
    quest=quest+buf+L"][";
    _itow_s(j+1,buf,10);
    quest=quest+buf+L"]:";
    A.Item(i,j)=InputNum<double>(quest);
    }
    }
    wcout<<L"Введена следующая матрица:"<<endl;
    wcout<<A<<endl;
    wcout<<L"0.5*(A+Trans(A)):"<<endl<<(0.5*(A+SquareMatrix::Transpose(A)))<<endl;
    wcout<<L"(A-Trans(A))*0.5:"<<endl<<((A-SquareMa trix::Transpose(A))*0.5)<<endl;
    }
    catch (exception e)
    {
    cout<<"Исключение:"<<e.what()<<endl;
    }
    system("PAUSE");
    return 0;
    }

    wostream& operator<<(wostream& stream,SquareMatrix matrix)
    {
    double* ptr=matrix._matrix;
    for(unsigned int i=0;i<matrix._dimension;i++)
    {
    for(unsigned int j=0;j<matrix._dimension;j++)
    {
    stream<<setw(9)<<*ptr++<<L' ';
    }
    stream<<endl;
    }
    return stream;
    }

    // Конструктор
    SquareMatrix::SquareMatrix(unsigned int dimension)
    : _dimension(dimension)
    , _matrix(0)
    {
    _matrix=new double[_dimension*_dimension];
    }

    // Деструктор
    SquareMatrix::~SquareMatrix(void)
    {
    if(_matrix)delete []_matrix;
    }

    // Конструктор копирования
    SquareMatrix::SquareMatrix(const SquareMatrix& matrix)
    :_dimension(matrix._dimension)
    ,_matrix(0)
    {
    double * src=matrix._matrix,
    *dst=_matrix=new double[_dimension*_dimension],
    *end=matrix._matrix+matrix._dimension*matrix._dimension;
    while(src!=end)
    *dst++=*src++;
    }

    // Оператор присваивания
    const SquareMatrix& SquareMatrix::operator=(const SquareMatrix& matrix)
    {
    if(this!=&matrix)
    {
    if(_matrix)delete []_matrix;
    _dimension=matrix._dimension;
    double *src=matrix._matrix,
    *dst=_matrix=new double[_dimension*_dimension],
    *end=matrix._matrix+matrix._dimension*matrix._dimension;
    while(src!=end)
    *dst++=*src++;
    }
    return *this;
    }

    // Возвращает элемент по индексу
    double& SquareMatrix::Item(unsigned int subscript1, unsigned int subscript2) const
    {
    if(subscript1<_dimension&&subscript2<_dimension)
    {
    return _matrix[subscript1*_dimension+subscript2];
    }
    else throw out_of_range("Индекс вышел за пределы матрицы");
    }

    // Возвращает размер
    inline unsig ned int SquareMatrix::Dimension(void) const
    {
    return _dimension;
    }

    // Транспонирование матрицы
    SquareMatrix SquareMatrix::Transpose(const SquareMatrix& matrix)
    {
    SquareMatrix res(matrix._dimension);
    for(unsigned int i=0;i<matrix._dimension;i++)
    {
    for(unsigned int j=0;j<matrix._dimension;j++)
    {
    res.Item(i,j)=matrix.Item(j,i);
    }
    }
    return res;
    }

    // Сложение матриц
    SquareMatrix SquareMatrix::operator+(const SquareMatrix& matrix) const
    {
    if(_dimension==matrix._dimension)
    {
    SquareMatrix res(_dimension);
    for(unsigned int i=0;i<_dimension;i++)
    {
    for(unsigned int j=0;j<_dimension;j++)
    {
    unsigned int off=i*_dimension+j;
    res._matrix[off]=_matrix[off]+matrix._matrix[off];
    }
    }
    return res;
    }
    else throw out_of_range("Сложение матриц допускается только для матриц с равными размерностями");
    }

    // Вычитание матр иц
    SquareMatrix SquareMatrix::operator-(const SquareMatrix& matrix) const
    {
    if(_dimension==matrix._dimension)
    {
    SquareMatrix res(_dimension);
    for(unsigned int i=0;i<_dimension;i++)
    {
    for(unsigned int j=0;j<_dimension;j++)
    {
    unsigned int off=i*_dimension+j;
    res._matrix[off]=_matrix[off]-matrix._matrix[off];
    }
    }
    return res;
    }
    else throw out_of_range("Сложение матриц допускается только для матриц с равными размерностями");
    }

    // Умножение матрицы на число
    SquareMatrix SquareMatrix::operator*(double value) const
    {
    SquareMatrix res(*this);
    double *ptr=res._matrix,
    *end=res._matrix+res._dimension*res._dimension;
    while(ptr!=end)
    {
    *ptr=*ptr*value;
    ptr++;
    }
    return res;
    }
    SquareMatrix operator*(double value,const SquareMatrix& matrix)
    {
    return matrix.operator *(value);
    }

    Пример работы программы:
    < div style="margin:15px; margin-top:10px">
    Код:

    Введите размерность матрицы:3
    Введите элемент матрицы [1][1]:1
    Введите элемент матрицы [1][2]:2
    Введите элемент матрицы [1][3]:3
    Введите элемент матрицы [2][1]:4
    Введите элемент матрицы [2][2]:5
    Введите элемент матрицы [2][3]:6
    Введите элемент матрицы [3][1]:7
    Введите элемент матрицы [3][2]:8
    Введите элемент матрицы [3][3]:9
    Введена следующая матрица:
    1 2 3
    4 5 6
    7 8 9

    0.5*(A+Trans(A)):
    1 3 5
    3 5 7
    5 7 9

    (A-Trans(A))*0.5:
    0 -1 -2
    1 0 -1
    2 1 0
    Ответ отправил: Micren (статус: Студент)
    Ответ отправлен: 06.03.2009, 17:45

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 245221 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 161.865
    Выложите, пожалуйста, компилятор "IAR C Compiler".
    Отправлен: 03.03.2009, 00:16
    Вопрос задал: Kostya1 (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Dr_Andrew
    Здравствуйте, Kostya1!
    IAR C Compiler входит в состав IAR Embedded Workbench. 30-дневную оценочную версию продукта можно скачать на сайте производителя (версии отличаются в зависимости от типа процессора).
    Ответ отправил: Dr_Andrew (статус: Специалист)
    Ответ отправлен: 03.03.2009, 06:23

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 244912 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 161.874
    В заданном одномерном массиве поменять местами соседние элементы, стоящие на четных местах с элементами стоящими на нечетных местах.
    Отправлен: 03.03.2009, 07:15
    Вопрос задал: Ryabichko (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 1)

    Отвечает: Digitall
    Здравствуйте, Ryabichko!
    Предлагаю кусочек программы делающий то что вы хотели.
    Или вам все-таки нужно было полный текст, могу выложить и его.

    Приложение:

    Ответ отправил: Digitall (статус: 1-й класс)
    Ответ отправлен: 03.03.2009, 09:06

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 244923 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 161.892
    строка содержит произвольный русский текст. Проверить каких букв в нем больше гласных или согласных.
    Отправлен: 03.03.2009, 11:13
    Вопрос задал: Ryabichko (статус: Посетитель)
    Всего ответов: 2
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Hubbitus
    Здравствуйте, Ryabichko!
    Хм, натакой вопрсо помоему ответ банален - посчитать те и другие, и сравнить количество.
    Вы даже не написали на каком языке надо делать, поэтому о конкретных структурах говорить даже не буду.
    Чтобы определить гласная или согласная, думаю проще всего сделать массив (вектор, список, map если C++) одних и других, и просто проверять на вхождение.
    Ответ отправил: Hubbitus (статус: 3-й класс)
    Ответ отправлен: 03.03.2009, 15:01

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 244946 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Micren
    Здравствуйте, Ryabichko!
    Программа. VC++
    Код:

    #include <locale>
    #include <iostream>
    #include <string>

    using namespace std;

    bool isVowels(wchar_t ch)
    {
    return static_cast<wstring>(L"аеёиоуыэюя").find(towlower(ch))!=wstring::npos;
    }

    int main()
    {
    locale::global(locale("rus_rus.866"));
    wcout<<L"Введите произвольную текстовую строку:"<<endl;
    wstring str;
    wcin.setf(ios::skipws);
    getline(wcin,str);
    unsigned int vowels=0,
    consonants=0;
    for(wstring::const_iterator it=str.begin();it!=str.end();it++)
    {
    if(iswalpha(*it))
    {
    if(isVowels(*it))vowels++;
    else consonants++;
    }
    }
    wcout<&l t;L"Гласных:"<<vowels<<endl;
    wcout<<L"Согласных:"<<consonants<<endl;
    if(vowels>consonants)wcout<<L"Гласных больше";
    else if(vowels<consonants)wcout<<L"Гласных меньше";
    else wcout<<L"Гласных и согласных поровну";
    wcout<<endl;
    system("PAUSE");
    return 0;
    }

    Пример работы:
    Код:

    Введите произвольную текстовую строку:
    Это тестовая строка
    Гласных:8
    Согласных:9
    Гласных меньше
    Ответ отправил: Micren (статус: Студент)
    Ответ отправлен: 06.03.2009, 15:53

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 245217 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 161.921
    Здраствуйте, дорогие эксперты!
    Мне нужно очень ваша помощь.
    Помогите решить задачи по динамическому программированию.
    Первая задача:
    Анаграммер


    Анаграммер — специальное устройство для получения из слова его анаграмм (то есть слов, записанных теми же буквами, но в другом порядке). Это устройство умеет выполнять 2 операции:
    Взять очередную букву исходного слова и поместить ее в стек.
    Взять букву из стека и добавить ее в конец выходного слова.

    Стек — это хранилище данных, которое работает по принципу "первый пришел — последний ушел". Стек можно представить себе в виде пирамидки. Когда мы добавляем букву в стек, это соответствует тому, что на стержень пирамидки сверху мы надеваем кольцо, на котором написана соответствующая буква. Когда берем букву из стека, то это соответствует тому, что мы снимаем со стержня верхнее кольцо, и смотрим, какая буква на нем написана.

    Например, слово TROT в слово TORT может быть преобразовано ана граммером двумя различными последовательностями операций: 11112222 или 12112212.

    Напишите программу, которая по двум заданным словам вычисляет количество различных последовательностей операций анаграммера, которые преобразуют первое из этих слов во второе.
    Входные данные

    Первая строка входного файла INPUT.TXT содержит исходное слово, а вторая — слово, которое необходимо получить. Слова состоят только из заглавных латинских букв и имеют длину не более 50 символов. Оба слова имеют одинаковую длину. В этих строках не содержится пробелов.
    Выходные данные

    В первой строке выходного файла OUTPUT.TXT должно содержаться количество последовательностей операций анаграммера, с помощью которых можно преобразовать первое слово во второе.
    Примеры:
    1.
    input.txt:
    TROT
    TORT
    output.txt: 2
    2.
    input.txt:
    MADAM
    ADAMM
    output.txt: 4
    3.
    input.txt:
    LONG
    GONG
    output.txt: 0
    4.
    input.txt:
    AAAAAAAA
    AAAAAAAA
    ou tput.txt: 1430

    Вторая задача:

    Счастливые билеты


    Требуется вычислить количество N - значных счастливых билетов. Напомним, что билет называется счастливым, если сумма первой половины его цифр равна сумме другой его половины. Например, билет 564159 счастливый, т.к. 5+6+4=1+5+9.
    Входные данные

    В единственной строке входного файла INPUT.TXT записано натуральное четное число N (N ≤ 100) – количество цифр в билете.
    Выходные данные

    В единственную строку выходного файла OUTPUT.TXT нужно вывести одно целое число – количество N-значных счастливых билетов.
    Примеры:
    1. input.txt:4
    output.txt: 670
    2. input.txt: 6
    output.txt: 55252
    3. input.txt: 12
    output.txt: 3

    SPASIBO!!!
    Отправлен: 03.03.2009, 16:53
    Вопрос задал: Rusov Lev Nikolaevich (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 3)

    Отвечает: Micren
    Здравствуйте, Rusov Lev Nikolaevich!
    Вот решение задачи 2:
    Код:

    #include <fstream>
    #include <string>
    #include <vector>

    using namespace std;

    class longnum
    {
    private:
    typedef unsigned __int32 datatype;
    typedef unsigned __int64 extdatatype;
    typedef vector<datatype>::iterator itertype;
    typedef vector<datatype>::reverse_iterator ritertype;
    vector<datatype> _data;
    static const datatype div=1000000000;
    static const datatype num=9;
    public:
    longnum(datatype val=0)
    {
    _data.push_back(val);
    }
    longnum operator=(datatype val)
    {
    _data.clear();
    _data.push_back(val);
    return *this;
    }
    longnum operator*(longnum& val)
    {
    lo ngnum res;
    res._data.resize(_data.size()+val._data.size(),0);
    for(itertype valit=val._data.begin();valit!=val._data.end();valit++)
    {
    vector<datatype> tmpdata(_data.size()+val._data.size(),0);
    itertype tmpit=tmpdata.begin()+(valit-val._data.begin());
    datatype carry=0;
    extdatatype tmp;
    for(itertype it=_data.begin();it!=_data.end();it++,tmpit++)
    {
    tmp=static_cast<extdatatype>(*it)**valit+carry;
    *tmpit=tmp%div;
    carry=static_cast<datatype>(tmp/div);
    }
    *tmpit=carry;
    carry=0;
    for(itertype tmpit=tmpdata.begin(),resit=res._data.begin();tmpit!=tmpdata.end();tmpit++,resit++)
    {
    tmp=static_cast<extdatatype>(*tmpit)+*resit+carry;
    *resit=tmp%div;
    carry=static_cast<datatype>(tmp/div);
    }
    }
    return res;
    }
    const longnum& operator+=(longnum& val)
    {
    if(_data.size()<val._data.size())_data.resize(val._data.size() );
    datatype carry=0;
    itertype it1=_data.begin();
    for(itertype it2=val._data.begin();it2!=val._data.end();it1++,it2++)
    {
    extdatatype tmp=static_cast<extdatatype>(*it1)+*it2+carry;
    *it1=tmp%div;
    carry=static_cast<datatype>(tmp/div);
    }
    while(carry&&it1!=_data.end())
    {
    extdatatype tmp=static_cast<extdatatype>(*it1)+carry;
    *it1=tmp%div;
    carry=static_cast<datatype>(tmp/div);
    it1++;
    }
    if(carry)
    {
    _data.resize(_data.size()+1);
    _data[_data.size()-1]=carry;
    }
    return *this;
    }
    friend ostream& operator<<(ostream& stream,longnum val);
    };

    ostream& operator<<(ostream& stream,longnum val)
    {
    bool f=false;
    for(longnum::ritertype it=val._data.rbegin();it!=val._data.rend();it++)
    {
    if(!f)
    {
    if(*it)
    {
    f=true;
    stream<<*it;
    }
    }
    else
    {
    char buf[10];
    _itoa_s(*it,buf,10);
    string str=buf;
    while(str.length()<longnum::num)str="0"+str;
    stream<<str;
    }
    }
    if(!f)stream<<"0";
    return stream;
    };

    int main()
    {
    ifstream in("INPUT.TXT");
    ofstream out("OUTPUT.TXT");
    unsigned int N;
    in>>N;
    N>>=1;

    vector<vector<longnum>> S(N);
    for(unsigned int k=0;k<N;k++)
    {
    S[k]=vector<longnum>(9*N+1,0);
    if(k==0)
    {
    for(int i=0;i<=9;i++)S[k][i]=1;
    }
    else
    {
    for(unsigned int i=0;i<9*(k+1)+1;i++)
    {
    for(unsigned int j=0;j<=min(9u,i);j++)
    {
    S[k][i]+=S[k-1][i-j];
    }
    }
    }
    }
    longnum P=0;
    for(unsigned int i=0;i<=9*N;i++)
    P+=S[S.size()-1][i]*S[S.size()-1][i];
    out<<P<<endl;
    return 0;
    }

    А вот пример ее работы:
    Код:

    INPUT.TXT
    100

    OUTPUT.TXT
    138681178063913146486663255108385891670476531416644888545033078503482282975641730091720919340564340
    Ответ отправил: Micren (статус: Студент)
    Ответ отправлен: 03.03.2009, 20:32

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 244972 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 161.973
    Здравствуйте, уважаемые эксперты. Помогите пожалуйста создать классы для обработки текстовых файлов с методами для выделения предложений, слов, подсчета числа слов, числа предложений, числа букв, согласных, гласных, чисел, точек, запятых и других знаков препинания.
    Отправлен: 04.03.2009, 09:16
    Вопрос задала: Lirene (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Hubbitus
    Здравствуйте, Lirene!
    Усе уже создано, до нас :)

    http://www.boost.org/doc/libs/1_38_0/libs/tokenizer/index.html
    http://www.boost.org/doc/libs/1_36_0/libs/wave/doc/class_reference_lexer.html
    http://www.solarix.ru/for_developers/sources/lem_parsers.shtml
    Ответ отправил: Hubbitus (статус: 3-й класс)
    Ответ отправлен: 04.03.2009, 12:57

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 245015 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 162.024
    Здраствуйте уважаемые эксперты! У меня вопрос по C++ builder-у. (6)
    подскажите полжалуйста как нужно написать обработчик чтобы вывести массив в listbox.
    Отправлен: 04.03.2009, 16:52
    Вопрос задал: Иванов Евгений Александрович (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Hromovnik046
    Здравствуйте, Иванов Евгений Александрович!

    За нас эту работу уже сделали! :-)
    Правда на VS, но да ничего. Я уверен, что, прочтя статью по адресу (ниже), вы во всём разберётесь очень быстро. Ответ на ваш вопрос находится ближе к концу статьи. Заголовок "4. Решение задач обработки массивов в MS VC++".

    Полная версия статьи: http://www.teacher.dn-ua.com/old_version/CPP/11/Visual.htm
    Ответ отправил: Hromovnik046 (статус: 3-й класс)
    Ответ отправлен: 04.03.2009, 18:09

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 245040 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 162.053
    Доброго времени суток, уважаемые эксперты. Помогите пожалуйста с такой задачей: реализовать двоичный поиск по числовому ключу в списке. Благодарен Вам за помощь.
    Отправлен: 04.03.2009, 23:58
    Вопрос задал: Alexkharkov (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 2)

    Отвечает: Hubbitus
    Здравствуйте, Alexkharkov!
    http://web.archive.org/web/20080205062525/http://www.datastructures.info/what-is-a-binary-seach-algorithm-and-how-does-it-work/
    Ответ отправил: Hubbitus (статус: 3-й класс)
    Ответ отправлен: 05.03.2009, 13:27

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 245109 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 162.054
    Здравствуйте.
    Задаю вопрос здесь, т.к. эта тема на мой взгляд ближе к СС++

    Я не могу откомпилировать qt-win-opensource-4.4.3-mingw.
    запускаю автоматическую компиляцию. результат ниже.

    делаю это естественно под windows

    Заранее благодарю.

    Приложение:

    Отправлен: 05.03.2009, 01:25
    Вопрос задал: Shaman_888 (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 5)

    Отвечает: Dr_Andrew
    Здравствуйте, Shaman_888!
    Библиотека Qt для Windows может работать со многими компиляторами, но, согласно условиям лицензии, Open Source версия библиотеки используется в связке с компилятором, распространяемым под GPL, а это - MinGW. Если Вы хотите собрать библиотеку из исходных текстов (а именно это Вы и пытаетесь сделать), то для её компиляции будет использован именно MinGW. Причины, по которым Вам не удалось это сделать, очевидны из сообщений консоли: система не может найти MinGW, а это значит, что Вы либо не установили компилятор, либо не прописали путь к нему в переменных окружения (редактировать нужно переменную path). Т.е. Вам нужно установить и настроить компилятор MinGW до начала компиляции библиотеки, т.к. именно он и будет осуществлять сборку.
    Ещё нюанс. Для корректной работы библиотека Qt требует MinGW 3-й версии, в то время как на официальном сайте разработчиков компилятора лежит актуальная, 5-я версия, которая не подойдёт. При установке библиотеки в привычной для Windows манере (т.е. прекомпилированных бинарных файлов с помощью графического инсталлятора) библиотека сама предложит скачать необходимую версию компилятора с сайта Trolltech (ныне Qt Software). Так что, IMHO, гораздо удобнее устанавливать Qt с помощью графического инсталлятора, нежели самостоятельно собирать библиотеку.
    Удачи!
    Ответ отправил: Dr_Andrew (статус: Специалист)
    Ответ отправлен: 05.03.2009, 06:57

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 245073 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5


    Вопрос № 162.194
    Привет всем! У меня тут возникла проблема с вычислением больших чисел: ((2^510)^(2^511))(mod(2^512). По возможности как пишется исходный код? Всем заранее благодарен!
    Отправлен: 06.03.2009, 13:52
    Вопрос задал: Muzaffar Akromov (статус: Посетитель)
    Всего ответов: 2
    Мини-форум вопроса >>> (сообщений: 1)

    Отвечает: Hubbitus
    Здравствуйте, Muzaffar Akromov!
    Для этого Вам нужно задействовать одну из множетсва библиотек математики сс произвольной точностью ( http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic ), например таткую как gmp ( http://gmplib.org ) или любую другую, по ссылке в википедии есть не маленький список.
    Ответ отправил: Hubbitus (статус: 3-й класс)
    Ответ отправлен: 06.03.2009, 14:36

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 245205 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Evgenijm
    Здравствуйте, Muzaffar Akromov!

    С большими числами работают по-частям: создают для каждого числа массив в памяти и пишут функции, которые выполняют примитивные математические операции. Как мы все когда-то в школе складывали и умножали в столбик.

    Конкретно вашу задачу решить можно только аналитически: для хранения промежуточных данных просто никакой памяти не хватит. А ответ, вроде, 0 :)
    Ответ отправил: Evgenijm (статус: 3-й класс)
    Ответ отправлен: 06.03.2009, 19:46

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 245233 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 162.215
    Здравствуйте Уважаемые эксперты!!! Необходима ваша помощь в исправлении программы(код приведен ниже, программу делал на с++ в Visual studio)
    Задание:
    Класс “Записная книжка” с полями: ФИО, номер телефона, день рождения (массив из 3-х чисел).
    − Программа должна осуществлять:
    − ввод с клавиатуры с проверкой данных и из файла в динамический массив не менее 8 за-писей;
    − сортировку записей по дням рождения;
    − вывод в файл и на дисплей ФИО и номер телефона человека, дата дня рождения которого вводится с клавиатуры.
    (программа работает так :вводим имя файла например d:1.txt а дальше выбираем действие)
    Проблема с программой такая: Неправильно работает метод SORT- неправильно сортирует введенные данные по дням рождения(дата состоит из число месяц год)
    Вот например ввел произвольные 4 записи и вот как она их отсортировала
    Medvedev 11111 28 12 2000
    Sidorov 99999 5 6 1998
    Petrov 66666 3 4 1789
    Ivanov 55555 1 2 1999
    И еще проблема не пойму почему метод FIND не всегда правильно выдает нужную запись по введенной дате рождения(иногда выдает сразу несколько записей)
    Очень прошу помогите :)

    Приложение:

    Отправлен: 06.03.2009, 18:07
    Вопрос задал: Иванов Руслан Иванович (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 7)

    Отвечает: Dr_Andrew
    Здравствуйте, Иванов Руслан Иванович!
    На мой взгляд Вы несколько усложняете в общем-то тривиальную задачу. Ошибки Вашего кода уже освещены в мини-форуме.
    Попробуем решить приведённую задачу заново. Для хранения каждой отдельной записи данных о человеке будем использовать экземпляр класса TNote. Он будет включать два метода: GetData(); - для получения данных с клавиатуры и ShowInfo(); - для отображения данных человека. Для облегчения работы объявим все члены класса открытыми. Чтение данных из файла будем осуществлять в главной функции приложения непосредственно в вектор объектов класса TNote. Там же будет происходить и сортировка (по году рождения). Отсортированные данные будкт записываться в файл. Подробнее - см. приложение (код комментирован).

    Приложение:

    Ответ отправил: Dr_Andrew (статус: Специалист)
    Ответ отправлен: 06.03.2009, 22:30

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 245251 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное