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

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


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

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

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

Boriss
Статус: Академик
Рейтинг: 1618
∙ повысить рейтинг »
_Ayl_
Статус: Студент
Рейтинг: 1420
∙ повысить рейтинг »
Micren
Статус: Профессионал
Рейтинг: 1410
∙ повысить рейтинг »

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

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

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


Вопрос № 175716: Здравствуйте. Уважаемые эксперты, нужна ваша помощь в решении задачи: Составить и протестировать функцию, возвращающую номер самого правого вхождения заданного символа во введенную строку. Если символ не входит в строку, должно возвращаться -1....
Вопрос № 175718: Здравствуйте. Уважаемые эксперты, нужна помощь в решении задачи: 1.Написать и протестировать функцию для транспонирования матрицы. Заранее спасибо!!!...
Вопрос № 175719: Здравствуйте. Нужна помощь в решении задачи: 1.Даны длины сторон A, B, C некоторого треугольника. Определить его медианы. Длина медианы, проведенной к стороне A, вычисляется по формуле la=sqrt((2*b*b)+(2*c*c)-(a*a)) Спасибо....

Вопрос № 175714:

Здравствуйте, уважаемые эксперты.Помогите, пожалуйста, написать такую программу:

Написать и протестировать функцию, которая определяет, является ли симметричной заданная символьная строка.
Заранее спасибо.

Отправлен: 29.12.2009, 08:46
Вопрос задал: onegin90, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Micren, Профессионал :
Здравствуйте, onegin90.
Программа. С++. Проверял MS VS 2008.
Код:
#include <iostream>
#include <string>

using namespace std;

bool isSymmetric(const wstring& str)
{
wstring::size_type i=0,j=str.length();
bool result=true;
while(i<j && result)
{
result=str[i++]==str[--j];
}
return result;
}

int main()
{
locale::global(locale("russian_russia.866"));
wcout<<L"Введите строку:"<<endl;
wstring str;
getline(wcin,str);
wcout<<L"Строка \""<<str<<L"\" "<<(isSymmetric(str)?L"":L"не ")<<L"симметрична"<<endl;
system("PAUSE");
}

Пример работы:
Код:
Введите строку:

Строка "" симметрична

Введите строку:
a
Строка "a" симметрична

Введите строку:
строка
Строка "строка" не симметрична

Введите строку:
абвгд дгвба
Строка "абвгд дгвба" симметрична

Ответ отправил: Micren, Профессионал
Ответ отправлен: 29.12.2009, 09:34

