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

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


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

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

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

Boriss
Статус: Академик
Рейтинг: 1597
∙ повысить рейтинг »
_Ayl_
Статус: Студент
Рейтинг: 1424
∙ повысить рейтинг »
Micren
Статус: Специалист
Рейтинг: 1403
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / C/C++

Номер выпуска:1463
Дата выхода:02.01.2010, 00:00
Администратор рассылки:Dr_Andrew, Старший модератор
Подписчиков / экспертов:678 / 184
Вопросов / ответов:4 / 7
IRC-канал по теме:#C

Вопрос № 175660: Здравствуйте, уважаемые эксперты!!! Нужно написать программу, определяющую образуют ли элементы целочисленных массивов A[10] и B[5] неубывающую последовательность. Написать функции: - Заполнения массива числами в диалоговом режиме. - Вывода ...


Вопрос № 175661: Приветствую Вас уважаемые эксперты! Нужно написать программу, меняющую местами в произвольной матрице две строки, номера которых задаются в диалоговом режиме. Написать функции: - Заполнения двумерного массива случайными числами из диапазона ...
Вопрос № 175672: Вечер добрый! Помогите, пожалуйста, написать такую программу: Составить и протестировать функцию для вычисления: Вопрос № 175678: Уважаемые эксперты, помогите пожалуйста исправить 2 функции в программе. Хотя бы подскажите как. Функция sdvig_right - сдвигает строчку с восмеричными числами на k позиций. Восмеричные числа заданы массивом, т.е. a[1]=1 a[2]=2 a[3]=3 образуют восм...

Вопрос № 175660:

Здравствуйте, уважаемые эксперты!!!
Нужно написать программу, определяющую образуют ли элементы целочисленных массивов A[10] и B[5] неубывающую последовательность. Написать функции:
- Заполнения массива числами в диалоговом режиме.
- Вывода одномерного массива.
- Определения, образуют ли элементы массива неубывающую последовательность.
Выполнить все в консольном приложении Win32.

В приложении текст программы, но без функций, работающей правильно! Ваша задача осуществить решение с помощью функций, ну и описать по возможности решение ... Заранее благодарю.

Отправлен: 27.12.2009, 17:07
Вопрос задал: Баженов Павел Андреевич, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Ashotn, Студент :
Здравствуйте, Баженов Павел Андреевич.

Ввод массивов происходит в двух похожих кусках кода. В них отличаются только размер массива, сам массив и имя, которое упоминается в приглашении. Следовательно, нужно написать функцию с 3 параметрами. Так же поступаем и с двумя другими функциями. В результате программа сокращается примерно в 2 раза.

Приложение:

-----
Я ни от чего, ни от кого не завишу.

Ответ отправил: Ashotn, Студент
Ответ отправлен: 27.12.2009, 18:02

