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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 1107
от 16.09.2008, 19:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 427, Экспертов: 38
В номере:Вопросов: 3, Ответов: 4

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


Вопрос № 143611: Зраствуйте!!! Нужна помощь в написании программы на с++ Вывести все числа от 1 до заданного значения N, являющиеся палиндромами – т.е., читаемые в десятичной системе счисления одинаково с начала и с конца (например, 4884)....
Вопрос № 143646: <b> Здравствуйте, уважаемые эксперты! </b> Разрешите к вам обратиться за помощью в решении задачи на C++.NET Написать программу, использующая консольный ввод-вывод. ЗАДАЧА:(при возможности использовать оператор SWITCH) <font color="blue"> Да...
Вопрос № 143647: Уважаемые специалисты! Прошу вас помогите мне в следующей проблеме(как решить эту задачу?) <i> Дан массив размера N. Определить количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают).</i> ...

Вопрос № 143.611
Зраствуйте!!!
Нужна помощь в написании программы на с++
Вывести все числа от 1 до заданного значения N, являющиеся палиндромами – т.е., читаемые в десятичной системе счисления одинаково с начала и с конца (например, 4884).
Отправлен: 10.09.2008, 22:11
Вопрос задала: Иванова (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Терсков Сергей
Здравствуйте, Иванова!
Для этого можно перевести число в строку (функция itoa), после чего сравнить эту строку с ее инверсией (функция strrev). Подробнее смотрите в коде:
Код:
#include <string.h>
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char* argv[]) {

int n;

cout << "Input n: ";
cin >> n;

char digits[16];
char reverse[16];

cout << "Numbers - palindroms" << endl;
for(int i=1; i<=n; i++) {

_itoa(i, digits, 10);

strcpy(reverse, digits);
_strrev(reverse);

if(strcmp(digits, reverse) == 0)
cout << i << endl;
}

return 0;
}
Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 11.09.2008, 03:54
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо!!!!!!!!!!!!!!! Оказывается строку можно перевернуть!!!!!!?? Для меня это была основная проблема... я пыталась сравнивать чило (переведя предварительно в строку) с концов к середине... это реализовать до конца, что бы программа адекватно выдавала результаты, не получалось.....Еще раз спасибо!!!!!!!


Вопрос № 143.646
Здравствуйте, уважаемые эксперты! Разрешите к вам обратиться за помощью в решении задачи на C++.NET
Написать программу, использующая консольный ввод-вывод.
ЗАДАЧА:(при возможности использовать оператор SWITCH)
Даны две строки: S1 и S2. Сформировать и вывести новую строку, удалив из строки S1 все подстроки, совпадающие с S2. Если таких подстрок нет, то использовать S1 без изменений.

БУДУ ОЧЕНЬ БЛАГОДАРЕН ЗА ПОМОЩЬ!
Отправлен: 11.09.2008, 15:16
Вопрос задал: Смирнов Сергей Витальевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 6)

Отвечает: Терсков Сергей
Здравствуйте, Смирнов Сергей Витальевич!
Для этого организуем поиск подстроки s2 в строке s1 и при нахождении вхождения будем его удалять. Поиск будет вестись до тех пор пока будут находиться нужные нам подстроки. Подробнее в коде:
Код:
#include <string>
#include <iostream>

using namespace std;

int main(int argc, char* argv[]) {

string s1 = "This is a test string";
string s2 = "is";

cout << "String #1 (s1):" << endl << s1 << endl;
cout << "String #2 (s2):" << endl << s2 << endl;

string::size_type find_pos = 0;

while((find_pos = s1.find(s2, find_pos)) != string::npos)
s1.erase(find_pos, s2.length() );

cout << endl << "String #1 (s1) without substring s2:" << endl << s1 << endl;

return 0;
}
Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 12.09.2008, 05:55
Оценка за ответ: 4
Комментарий оценки:
Я поставил 4,несмотря на то, что Терсков Сергей является специалистом высокого уровня и задача решена правильно и великолепно Но, уважаемый Сергей! Всё таки существует способ реализации со switch Всё равно я вас уважаю и СПАСИБО вам огромное!!!


Вопрос № 143.647
Уважаемые специалисты!
Прошу вас помогите мне в следующей проблеме(как решить эту задачу?)
Дан массив размера N. Определить количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают).
Заранее спасибо!
Отправлен: 11.09.2008, 15:24
Вопрос задал: Минин Руслан Васильевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Терсков Сергей
Здравствуйте, Минин Руслан Васильевич!
Для этого определим вспомогательный массив, который будет отражать отношение между соседними элементами ('0' - элементы равны, '-' - правый элемент меньше левого, '+' - правый элемент больше левого). Затем в этом массиве посчитаем кол-во изменений знаков на '+' и '-'. Это и будет искомое значение. Подробнее смотрите в коде:
Код:
#include <time.h>
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char* argv[]) {

const int n = 10;

int arr[n];

srand((unsigned) time(NULL));
const int random_limit = 100;

cout << "Initial array" << endl;

for(int i=0; i<n; i++)
arr[i] = rand()%random_limit;

char signs[n];
signs[0] = '0';

for(int i=1; i<n; i++) {

if(arr[i] > arr[i-1])
signs[i] = '+';
else if(arr[i] < arr[i-1])
signs[i] = '-';
else
signs[i] = '0';
}

for(int i=0; i<n; i++)
cout << arr[i] << " " << signs[i] << endl;

int interval_count = 0;
for(int i=1; i<n; i++)
if(signs[i] != signs[i-1] && signs[i] != 0)
interval_count++;

cout << endl << "Count of intervals of monotonicty: " << interval_count << endl;

return 0;
}
Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 12.09.2008, 07:00
Оценка за ответ: 5
Комментарий оценки:
Уважаемый эксперт,Терсков Сергей! У меня просто нет слов выражать вам бесконечную благодарность и восхищаться вашими примерами решения задач Огромное вам за это спасибо!

Отвечает: Ходзинский Александр Валерьеви
Здравствуйте, Минин Руслан Васильевич!
Я слегка изменил код от Терскова Сергея. Теперь считается не количество изменений знаков, а число промежутков где один и тот-же знак повторяется не менее чем установленное число раз.

Приложение:

Ответ отправил: Ходзинский Александр Валерьеви (статус: 1-ый класс)
Ответ отправлен: 12.09.2008, 12:23
Оценка за ответ: 4
Комментарий оценки:
Решение конечно-неплохое, но что мне оно как-то не нравится! Конечно не в обиду уважаемому эксперту Александру Валерьевичу, но всё-таки вам огромное спасибо!


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

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

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.3 RC 2 от 09.09.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное