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

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


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

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

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

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

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

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

Вопрос № 175700: Дан целочисленный массив. Распечатать его в следующем порядке: сначала нулевой элемент, затем последний, затем первый, затем предпоследний и т.д. ...


Вопрос № 175704: Дан целочисленный массив. Найти в нём первое встреченное простое число. ...
Вопрос № 175706: Дана текстовая строка. Определить, является ли она палиндромом (справа налево и слева направо читается одинаково). ...
Вопрос № 175711: Здравствуйте, эксперты. Как заменить часть содержимого файла? В программе имеется класс Person, и объект User. Когда пытаюсь заменить часть содержимого файла, вместо этого происходит очередная запись. Как это исправить? Вот напри...

Вопрос № 175700:

Дан целочисленный массив. Распечатать его в следующем порядке: сначала нулевой элемент, затем последний, затем первый, затем предпоследний и т.д.

Отправлен: 28.12.2009, 16:12
Вопрос задал: Никита Веретенников, Посетитель
Всего ответов: 4
Страница вопроса »


Отвечает Лейла, 2-й класс :
Здравствуйте, Никита Веретенников.
Это можно реализовать, используя следующий цикл:
for (int i=0; i<dlina; i++)
{cout<<massiv[i];
cout<<massiv[dlina-i]
}
т.е. массив 123456 будет выведен так: 162534435261

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

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

    Приложение:

    Ответ отправил: Kamerad, 8-й класс
    Ответ отправлен: 28.12.2009, 16:38

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

    Код:
    Массив
    16;34;0;5;61;30;26;10;37;15
    Результат :16;15;34;37;0;10;5;26;61;30

    Приложение:

    Ответ отправил: lamed, Практикант
    Ответ отправлен: 28.12.2009, 18:02

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

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

    using namespace std;

    template<class _Ty,size_t _Dim>
    void printArray(_Ty (&arr)[_Dim])
    {
    for(size_t i=0;i<_Dim;++i)
    {
    cout<<arr[i&1?_Dim-1-(i>>1):i>>1]<<' ';
    }
    cout<<endl;
    }

    int main()
    {
    locale::global(locale(""));
    int arr[10];
    const size_t arrSize=sizeof(arr)/sizeof(arr[0]);
    cout<<"Массив выводим в нормальном порядке:"<<endl;
    for(size_t i=0;i<arrSize;++i)
    {
    arr[i]=i+1;
    cout<<arr[i]<<' ';
    }
    cout< <endl
    <<"Выводим в хитром порядке:):"<<endl;
    printArray(arr);
    system("PAUSE");
    return 0;
    }

    Вывод программы:
    Код:
    Массив выводим в нормальном порядке:
    1 2 3 4 5 6 7 8 9 10
    Выводим в хитром порядке:):
    1 10 2 9 3 8 4 7 5 6

    Ответ отправил: Micren, Профессионал
    Ответ отправлен: 28.12.2009, 18:42

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


    Вопрос № 175704:

    Дан целочисленный массив. Найти в нём первое встреченное простое число.

    Отправлен: 28.12.2009, 18:47
    Вопрос задал: Супрунов С. М., Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Kamerad, 8-й класс :
    Здравствуйте, Супрунов С. М..

    Приложение:

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

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


    Вопрос № 175706:

    Дана текстовая строка. Определить, является ли она палиндромом (справа налево и слева направо читается одинаково).

    Отправлен: 28.12.2009, 21:32
    Вопрос задал: Супрунов С. М., Посетитель
    Всего ответов: 2
    Страница вопроса »


    Отвечает Kamerad, 8-й класс :
    Здравствуйте, Супрунов С. М..
    Код программы в приложении. Проверено в MVS 2008.

    Приложение:

    Ответ отправил: Kamerad, 8-й класс
    Ответ отправлен: 28.12.2009, 22:50

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

    Приложение:

    -----
    Удачи!

    Ответ отправил: Лысков Игорь Витальевич, Модератор
    Ответ отправлен: 28.12.2009, 23:45
    Украина, Кировоград
    Тел.: +380957525051
    ICQ # 234137952
    Mail.ru-агент: igorlyskov@mail.ru
    Абонент Skype: igorlyskov

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


    Вопрос № 175711:

    Здравствуйте, эксперты.

    Как заменить часть содержимого файла?

    В программе имеется класс Person, и объект User.
    Когда пытаюсь заменить часть содержимого файла, вместо этого происходит очередная запись. Как это исправить?
    Вот например:

    Код:

    fstream File;
    File.open("file.dtb", ios::in|ios::out|ios::binary);

    // Добавляем 1 запись // (Blazin 18)
    File.seekp(number, ios::end);
    File.write((char*)&User,sizeof(person));

    number=1;
    // Переходим ко второй и добавляем её (такую же как и 1):
    File.seekp(number*sizeof(person), ios::beg);
    File.write((char*)&User,sizeof(person));

    // Изменяем первую (Onyx 20)
    number=0;
    File.seekp(number*sizeof(person), ios::beg);
    File.write(( char*)&User,sizeof(person));

    // Читаем файл
    File.seekg(0, ios::beg);

    cout << endl << "Reading file:" << endl;
    while(!File.eof())
    {
    File.read((char*)&User, sizeof(person));
    User.dispdata();
    cout << endl;
    }


    В итоге получается:
    Onyx 20
    Blazin 18
    Blazin 18
    (пример)

    Должно получиться : первая запись измененная, а вторая - исходная. Однако получается - две исходные, и одна - измененная.

    Как же тогда записать одну вместо другой?

    Отправлен: 28.12.2009, 23:46
    Вопрос задал: Иванов Андрей Владимирович, 5-й класс
    Всего ответов: 1
    Страница вопроса »


    Отвечает Micren, Профессионал :
    Здравствуйте, Иванов Андрей Владимирович.
    Причина в том, что Вы не правильно проверяете на конец файла. Таким образом 2 раза выводится одна и та же запись.
    Вот пример:
    Код:
    #include <iostream>
    #include <fstream>
    #include <cstring>

    using namespace std;

    // Класс для вывода
    class person
    {
    public:
    static const size_t NAME_LEN=10;
    person(char name[NAME_LEN],unsigned short age)
    {
    strcpy_s(_name,NAME_LEN,name);
    _age=age;
    }
    const char* const name() const
    {
    return _name;
    }
    unsigned short age() const
    {
    return _age;
    }
    private:
    char _name[NAME_LEN];
    unsigned short _age;
    };

    ostream& operator<<(ostream& stream,const person& righ t)
    {
    stream<<right.name()<<" - "<<right.age();
    return stream;
    }

    int main()
    {
    fstream file("e:\\file.dtb",ios::in|ios::out|ios::binary|ios::trunc);
    if(file)
    {
    person user("Blazin",18);

    // Пишем 2 одинаковые записи
    file.write(reinterpret_cast<char*>(&user),sizeof(person));
    file.write(reinterpret_cast<char*>(&user),sizeof(person));

    // Заменяем запись
    user=person("Onyx",20);
    file.seekp(0,ios::beg);
    file.write(reinterpret_cast<char*>(&user),sizeof(person));

    // Читаем из файла
    file.seekg(0,ios::beg);
    file.read(reinterpret_cast<char*>(&user), sizeof(person));
    while(!file.eof())
    {
    cout<<user<<endl;
    file.read(reinterpret_cast<char*>(&user), sizeof(person));
    }
    file.close();
    }
    system("PAUSE");
    }

    Вывод программы:
    Код:
    Onyx - 20
    Blazin - 18

    Программа тестировалась MS VS 2008. Если используете другой компилятор может потребоваться заменить функцию strcpy_s() на strcpy().

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

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

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


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

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

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

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

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

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

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


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

    В избранное