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

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


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

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

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

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

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

Выпуск № 1260
от 08.03.2009, 03:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 495, Экспертов: 54
В номере:Вопросов: 3, Ответов: 4

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

Вопрос № 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"....

Вопрос № 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:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


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

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

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

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

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

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала 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

    В избранное