Оценка ответа: 5
Комментарий к оценке:
Благодарю!

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


    Вопрос № 175661:

    Приветствую Вас уважаемые эксперты!
    Нужно написать программу, меняющую местами в произвольной матрице две строки, номера которых задаются в диалоговом режиме.
    Написать функции:
    - Заполнения двумерного массива случайными числами из диапазона [-70;20].
    - Вывод двумерного массива.
    - Обмена значениями элементов двух произвольных строк.
    Решение осуществить в консольном приложении Win32. И еще одно, решение должно быть обязательно осуществлено через функции, и по возможности все объяснить !

    Отправлен: 27.12.2009, 17:17
    Вопрос задал: Баженов Павел Андреевич, Посетитель
    Всего ответов: 3
    Страница вопроса »


    Отвечает Kamerad, 8-й класс :
    Здравствуйте, Баженов Павел Андреевич.

    Код программы в приложении. Если будут вопросы, пишите в минифорум.

    Приложение:

    Ответ отправил: Kamerad, 8-й класс
    Ответ отправлен: 27.12.2009, 18:24

    Оценка ответа: 5
    Комментарий к оценке:
    Благодарю!

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

    Программа работает в консольном приложении VS 2005. Объяснения даются в комментариях

    Приложение:

    -----
    Я ни от чего, ни от кого не завишу.

    Ответ отправил: Ashotn, Студент
    Ответ отправлен: 27.12.2009, 19:04

    Оценка ответа: 5
    Комментарий к оценке:
    Спасибо!

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 258178 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Micren, Специалист :
    Здравствуйте, Баженов Павел Андреевич.
    Программа. С++. Проверял MS VS 2008.

    Код:
    #include <iostream>
    #include <locale>
    #include <iomanip>
    #include <cstdlib>
    #include <ctime>
    #include <stdexcept>

    using namespace std;

    // Количество строк и столбцов в матрице
    const size_t ROWS=5,COLS=7;
    // Диапазон для элементов согласно условия
    const int LO=-70,HI=20;

    // Зполняет матрицу элементами из заданного диапазона [lo..hi)
    template<size_t _ROWS,size_t _COLS,class _Ty>
    void fillMatrix(_Ty (&matrix)[_ROWS][_COLS],int lo,int hi)
    {
    //
    double coeff=static_cast<double>(hi-lo)/RAND_MAX;
    for(size_t i=0;i<_ROWS;++i)
    {
    for(size_t j=0;j<_COLS;+ +j)
    {
    matrix[i][j]=static_cast<_Ty>(lo+rand()*coeff);
    }
    }
    }

    // Выводит матрицу на экран
    template<size_t _ROWS,size_t _COLS,class _Ty>
    void printMatrix(const char* const message,_Ty (&matrix)[_ROWS][_COLS])
    {
    cout<<message<<endl;
    for(size_t i=0;i<_ROWS;++i)
    {
    for(size_t j=0;j<_COLS;++j)
    {
    cout<<setw(4)<<matrix[i][j]<<' ';
    }
    cout<<endl;
    }
    }

    // Меняет заданные строки местами
    template<size_t _ROWS,size_t _COLS,class _Ty>
    void swapRowsMatrix(_Ty (&matrix)[_ROWS][_COLS],size_t row1,size_t row2)
    {
    if(row1<_ROWS && row2<_ROWS)
    {
    for(size_t j=0;j<_COLS;++j)
    {
    // Меняем элементы местами
    swap(matrix[row1][j],matrix[row2][j]);
    }
    }
    else
    {
    throw invalid_argument("Номер строки выходит за допустимый диапазон");
    }
    }

    int main()
    {
    locale: :global(locale(""));
    srand(static_cast<unsigned int>(time(0)));

    // Матрица
    int matrix[ROWS][COLS];

    // Заполним матрицу
    fillMatrix(matrix,LO,HI);
    // Распечатаем ее
    printMatrix("Матрица:",matrix);

    // Вводим номера строк
    cout<<"Введите номера строк для обмена:";
    size_t row1,row2;
    cin>>row1>>row2;
    // Проверим на ошибки ввода
    if(cin.fail())
    {
    cout<<"Ошибочный ввод"<<endl;
    }
    else
    {
    try
    {
    // Обменяем строки
    swapRowsMatrix(matrix,row1,row2);
    // Распечатаем после обмена
    printMatrix("Матрица после перестановки:",matrix);
    }
    catch(invalid_argument& ex)
    {
    cout<<ex.what()<<endl;
    }
    }
    system("PAUSE");
    return 0;
    }

    Пример вывода:
    Код:
    Матрица:
    10 9 -36 -30 -39 5 3
    -25 17 -21 4 -21 -21 -65
    -9 1 -10 -58 8 6 1
    -48 0 11 -69 -10 8 -68
    17 -41 9 -69 3 -18 -62
    Введите номера строк для обмена:1 4
    Матрица после перестановки:
    10 9 -36 -30 -39 5 3
    17 -41 9 -69 3 -18 -62
    -9 1 -10 -58 8 6 1
    -48 0 11 -69 -10 8 -68
    -25 17 -21 4 -21 -21 -65

    Ответ отправил: Micren, Специалист
    Ответ отправлен: 27.12.2009, 19:10

    Оценка ответа: 5
    Комментарий к оценке:
    Спасибо!

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


    Вопрос № 175672:

    Вечер добрый! Помогите, пожалуйста, написать такую программу:

    Составить и протестировать функцию для вычисления:



    Спасибо большое!

    Отправлен: 27.12.2009, 19:18
    Вопрос задал: MrSpencer, 1-й класс
    Всего ответов: 2
    Страница вопроса »


    Отвечает Ковалев Никита Викторович, 2-й класс :
    Здравствуйте, MrSpencer.
    Можете воспользоваться следующим кодом. По хорошему, надо бы еще проверку на n>m, но думаю в данной ситуации это не обязательно.

    Приложение:

    Ответ отправил: Ковалев Никита Викторович, 2-й класс
    Ответ отправлен: 27.12.2009, 20:05

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 258181 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Micren, Специалист :
    Здравствуйте, MrSpencer.
    Программа. C++. Проверял MS VS 2008.

    Код:
    #include <locale>
    #include <iostream>
    #include <stdexcept>

    using namespace std;

    // Требуемая функция.
    double f(double x,unsigned short n,unsigned short m)
    {
    if(m>n)
    {
    throw invalid_argument("Параметр m не может быть больше n");
    }
    // Вычисления будем производить по рекуррентной формуле
    // U(x,i+1)=F(U(x,i),i)=U(x,i)*x*x/((2*i+1)*(2*i+2))
    // квадрат x
    const double x2=x*x;
    // curr - U(x,i)-текущий элемент последовательности
    double curr=1.0;
    unsigned int t=0;
    // Пропустим элементы до i=m
    while(m--)
    {
    --n;
    curr*=x2/(t+1)/(t+2);
    t+=2;
    }
    double result=curr ;
    // Дальше вычисляем рекуррентно
    while(n--)
    {
    result+=curr*=x2/(t+1)/(t+2);
    t+=2;
    }
    return result;
    }

    // Ф-я для оформления вывода при тестировании
    void test(double x,unsigned short n,unsigned short m)
    {
    cout<<"f("<<x<<","<<n<<","<<m<<")=";
    try
    {
    cout<<f(x,n,m);
    }
    catch(invalid_argument& ex)
    {
    cout<<ex.what();
    }
    cout<<endl;
    }

    int main()
    {
    locale::global(locale(""));
    test(-5,4,5);
    test(-5,0,0);
    test(-5,1,0);
    test(-5,3,3);
    test(-5,3,2);
    test(10,18,11);
    system("PAUSE");
    return 0;
    }

    Вывод программы:
    Код:
    f(-5,4,5)=Параметр m не может быть больше n
    f(-5,0,0)=1
    f(-5,1,0)=13.5
    f(-5,3,3)=21.7014
    f(-5,3,2)=47.7431
    f(10,18,11)=10.7935

    Ответ отправил: Micren, Специалист
    Ответ отправлен: 27.12.2009, 20:16

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


    Вопрос № 175678:

    Уважаемые эксперты, помогите пожалуйста исправить 2 функции в программе. Хотя бы подскажите как.
    Функция sdvig_right - сдвигает строчку с восмеричными числами на k позиций. Восмеричные числа заданы массивом, т.е. a[1]=1 a[2]=2 a[3]=3 образуют восмеричное число 123. Пример вводим элементы массива 12345 и сдвиг на 2 позиции, программа выводит 1234500(т.е. добавляет 2 нуля), а нужно чтобы выводил 1112345(т.е. добавил 2 единицы в начало).
    Функция sdvig_left() - сдвигает строчку с восмеричными числами на k позиций. Восмеричные числа заданы массивом, т.е. a[1]=1 a[2]=2 a[3]=3 образуют восмеричное число 123. Пример вводим элементы массива 12345 и сдвиг на 2 позиции, программа выводит 123(т.е. удаляет 2 последних числа), а нужно чтобы выводил 345(т.е. удалял первые 2 числа).

    Отправлен: 27.12.2009, 21:31
    Вопрос задал: Azarov88, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Лейла, 2-й класс :
    Здравствуйте, Azarov88.
    Основная ошибка: циклы нужно делать от i=0 до i < [длина строки]. Потому что , если n - длина строки stroka, то stroka[n]='\0', т.е. символ конца строки...
    В функции sdbig_right() надо изменить цикл так:
    for(i=0; i<n; i++) //а не i<=n
    {
    b[i+k] = a[i];
    }
    теперь заполняем a:
    for(i=k; i<n+k; i++)
    a[i] = b[i];
    for(i=0; i<k; i++)
    a[i] = '1'; //добавляем единицы на первые k-1 позиции
    a[n+k]='\0'; //заканчиваем строку

    В функции же sdvig_left надо так:
    for(i=0; i<n-k; i++)
    {
    b[i] = a[i+k];
    }

    теперь заполняем a:
    for(i=0; i<n-k; i++)
    a[i] = b[i];
    a[i+1]='\0';

    Ответ отправил: Лейла, 2-й класс
    Ответ отправлен: 28.12.2009, 14:12

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

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


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

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

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

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

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

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

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


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

    В избранное