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

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


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

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

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

_Ayl_
Статус: Студент
Рейтинг: 1438
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 1392
∙ повысить рейтинг »
Micren
Статус: Бакалавр
Рейтинг: 1265
∙ повысить рейтинг »

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

Номер выпуска:1451
Дата выхода:20.12.2009, 18:00
Администратор рассылки:Dr_Andrew, Старший модератор
Подписчиков / экспертов:679 / 181
Вопросов / ответов:5 / 6
IRC-канал по теме:#C

Вопрос № 175200: у меня плоховато с программированием по языку С ну очень надо решить эту задачку. Имеются два одномерные массива значений произвольной размерности. Найти для каждого из массивов сумму всех элементов и сравнить полученные знач...


Вопрос № 175266: Здравствуйте, уважаемые эксперты. Помогите с задачей, пожалуйста. Дана программа: (Приложение) Задание. Изменить программу так, чтобы: 1 - Определить сумму положительных элементов, кол-во элементов в интервале от -2 до 2 2 - Оп...
Вопрос № 175273: здавствуйте уважаемые эксперты.помогите разобраться с прогой. нужно чтоб по введённому статусу и дате выдачи книги считалась дата возврата Для рабочих 10 дней Для студентов 20 дней Для пенсионеров 15 дней Для учащихся – 15 дней Для бе...
Вопрос № 175290: Здравствуйте уважаемые эксперты! Пожалуйста помогите решить задачу, заранее огромное спасибо! Задача: Дана текстовая строка, содержащая двоичное число. Перевести его в восьмеричную систему счисления и записать во вторую строку....
Вопрос № 175296: Доброго времени суток! Необходимо написать программку на C++ (желательно, чтобы работала на VS 2008). Задача: Дано трёхзначное число. Необходимо найти все трёхзначные числа равные среднему арифметическому цифр данного числа. Заранее благодарен....

Вопрос № 175200:

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

Результат сравнения отобразить на экран.
оч нуждаюсь в этих задачках. надеюсь на вашу отзывчивость...

Отправлен: 13.12.2009, 17:46
Вопрос задал: GrafMine, Посетитель
Всего ответов: 2
Страница вопроса »


Отвечает Dr_Andrew, Старший модератор :
Здравствуйте, GrafMine!
Решение задачи на "чистом" Си см. в приложении. Код комментирован.
Удачи!

Приложение:

Ответ отправил: Dr_Andrew, Старший модератор
Ответ отправлен: 18.12.2009, 11:15
Казахстан, Алма-Ата
Организация: Казахский научный центр карантинных и зоонозных инфекций
Адрес сайта: Медицинские программы для Linux
ICQ # 256452186

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

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

    Тут чуть подправленная программа. Память под массивы выделяется динамически. Ошибка была в том, что нельзя описывать массивы размером, который заранее не известен.

    Ошибки не было. Действительно, нельзя описывать массивы размером, который заранее не известен, однако в случае предыдущего ответа этот размер как раз-таки известен: вводится пользователем. В данной ситуации в динамическом выделении памяти преимуществ нет, хотя такой вариант тоже имеет право на жизнь.
    -----
    ∙ Отредактировал: Dr_Andrew, Старший модератор
    ∙ Дата редактирования: 20.12.2009, 04:53 (время московское)

    Приложение:

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

    Ответ отправил: Ashotn, 7-й класс
    Ответ отправлен: 20.12.2009, 02:31

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


    Вопрос № 175266:

    Здравствуйте, уважаемые эксперты. Помогите с задачей, пожалуйста.

    Дана программа: (Приложение)

    Задание.
    Изменить программу так, чтобы:
    1 - Определить сумму положительных элементов, кол-во элементов в интервале от -2 до 2
    2 - Определить количество нулевых элементов, количество элементов в интервале от 5 до 10.

    В ответе прошу оба варианта программы отдельно.
    Среда программирования - BorlandC 3.1

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


    Отвечает amnick, 7-й класс :
    Здравствуйте, Penkov213.

    Как Вы и просили, 2 варианта программы на основе представленной Вами. Оба варианта протестированы в Borland C++ 3.1.

    Код:
    // Определить сумму положительных элементов,
    // кол-во элементов в интервале от -2 до 2


    #include <iostream.h>
    #define I 3
    #define J 4

    float sum_positiv( float m[I][J] )
    {
    float sum = 0.0;
    for( int i = 0; i < I; ++i )
    for( int j = 0; j < J; ++j )
    if( m[i][j] > 0.0 )
    sum += m[i][j];
    return sum;
    }

    int count_interval( float m[I][J], float aMin, float aMax )
    {
    int n = 0;
    for( int i = 0; i < I; ++i )
    for( int j = 0; j < J; ++j ) {
    float a = m[i][j];
    if( aMin <= a && a <= aMax )
    ++n;
    }
    return n;
    }

    void inputmas (float m[I][J], char im)
    {
    int i, j;
    cout<< "\nВводим массив " << im << "\n";
    for (i=0; i<I; i++)
    for (j=0; j<J; j++)
    {
    cout << im << " [" << i << " ][ " << j << " ] = ";
    cin >> m[i][j];
    }
    }


    void main()
    {
    float c[I][J];
    inputmas( c,'c' );

    float sum = sum_positiv( c );
    cout << "\nСумма положительных элементов = " << sum << "\n";
    int n = count_interval( c, -2.0, 2.0 );
    cout << "\nКол-во элементов в интервале от -2 до 2 = " << n << "\n";
    }


    Тестовый прогон программы:

    Код:
    Вводим массив c
    c [0 ][ 0 ] = 1
    c [0 ][ 1 ] = 1.4
    c [0 ][ 2 ] = 0.4
    c [0 ][ 3 ] = -0.13
    c [1 ][ 0 ] = 1.5
    c [1 ][ 1 ] = 2.5
    c [1 ][ 2 ] = -4
    c [1 ][ 3 ] = 0.7
    c [2 ][ 0 ] = -1.5
    c [2 ][ 1 ] = 0.78
    c [2 ][ 2 ] = -3.1
    c [2 ][ 3 ] = -1.6

    Сумма положительных элементов = 8.28

    Кол-во элементов в интервале от -2 до 2 = 9



    Код:
    // Определить количество нулевых элементов,
    // количество элементов в интервале от 5 до 10.


    #include <iostream.h>
    #define I 3
    #define J 4

    int count_nulls( float m[I][J] )
    {
    int n = 0;
    for( int i = 0; i < I; ++i )
    for( int j = 0; j < J; ++j )
    if( m[i][j] == 0.0 )
    ++n;
    return n;
    }

    int count_interval( float m[I][J], float aMin, float aMax )
    {
    int n = 0;
    for( int i = 0; i < I; ++i )
    for( int j = 0; j < J; ++j ) {
    float a = m[i][j];
    if( aMin <= a && a <= aMax )
    ++n;
    }
    return n;
    }

    void inputmas (float m[I][J], char im)
    {
    int i, j;
    cout<< "\nВводим массив " << im << "\n";
    for (i=0; i<I; i++)
    for (j=0; j<J; j++)
    {
    cout << im << " [" << i << " ][ " << j << " ] = ";
    cin >> m[i][j];
    }
    }


    void main()
    {
    float c[I][J];
    inputmas( c,'c' );

    float sum = count_nulls( c );
    cout << "\nКол-во нулевых элементов = " << sum << "\n";
    int n = count_interval( c, 5.0, 10.0 );
    cout < < "\nКол-во элементов в интервале от 5 до 10 = " << n << "\n";
    }


    Тестовый про гон программы:

    Код:
    Вводим массив c
    c [0 ][ 0 ] = 0
    c [0 ][ 1 ] = 6
    c [0 ][ 2 ] = 1
    c [0 ][ 3 ] = 0
    c [1 ][ 0 ] = -3
    c [1 ][ 1 ] = 8
    c [1 ][ 2 ] = 10.0
    c [1 ][ 3 ] = 4.9
    c [2 ][ 0 ] = 2.6
    c [2 ][ 1 ] = -0.1
    c [2 ][ 2 ] = 0
    c [2 ][ 3 ] = 6.8

    Кол-во нулевых элементов = 3

    Кол-во элементов в интервале от 5 до 10 = 4


    Успехов!

    Ответ отправил: amnick, 7-й класс
    Ответ отправлен: 14.12.2009, 22:37

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


    Вопрос № 175273:

    здавствуйте уважаемые эксперты.помогите разобраться с прогой. нужно чтоб по введённому статусу и дате выдачи книги считалась дата возврата
    Для рабочих 10 дней
    Для студентов 20 дней
    Для пенсионеров 15 дней
    Для учащихся – 15 дней
    Для безработных – 5 дней

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


    Отвечает Ashotn, 7-й класс :
    Здравствуйте, aleshinIvan.
    Текст программы в приложении.

    Приложение:

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

    Ответ отправил: Ashotn, 7-й класс
    Ответ отправлен: 15.12.2009, 02:26

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


    Вопрос № 175290:

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

    Отправлен: 15.12.2009, 15:06
    Вопрос задал: Ased7, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает amnick, 7-й класс :
    Здравствуйте, Ased7.

    Полагаю, что простое преобразование двоичной строки в число, а затем использование sprintf( s, "%o", num ) или _itoa( num, s, 8 ) для преобразования в восьмиричное представление не годится. В предлагаемом варианте двоичное число (строка) преобразуется в восьмиричное число напрямую. Комментарии — в коде.
    На Ваш выбор предлагается 2 варианта: с классом string и без него. Оба варианта проверены в MSVC++ 6.0.

    Вариант с классом string:
    Код:
    #include <string>
    #include <iostream>
    using namespace std;

    // Функция преобразует строку, представляющую двоичное число (pszBinary),
    // в строку, представляющую восьмиричное число (pszOctal)
    // Алгоритм:
    // 3 двоичных цифры преобразуются в одну восьмиричную.
    // Исходная строка разбивается на группы по 3 цифры, начиная справа; крайняя
    // левая группа может содержать от 1 до 3-х двоичных цифр.
    // Затем каждая группа переводится в восьмиричную цифру (параллельно проверяется
    // корректность исходной строки) и преобразуется в символ прибавлением '0'.
    int bin2oct( string &sOctal, string &sBinary )
    {
    int len = sBinary.length();
    int nRes = (len+2)/3; // число 8-ричных цифр в результате
    // сколько первых цифр двоичного числа "пойдет" на первую цифру результата?
    // 10,111,010,101

    int n = len % 3;
    if( n == 0 ) n = 3;
    int p = 0;
    while( len ) {
    // преобразуем очередную группу
    int d = 0;
    for( int i = 0; i < n; ++i, ++p ) {
    char ch = sBinary[p];
    if( ch > '1' || ch < '0' )
    return -1; // ошибка во входной строке - недвоичное число

    d = (d << 1) + (ch == '1& #39;);
    }
    sOctal += d + '0';
    len -= n;
    n = 3;
    }
    return 0;
    }

    void main( int argc, char* argv[] )
    {
    string sOct, sBin;
    if( argc > 1 )
    sBin = argv[1];
    else {
    cout << "Enter a number in binary notation: ";
    cin >> sBin;
    }
    if( bin2oct( sOct, sBin ) < 0 )
    cout << "The provided string does not represent a number in binary notation!" << endl;
    else
    cout << "The number in octal notation = " << sOct << endl;
    }


    Вариант без использования класса string (это тоже C++):
    Код:
    #include <string.h>
    #include <iostream>
    using namespace std;


    // Функция преобразует строку, представляющую двоичное число (pszBinary),
    // в строку, представляющую восьмиричное число (pszOctal)
    // Алгоритм:
    // 3 двоичных цифры преобразуются в одну восьмиричную.
    // Исходная строка разбивается на группы по 3 цифры, начиная справа; крайняя
    // левая группа может содержать от 1 до 3-х двоичных цифр.
    // Затем каждая группа переводится в восьмиричную цифру (параллельно проверяется
    // корректность исходной строки) и преобразуется в символ прибавлением '0'.
    int bin2oct( char* pszOctal, const char* pszBinary )
    {
    int len = strlen( pszBinary );
    int nRes = (len+2)/3; // число 8-ричных цифр в результате
    // сколько первых цифр двоичного числа "пойдет" на первую цифру результата?
    // 10,111,010,101

    int n = len % 3;
    if( n == 0 ) n = 3;
    const char* p = pszBinary;
    while( len ) {
    int d = 0;
    for( int i = 0; i < n; ++i, ++p ) {
    if( *p > '1' || *p < ; '0' )
    return -1; // ошибка во входной строке - недвоичное число

    d = (d << 1) + (*p == '1');
    }
    *pszOctal++ = d + '0';
    len -= n;
    n = 3;
    }
    *pszOctal = 0;
    return 0;
    }


    void main( int argc, char* argv[] )
    {
    char sOct[128];
    int iRes;
    if( argc > 1 )
    iRes = bin2oct( sOct, argv[1] );
    else {
    cout << "Enter a number in binary notation: ";
    char sBin[256];
    cin >> sBin;
    iRes = bin2oct( sOct, sBin );
    }
    if( iRes < 0 )
    cout << "The provided string does not represent a number in binary notation!" << endl;
    else
    cout << "The number in octal notation = " << sOct << endl;
    }


    Успехов!

    Ответ отправил: amnick, 7-й класс
    Ответ отправлен: 15.12.2009, 19:37

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


    Вопрос № 175296:

    Доброго времени суток!
    Необходимо написать программку на C++ (желательно, чтобы работала на VS 2008). Задача: Дано трёхзначное число. Необходимо найти все трёхзначные числа равные среднему арифметическому цифр данного числа.
    Заранее благодарен.

    Отправлен: 15.12.2009, 17:50
    Вопрос задал: starcode, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает LfiN, 10-й класс :
    Здравствуйте, starcode.
    Программа написана и проверена на Microsoft Visual C++ 6.0.
    Комментарии в программе.
    Код:
    #include <iostream>
    using namespace std;


    int main(){
    int const k=3;
    int a,b,i;
    double sr,s,sr1;
    locale::global(locale("russian_russia.866")); // Чтобы печатать русскими буквами
    wcout<<L"Введите трехзначное число: ";
    cin>>a;
    if((a>99)&&(a<1000)){//Проверка числа на трехзначность
    s=0;
    while(a>=1){
    b=a%10; //последняя цифра числа
    s+=b; //сумма цифр числа
    a/=10; //убираем последнюю цифру числа
    }
    sr=s/k; //среднее арифметическое цифр числа
    wcout<<L"Среднее арифметическое цифр заданного числа: " ;<<sr<<endl<<endl;

    wcout<<L"Все трехзначные числа, в которых среднее арифметическое их цифр равно "<<sr<<L":"<<endl;
    for(i=100;i<1000;i++){ //Находим остальные числа, среднее арифметическое цифр которых соответствует найденному числу
    a=i;
    s=0;
    while(a>=1){
    b=a%10;
    s+=b;
    a/=10;
    }
    sr1=s/k;
    if(sr==sr1)wcout<<i<<L" ";
    }}
    else wcout<<L"\nВы ввели не трехзначное число\n";
    wcout<<L"\nДля выхода нажмите любую клавишу...\n";
    return 0;
    }

    Ответ отправил: LfiN, 10-й класс
    Ответ отправлен: 15.12.2009, 19:34

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

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


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

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

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

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

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

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

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


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

    В избранное