Вопрос № 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; }
#thank 245694 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 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 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает: 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 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 162.862
Здравствуйте,у меня есть готовая программа релизующая стек и реализован поиск, она запускается, но не работают процедуры,можете указать на ошибку?Только пожалуйста не надо ее полностью менять,просто скажите где изменить (программа написана преподом вуза мне ее надо сдать примерно в таком формате) и не смотрите мелкие недочеты в оформлении,заранее спасибо
Отвечает: Hubbitus
Здравствуйте, Алалыкина Оля! Да, Вы правы, код ужасный, и помоему для преподавателя это не допустимо тем более... Ну уж какой есть, как Вы и просили, особо менять ничего не буду.
На сколько я понимаю, не работал тольоко поиск, остальное у меня работало сразу. ТАм просто не хватало считывания значения, которое собираетесь искать. Добавил, смотрите в приложении.
Ну и еще пару заметок - я это на Линуксе, (gcc версия 4.3.0) соответственно убрал один инклюд и добавил другой. Ну и еще закоментировал
вызов clrscr, который не переносим между платформами.
Ах да, чуть не забыл, еще у Вас не хватало указание используемого именного пространства, хотя идентификаторы вроде cout, cin Вы использовали без указания нэймспэйса... Добавил using namespace std; в начале.
Приложение:
--------- Если у Вас есть все что Вы хотите - значит Вы мало хотите!
Ответ отправил: Hubbitus (статус: 6-й класс)
Ответ отправлен: 21.03.2009, 20:18
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 245721 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает: 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 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.