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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

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

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

_Ayl_
Статус: 7-й класс
Рейтинг: 552
∙ повысить рейтинг >>
Micren
Статус: Практикант
Рейтинг: 304
∙ повысить рейтинг >>
AMV007
Статус: 3-й класс
Рейтинг: 139
∙ повысить рейтинг >>

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

Выпуск № 1343 от 27.06.2009, 13:35
Администратор рассылки: Dr_Andrew, Модератор
В рассылке: подписчиков - 627, экспертов - 148
В номере: вопросов - 2, ответов - 3

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

Вопрос № 169696: Здравствуйте! ЗАДАЧА: Ввести одной строкой трехзначное число. Проверить истинность высказывания: "Цифры данного трехзначного числа образуют геометрическую прогрессию". Ответ вывести в виде "yes" или &q...


Вопрос № 169715: Здравствуйте,уважаемые эксперты! Помогите со следующей задачей: Ввести двумерный динамический массив.Сформировать линейный массив элементами которого являются суммы элементов на диагоналях параллельной главной Спасибо огромное!!!...

Вопрос № 169696:

Здравствуйте!
ЗАДАЧА: Ввести одной строкой трехзначное число. Проверить истинность высказывания: "Цифры данного трехзначного числа образуют геометрическую прогрессию". Ответ вывести в виде "yes" или "no".

Спасибо за помощь!

Отправлен: 21.06.2009, 22:51
Вопрос задал: Озерова Елена Сергеевна, Посетитель
Всего ответов: 1
Страница вопроса >>


Отвечает _Ayl_, 7-й класс :
Здравствуйте, Озерова Елена Сергеевна.

Код в приложении.

Приложение:

Ответ отправил: _Ayl_, 7-й класс
Ответ отправлен: 22.06.2009, 11:25

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



    Вопрос № 169715:

    Здравствуйте,уважаемые эксперты!
    Помогите со следующей задачей:
    Ввести двумерный динамический массив.Сформировать линейный массив элементами которого являются суммы элементов на диагоналях параллельной главной

    Спасибо огромное!!!

    Отправлен: 22.06.2009, 12:50
    Вопрос задал: Озерова Елена Сергеевна, Посетитель
    Всего ответов: 2
    Страница вопроса >>


    Отвечает Micren, Практикант :
    Здравствуйте, Озерова Елена Сергеевна.
    Программа С++. Тестировал MS VS 2008
    Код:

    #include <locale>
    #include <limits>
    #include <iostream>
    #include <iomanip>
    #include <cstdlib>
    #include <ctime>
    #include <stdexcept>

    using namespace std;

    // Ввод с подсказкой
    template<class T>
    T input(const char *const msg)
    {
    while(true)
    {
    T res;
    cout<<msg;
    cin>>res;
    if(cin.fail())
    {
    cout<<"Ошибочный ввод"<<endl;
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(),'\n');
    }
    else
    {
    cin.ignore(numeric_limits<streamsize>::max(),'\n');
    retur n res;
    }
    }
    }

    // Суммирует по диагональ
    template<class T>
    T sumDiag(T *matrix,size_t dim,size_t no)
    {
    T res=0;
    // Вычисляем индекс первого элемента
    size_t i=0,j=0;
    if(no<dim)
    {
    i=dim-1-no;
    }
    else if(no<(((dim-1)<<1)+1))
    {
    j=no-dim+1;
    }
    else
    {
    throw invalid_argument("Номер диагонали выходит за диапазон матрицы");
    }
    // Указатель на первый суммируемый элемент
    T* current=matrix+i*dim+j;
    // Количество элементов в диагонали
    size_t count=dim-(i>j?i:j);
    // Суммирование
    while(count--)
    {
    res+=*current;
    current+=dim+1;
    }
    return res;
    }

    int main()
    {
    srand(static_cast<unsigned int>(time(0)));
    setlocale(LC_ALL,"russian");
    size_t dim=input<size_t>("Введите размерность матрицы:");
    int* matrix=0
    ,*vector=0;
    if(dim)
    {
    try
    {
    matrix=new int[di m*dim];
    size_t dimVec=(dim<<1)-1;
    vector=new int[dimVec];
    cout<<"Матрица:"<<endl;
    // Заполняем матрицу случайными числами и печатаем ее
    int* current=matrix;
    for(size_t i=0;i<dim;++i)
    {
    for(size_t j=0;j<dim;++j,++current)
    {
    *current=rand()%101-50;
    cout<<setw(4)<<*current<<' ';
    }
    cout<<endl;
    }
    // Считаем суммы
    for(size_t i=0,j=0;i<dimVec;++i)
    {
    vector[j++]=sumDiag(matrix,dim,i);
    }
    // Выводим результат
    cout<<"Получен вектор:"<<endl;
    for(size_t i=0;i<dimVec;++i)
    {
    cout<<vector[i]<<' ';
    }
    cout<<endl;
    }
    catch(bad_alloc)
    {
    cout<<"Не могу выделить память"<<endl;
    }
    if(matrix)
    {
    delete[]matrix;
    }
    if(vector)
    {
    delete[]vec tor;
    }
    }
    else
    {
    cout<<"С такой размерностью матрицы нет"<<endl;
    }
    system("PAUSE");
    return 0;
    }


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

    Введите размерность матрицы:5
    Матрица:
    -28 -1 -15 25 -26
    -28 15 9 4 14
    41 4 1 -41 41
    25 -42 -24 3 16
    -22 28 -37 -30 -16
    Получен вектор:
    -22 53 -38 -78 -25 -17 30 39 -26

    Ответ отправил: Micren, Практикант
    Ответ отправлен: 22.06.2009, 15:32

    Оценка ответа: 5
    Комментарий к оценке:
    Спасибо вам огромное за помощь
    Хотя проф говорит,что не обязательно квадратная матрица

    НО я оцениваю задачу- ОНА БЕЗУПРЕЧНА

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


    Отвечает _Ayl_, 7-й класс :
    Здравствуйте, Озерова Елена Сергеевна.

    Вот программа
    Извините за задержку

    Приложение:

    Ответ отправил: _Ayl_, 7-й класс
    Ответ отправлен: 22.06.2009, 16:34

    Оценка ответа: 5
    Комментарий к оценке:
    Я бы и 6 поставил!
    Вот это то что нужно
    От выполнения задания просто нет слов-ВЕЛИКОЛЕПНО!
    Огромное вам спасибо!!!

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



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

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

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

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

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

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

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


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.3 от 20.06.2009

    В избранное