Оценка ответа: 5
Комментарий к оценке:
Огромное СПС
Программа работает.

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


    Вопрос № 175716:

    Здравствуйте.
    Уважаемые эксперты, нужна ваша помощь в решении задачи:
    Составить и протестировать функцию, возвращающую номер самого правого вхождения заданного символа во введенную строку. Если символ не входит в строку, должно возвращаться -1.
    Заранее спасибо!

    Отправлен: 29.12.2009, 12:55
    Вопрос задал: aller719, Посетитель
    Всего ответов: 2
    Страница вопроса »


    Отвечает Kamerad, 8-й класс :
    Здравствуйте, aller719.
    Программу тестировал в MVS2008

    Приложение:

    Ответ отправил: Kamerad, 8-й класс
    Ответ отправлен: 29.12.2009, 13:06

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

    Код:
    #include <iostream>

    using namespace std;

    // Ищет символ согласно условия
    template<class _Ty>
    int find_last_chr(const _Ty* const str,_Ty what)
    {
    const _Ty* cur=str;
    int result=-1;
    while(*cur)
    {
    if(*cur==what)
    {
    result=cur-str;
    }
    ++cur;
    }
    return result;
    }

    int main()
    {
    locale::global(locale(""));

    char* cstr="This is a string";
    wchar_t* wstr=L"This is a wide-char string";

    // Пробуем для строк состоящих из char символов
    cout<<"В строке \"&quo t;<<cstr<<"\""<<endl;
    cout<<"i:"<<find_last_chr(cstr,'i')<<endl;
    cout<<"m:"<<find_last_chr(cstr,'m')<<endl;

    // Пробуем для строк состоящих из wchar_t символов
    wcout<<L"В строке \""<<wstr<<L"\""<<endl;
    wcout<<L"g:"<<find_last_chr(wstr,L'g')<<endl;
    wcout<<L"z:"<<find_last_chr(wstr,L'z')<<endl;

    system("PAUSE");
    return 0;
    }

    Вывод программы:
    Код:
    В строке "This is a string"
    i:13
    m:-1
    В строке "This is a wide-char string"
    g:25
    z:-1

    Ответ отправил: Micren, Профессионал
    Ответ отправлен: 30.12.2009, 01:50

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


    Вопрос № 175718:

    Здравствуйте.
    Уважаемые эксперты, нужна помощь в решении задачи:
    1.Написать и протестировать функцию для транспонирования матрицы.
    Заранее спасибо!!!

    Отправлен: 29.12.2009, 16:20
    Вопрос задал: aller719, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Micren, Профессионал :
    Здравствуйте, aller719.
    Программа. С++. Тестировал MS VS 2008.
    Код:
    #include <locale>
    #include <iostream>
    #include <iomanip>
    #include <ctime>
    #include <cstdlib>

    using namespace std;

    // Ф-я для вывода матриц
    template<class _Ty,size_t _Rows,size_t _Cols>
    void printMatrix(const char* const message,const _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<class _Ty,size_t _Rows,size_t _Cols>
    void transposeMatrix(const _Ty (&srcMatrix)[_Rows][_Cols],_Ty (&dstMatrix)[_Cols][_Rows])
    {
    if(reinterpret_cast<const void*>(srcMatrix)==reinterpret_cast<const void*>(dstMatrix))
    {
    for(size_t i=1;i<_Rows;++i)
    {
    for(size_t j=0;j<i;++j)
    {
    swap(dstMatrix[i][j],dstMatrix[j][i]);
    }
    }
    }
    else
    {
    for(size_t i=0;i<_Rows;++i)
    {
    for(size_t j=0;j<_Cols;++j)
    {
    dstMatrix[j][i]=srcMatrix[i][j];
    }
    }
    }
    }

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

    // Размерность матрицы
    const size_t ROWS=4,COLS=5;
    // Исходная и транспонированная матрицы
    int matrix[ROWS][COLS],matrixT[COLS][ROWS];

    // Заполним матрицу случайными числами
    for(size_t i=0;i<ROWS;++i)
    {
    for(size_t j=0;j<COLS;++j)
    {
    matrix[i][j]=rand()%50;
    }
    }

    // Распечатаем матрицу
    printMatrix( "Исходная матрица:",matrix);

    // Транспонируем
    transposeMatrix(matrix,matrixT);

    // Распечатаем транспонированную
    printMatrix("Транспонированная матрица:",matrixT);

    system("PAUSE");
    return 0;
    }

    Пример вывода:
    Код:
    Исходная
    матрица:
    1 9 39 24 46
    4 23 44 8 1
    24 4 25 28 48
    24 40 26 28 16
    Транспонированная матрица:
    1 4 24 24
    9 23 4 40
    39 44 25 26
    24 8 28 28
    46 1 48 16

    Ответ отправил: Micren, Профессионал
    Ответ отправлен: 29.12.2009, 17:30

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


    Вопрос № 175719:

    Здравствуйте.
    Нужна помощь в решении задачи:
    1.Даны длины сторон A, B, C некоторого треугольника. Определить его медианы. Длина медианы, проведенной к стороне A, вычисляется по формуле la=sqrt((2*b*b)+(2*c*c)-(a*a))
    Спасибо.

    Отправлен: 29.12.2009, 16:22
    Вопрос задал: aller719, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Ashotn, Практикант :
    Здравствуйте, aller719.

    la=1/2*sqrt((2*b*b)+(2*c*c)-(a*a)), смотрите http://www.math.ru/dic/275.
    Программа в приложении.

    Приложение:

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

    Ответ отправил: Ashotn, Практикант
    Ответ отправлен: 29.12.2009, 17:13

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


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

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

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

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

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

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

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


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

    В избранное