Форум программистов, компьютерный форум, киберфорум
Наши страницы

АТД список. Заменить меньшую часть списка символом "#" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ массив с меню http://www.cyberforum.ru/cpp-beginners/thread358021.html
люди помогите плиз решить эту лабу по с++ сам фигово в нем пока что... Во всех приведенных ниже вариантах использовать меню для организации работы программы, исходные данные предварительно записать...
C++ Поменять местами первую строку и последний столбец квадратной матрицы Уважаемые программисты, помогите пожалуйста написать функцию и программу на С++, если не очень трудно! Это мне не под силу(((((((((( Задание:Написать функцию, которая меняет местами первую строку и... http://www.cyberforum.ru/cpp-beginners/thread358007.html
Даны 4 вещественных числа. Определить сколько из них отрицательных. C++
Даны 4 вещественных числа. Определить сколько из них отрицательных. Оператор цикла не использовать. если можно с коментариями.
медиа проигрователь C++
Помогите создать небольшой класс про медиа проигрователь в котором есть инф про : 1. вставлен носитель или нет если да то вывести краткую инф о нём 2. играет ли песня или нет(привязать клавишу к сл...
C++ Теория автоматов (лабораторная работа) ПОМОГИТЕ! http://www.cyberforum.ru/cpp-beginners/thread357935.html
Помогите,пожалуйста, сделать лабораторную работу.Очень нужно!Кто знает и может сделать... :wall: Конечный автомат без выходов: A = <A, S, s0, F, f>, де А = {a, b, c, …} – входной алфавит, S = {0,...
C++ Объясните пожалуйста, как узнать тип ОС В связи что нужно срочно разработать программу, то приходится дома писать в убунту, а на работе под виндой, как мне написать код так чтобы он знал где компилируется в винде или в линуксе? заранее спс. подробнее

Показать сообщение отдельно
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
29.09.2011, 23:10
Цитата Сообщение от Nameless One Посмотреть сообщение
Подсчет элементов в половинах списка мне не нравится, буду рад, если кто-то предложит менее костыльное решение
Ну можно добавить альтернативу арифметикой и при том обойдёмся всего одним вызовом подсчёта узлов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
 
int main () {
   char str[] = "abMozo";
   list<char> lst(str, str + strlen(str));
 
   char nch = '#';
   char ch  = 'M';
   size_t  size;
   list<char>::iterator iter;
 
   if((iter = find(lst.begin(), lst.end(), ch)) == lst.end())
           abort();
   if((size = distance(lst.begin(), iter)) < (lst.size() >> 1)) 
         fill_n(lst.begin(), size, nch);
   else
         fill_n(++iter, lst.size() - size, nch);
 
   copy(lst.begin(), lst.end(), ostream_iterator<char>(cout, " "));
   cin.get();
   return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.