| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Одномерный массив!Помогите дописать код |
| Автор: aleksejj 9.6.2009, 22:26 | ||||
Друзья,выручайте!Доделать код!
Здесь нужно увеличить каждую максимальную серию на один элемент! Например: Был массив==> x[0]=4 x[1]=1 x[2]=9 x[3]=9 x[4]=9 x[5]=6 x[6]=6 x[7]=9 x[8]=9 x[9]=9 А надо: x[0]=4 x[1]=1 x[2]=9 x[3]=9 x[4]=9 x[5]=9 x[6]=6 x[7]=6 x[8]=9 x[9]=9 x[10]=9 x[11]=9 Добавлено @ 22:29 Помогите пожалуйста!У меня завтра зачёт по программированию,осталась последняя программма!
|
| Автор: andrew_121 9.6.2009, 22:39 |
| Код отформатируй! Глаза жалко ломать! |
| Автор: aleksejj 9.6.2009, 22:44 |
| void BubbleSortInd (int k, int x[max]) { int i,tek,mx,el; el = 0; tek=mx=1; for(i=1; i<=k+1; i++) if(i==k || x[i]!=x[i-1]) { if(tek>mx) { mx = tek; el = i-1; } tek = 1; } else tek++; ++k; for(i=k+1; i>=el+1; i--) x[i] = x[i-1]; x[el+1] = x[el]; } Эта функция отвечает за добавления элементов!Но я не могу сделать,чтобы увеличились все серии и массив увеличился на количество этих элементов Добавлено через 1 минуту и 10 секунд void BubbleSortInd (int k, int x[max]) { int i,tek,mx,el; el = 0; tek=mx=1; // tek - длина текущей серии // mx - максимальная длина for(i=1; i<=k+1; i++) // идем до конца массива if(i==k || x[i]!=x[i-1]) // если достигли конца массива или // текущий элемент не равен предыдущему { if(tek>mx) // если текущая серия длиннее максимальной, { mx = tek; // запоминаем длину el = i-1; } // и позицию последнего элемента в серии tek = 1; // сбрасываем длину текущей серии (т.к. уже перешли к другой) } else tek++; ++k; // увеличиваем размер массива, т.к. сейчас // добавим еще один элемент for(i=k+1 ; i>=el+1; i--) // идем от конца к последнему элементу самой длинной серии x[i] = x[i-1]; // текущий элемент = предыдущему (сдвигаем часть массива вправо) x[el+1] = x[el]; // теперь добавляем еще один элемент } |
| Автор: andrew_121 9.6.2009, 22:59 |
| Сказал же - отформатируй код! А ты что сделал?! Давай условие. С утра сделаю. На С, или С++ ? |
| Автор: aleksejj 9.6.2009, 23:04 |
| Дан одномерный целочисленный массив,заполненный случайными числами.Серией называется группа подряд идущих элемениов,а их длинной-количество этих элементов(длина может равняться 1 ).Изменить массив,увеличив все серии наибольшей длины на один элемент. Добавлено через 51 секунду НА СИ Добавлено через 1 минуту и 36 секунд А во сколько ты примерно сделаешь?Просто у меня зачёт в 10.25!Помоги |
| Автор: andrew_121 9.6.2009, 23:20 |
| На будущее. Вот что значит форматировать код. ![]() |
| Автор: aleksejj 10.6.2009, 07:36 |
| |
| Автор: zim22 10.6.2009, 09:40 |
| andrew_121, вы уверены что в вашем коде будут бросаться только стандартные исключения? я думаю более правильно добавить в конце ещё один catch(...) |
| Автор: azesmcar 10.6.2009, 09:45 | ||
зачем же catch(...) ? catch(boost::exception&), а уж после этого можно
|
| Автор: andrew_121 10.6.2009, 10:00 |
| zim22, azesmcar, Спасибо за замечания. Полностью согласен |
| Автор: azesmcar 10.6.2009, 10:04 |
просто интересно, а что за #endif? В каком #ifdef е функция main? |
| Автор: andrew_121 10.6.2009, 10:29 | ||
azesmcar, Это файл реализации некого объекта. Выше есть строка
Для отладки. |
| Автор: zim22 10.6.2009, 11:18 | ||
| мне вот интересно, в случае использования function-try блока куда return вставлять? в каждый catch?
|
| Автор: Soah 10.6.2009, 11:26 | ||
| http://www.rsdn.ru/forum/cpp/552965.flat.aspx http://rsdn.ru/article/cpp/try_finally.xml
|
| Автор: zim22 10.6.2009, 11:58 | ||||||||
| Soah, почитал. это всё не то. Про методику RAII я знаю. Но здесь вопрос не в захвате/освобождении ресурса при выхоже из области видимости, а в том, что функция main должна возвращать статус завершения. И если в моём блоке try исключения не будет - то последняя строчка (return 0) выполнится. Но если exception будет кинут, то до return 0 мы не дойдём, соответственно необходимо будет сделать return в одном из блоков catch. Вопрос был в том, что если блоков catch несколько - то приведённый в rsdn аналог finally не подходит
т.к. он вставляет catch(...) Но exception может быть перехвачен в блоке catch выше. например в этом случае:
Приведённый Вами код меня не устраивает. Это не function-try блок и с ним всё проще, return в конце всех catch'ей ставится.
function-try блок - это слово try, которое ставится ДО блока кода(открывающейся фигурной скобки), а не внутри него. он необходимо не так часто, но иногда полезен, например, чтобы перехватывать исключения в constructor initializer list Standard 15.4
|
| Автор: Soah 10.6.2009, 12:07 | ||
да я уже понял, опять решал другую задачу Добавлено через 13 минут и 50 секунд http://www.ddj.com/showArticle.jhtml?articleID=184401297&queryText=%B5m
|
| Автор: aleksejj 10.6.2009, 16:32 |
| |
| Автор: aleksejj 10.6.2009, 21:34 |
| |
| Автор: andrew_121 10.6.2009, 21:56 |
| aleksejj, Чего спамишь? Бан хочешь? |
| Автор: andrew_121 11.6.2009, 05:39 | ||
|
| Автор: andrew_121 11.6.2009, 10:32 |
| Гм... Спасибо. |