Вопрос № 162838: Здравствуйте,Помогите,пожалуйста.Требуется на языке C++ определить координаты первого и последнего вхождения в заданную строку заданного символа. Заранее спасибо!...
Вопрос № 162850: Доброго времени суток уважаемые эксперты <img src="http://rusfaq.ru/images/Forum/5.gif" border="0"> Помогите пожалуйста с решением задачи - задана последовательность из N вещественных чисел. Вычислить порядковый номер числа наиболее
приближенного к...Вопрос № 162862: Здравствуйте,у меня есть готовая программа релизующая стек и реализован поиск, она запускается, но не работают процедуры,можете указать на ошибку?Только пожалуйста не надо ее полностью менять,просто скажите где изменить (программа написана преподом ...
Вопрос № 162.838
Здравствуйте,Помогите,пожалуйста.Требуется на языке C++ определить координаты первого и последнего вхождения в заданную строку заданного символа. Заранее спасибо!
Отправлен: 21.03.2009, 10:05
Вопрос задал: максим кузнецов
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Абельхарисов Руслан/Marked One
Здравствуйте, максим кузнецов! Код программы с комментариями:
Код:
#include "stdafx.h" #include "iostream"
using namespace std;
int _tmain(int argc, _TCHAR* argv[]) { //Строка char string[255]; //Символ char ch; //Координаты первого
и последнего вхождения int f, e; //Получаем строку cout << "Input the string: "; cin.getline(string, 255); //Получаем символ cout << "Input the char: "; cin >> ch; int i = 0; //Перебираем строку, пока не встретим конец строки или... while (string[i]) { //...или пока не встретим нужный символ if (string[i] == ch) { //Сохраняем его позицию в массиве-строке(нумерация
в массиве c нуля) в переменной f f = i; //Выходим из цикла break; } //Если не встеретили искомого символа, то увеличиваем счетчик на 1 i++; } //Теперь ищем последнее вхождение. Код аналогичен, только поиск идет с конца i = strlen(string) - 1; while (string[i]) { if (string[i] == ch) { e = i; break; } i--; } //Вывод рез-тов cout << "First: " << f << " Last: " << e <<
endl; system("PAUSE"); return 0; }
Отправить SMS#thank 245694 на номер 1151 (Россия) | Еще номера >>
Отправить WebMoney:
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Вопрос № 162.850
Доброго времени суток уважаемые эксперты Помогите пожалуйста с решением задачи - задана последовательность из N вещественных чисел. Вычислить порядковый номер числа наиболее приближенного к среднему арифметическому максимального и минимального чисел данной последовательности. Заранее благодарен В приложении кидаю решение такой же задачи, но на ЯП Pascal (там всё хорошо кроме заполнения случайными
числами).
Приложение:
Отправлен: 21.03.2009, 12:56
Вопрос задал: Sanyaoo (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Hromovnik046
Здравствуйте, Sanyaoo!
Вот так я вижу вашу программу.
Приложение:
--------- Достигнув вершины горы, иди дальше...
Ответ отправил: Hromovnik046 (статус: 3-й класс)
Ответ отправлен: 21.03.2009, 17:52
Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 245714 на номер 1151 (Россия) | Еще номера >>
Отправить WebMoney:
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает: Micren
Здравствуйте, Sanyaoo! Программа с комментариями. MS VS 2008. C++. Использовал STL.
int main() { locale::global(locale("rus_rus.866")); // Просим пользователя ввести количество элементов последовательности unsigned int N=0; while(!N) { wcout<<L"Введите количество чисел в пос
ледовательности:"; wcin>>N; // Проверяем на ошибки ввода/вывода if(wcin.fail()) { wcout<<L"Ошибочный ввод"<<endl; wcin.clear(); wcin.ignore(numeric_limits<streamsize>::max(),L'
'); } else { wcin.ignore(numeric_limits<streamsize>::max(),L'
'); if(N>maxN) { N=0; wcout<<L"Количество чисел не может превышать "<<maxN<<endl; } } } try { // Наш массив DVector arr(N); srand(static_cast<unsigned int>(time(0))); // Инициализируем значение минимального и максимального элемента double max=numeric_limits<double>::min(); double min=numeric_limits<double>::max(); // Заполняем массив случайными числами, выводим его на экран
и сразу ищем максимум и минимум wcout<<L"Исходный массив:"<<endl; for(DVector::iterator it=arr.begin();it!=arr.end();++it) { *it=static_cast<double>(rand())/RAND_MAX*50; wcout<<setw(9)<<setprecision(5)<<*it<<L' '; max=max<*it?*it:max; min=min>*it?*it:min; } // Среднее арифметическое double mid=(min+max)/2; wcout<<endl <<L"Мин
имальный элемент:"<<min<<endl <<L"Максимальный элемент:"<<max<<endl <<L"Среднее арифметическое:"<<mid<<endl; // Минимальное отклонение от среднего double minDifference=max-min; // Здесь будем хранить индексы UIVector indexes; // Перебираем элементы и ищем наиболее близкий к среднему for(unsigned int index=0;index<arr.size();++index) { // Отклонение от среднего double difference=abs(arr[index]-mid); //
Если оно меньше или равно ранее найденному if(difference<=minDifference) { // Если меньше if(difference<minDifference) { // Сохраним его minDifference=difference; // Очистим наш вектор индексов indexes.clear(); } // Запомним индекс indexes.push_back(index); } } // Результат работы wcout<<L"Элементы наиболее приближе
нные к среднему арифметическому максимального и минимального элементов последовательности:"<<endl; for(UIVector::const_iterator it=indexes.begin();it!=indexes.end();++it) { wcout<<*it<<L"="<<arr[*it]<<endl; } } catch (bad_alloc) { wcout<<L"Ошибка выделения памяти"<<endl; } catch (...) { wcout<<L"Неизвестное исключение"<<endl; } system("PAUSE"); return
0; }
Ответ отправил: Micren (статус: Студент)
Ответ отправлен: 21.03.2009, 22:09
Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 245731 на номер 1151 (Россия) | Еще номера >>
Отправить WebMoney:
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 162.862
Здравствуйте,у меня есть готовая программа релизующая стек и реализован поиск, она запускается, но не работают процедуры,можете указать на ошибку?Только пожалуйста не надо ее полностью менять,просто скажите где изменить (программа написана преподом вуза мне ее надо сдать примерно в таком формате) и не смотрите мелкие недочеты в оформлении,заранее спасибо
Отвечает: Hubbitus
Здравствуйте, Алалыкина Оля! Да, Вы правы, код ужасный, и помоему для преподавателя это не допустимо тем более... Ну уж какой есть, как Вы и просили, особо менять ничего не буду.
На сколько я понимаю, не работал тольоко поиск, остальное у меня работало сразу. ТАм просто не хватало считывания значения, которое собираетесь искать. Добавил, смотрите в приложении.
Ну и еще пару заметок - я это на Линуксе, (gcc версия 4.3.0) соответственно убрал один инклюд и добавил другой. Ну и еще закоментировал
вызов clrscr, который не переносим между платформами.
Ах да, чуть не забыл, еще у Вас не хватало указание используемого именного пространства, хотя идентификаторы вроде cout, cin Вы использовали без указания нэймспэйса... Добавил using namespace std; в начале.
Приложение:
--------- Если у Вас есть все что Вы хотите - значит Вы мало хотите!
Ответ отправил: Hubbitus (статус: 6-й класс)
Ответ отправлен: 21.03.2009, 20:18
Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 245721 на номер 1151 (Россия) | Еще номера >>
Отправить WebMoney:
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает: Micren
Здравствуйте, Алалыкина Оля! Как пример(правда довольно избыточный) того как это можно реализовать. Тестировался в CodeGear RAD Studio 2009. Как я понял именно борландовскими компиляторами Вы пользуетесь. На современных компиляторах(имеются ввиду компиляторы семейств VC++ и BC++ для Windows) проблем быть не должно.
Пример работы:
Код:
1 - Добавление данных 2 - Просмотр данных 3 - Удаление данных 4 - Поиск 5 - Выход Сделайте свой выбор:2 --------------------------------------- Стек содержит следующие элементы: --------------------------------------- 1 - Добавление данных 2 - Просмотр данных 3 - Удаление данных 4 - Поиск 5 - Выход Сделайте свой выбор:1 --------------------------------------- Введи
те число(пустая строка для завершения):1 Введите число(пустая строка для завершения):2 Введите число(пустая строка для завершения):3 Введите число(пустая строка для завершения):4 Введите число(пустая строка для завершения):5 Введите число(пустая строка для завершения): --------------------------------------- 1 - Добавление данных 2 - Просмотр данных 3 - Удаление данных 4 - Поиск 5 - Выход Сделайте свой выбор:2 --------------------------------------- Стек содержит следующие
элементы: 5 4 3 2 1 --------------------------------------- 1 - Добавление данных 2 - Просмотр данных 3 - Удаление данных 4 - Поиск 5 - Выход Сделайте свой выбор:4 --------------------------------------- Введите число для поиска(пустая строка для завершения):30 Такого значения в стеке нет Введите число для поиска(пустая строка для завершения):3 Такое значение есть в стеке Введите число для поиска(пустая строка д
ля завершения): --------------------------------------- 1 - Добавление данных 2 - Просмотр данных 3 - Удаление данных 4 - Поиск 5 - Выход Сделайте свой выбор:3 --------------------------------------- Элемент 5 удален Стек содержит следующие элементы: 4 3 2 1 --------------------------------------- 1 - Добавление данных 2 - Просмотр данных 3 - Удаление данных 4 - Поиск 5 - Выход Сделайте свой выбор:3 --------------------------------------- Элемент
4 удален Стек содержит следующие элементы: 3 2 1 --------------------------------------- 1 - Добавление данных 2 - Просмотр данных 3 - Удаление данных 4 - Поиск 5 - Выход Сделайте свой выбор:3 --------------------------------------- Элемент 3 удален Стек содержит следующие элементы: 2 1 --------------------------------------- 1 - Добавление данных 2 - Просмотр данных 3 - Удаление данных 4 - Поиск 5 -
Выход Сделайте свой выбор:3 --------------------------------------- Элемент 2 удален Стек содержит следующие элементы: 1 --------------------------------------- 1 - Добавление данных 2 - Просмотр данных 3 - Удаление данных 4 - Поиск 5 - Выход Сделайте свой выбор:3 --------------------------------------- Элемент 1 удален Стек содержит следующие элементы: --------------------------------------- 1 - Добавление данных 2 - Просмотр данных 3 - Удаление данных 4
- Поиск 5 - Выход Сделайте свой выбор:3 --------------------------------------- Список пуст --------------------------------------- 1 - Добавление данных 2 - Просмотр данных 3 - Удаление данных 4 - Поиск 5 - Выход Сделайте свой выбор:
К сожалению максимальный объем приложения ограничен 12000 символами. Поэтому пришлось пожертвовать функционалом списка(который в этой программе не используется) и, что самое обидное
, комментариями(которые я старательно набирал).
Приложение:
Ответ отправил: Micren (статус: Студент)
Ответ отправлен: 22.03.2009, 16:02
Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 245781 на номер 1151 (Россия) | Еще номера >>
Отправить WebMoney:
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вы имеете возможность оценить этот выпуск рассылки. Нам очень важно Ваше мнение!
* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.
Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!
Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.
Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.