Форум программистов, компьютерный форум CyberForum.ru

Сложность абстракции, полиморфизм, дублирование и другие - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перестановка элементов по заданному правилу http://www.cyberforum.ru/cpp-beginners/thread392038.html
Даны массив А размерности N*M и массив В размерности М.Элементы первого столбца массива А упорядочены по невозрастанию.Включить массив В в качестве новой строки в массив А с сохранением упорядоченности. Заранее спасибо.
C++ Не могу понять ошибку. При вводе значений вылетает программа. Задача: Дана система 2-х сторонних дорог. Известна цена на каждом пути. Определить убыток при закрытии дороги. Алгоритм: Функция "poisk" в моей программе находит в графе и выводит самый дешёвый путь (вершины) и его цену. Функция "del" удаляет в матрице инцидентности цену на указанном пути. Исходные данные с файла, где 1 строка кол-во вершин. Проблема: Прога работает лишь при использовании... http://www.cyberforum.ru/cpp-beginners/thread392037.html
Найти путь из А в И C++
Есть у нас точка А и точка В. Идем с А в В, найти пути, которые будут равны 250 и 350 очок. Одна из идей - построить биннарное дерево и обойти. Собственно, интересует как лучше (читать правильно) представить ето (та и граф напоминает, но вага узлов? а не ребер)? http://*************/clip/m0/1321924569-clip-32kb.jpg?nocache=1
C++ функция класса - вызов
есть класс Graph с функцией int OutputMatrix(int i,int j); и матрица int **Matrix; в области private, в cpp я описал функцию: int Graph::OutputMatrix(int i,int j){ int k; k=Matrix; return k; } правильно ли я ее вызываю? int i=1; int j=1;
C++ Поиск в стеке! http://www.cyberforum.ru/cpp-beginners/thread392015.html
Помогите решить: нужно найти сколько элементов стека находится между его минималь- ным и максимальным элементами. Вот что у меня есть #include <iostream> using namespace std; struct tstk { int inf; tstk *a; }sp;
C++ Прямоугольный массив, сортировка В прямоугольном массиве(7 на 8) с по-мощью процедуры сделать все строки упорядоченными по воз-растанию. Исходные числа из файла читать, начиная с "К"-го числа, где К<10 вводить с кла-виатуры. 1) Печатать массив до и после сортировки с помощью проце-дуры. 2) Построить процедуру, кото-рая в заказанной строке переда-ваемого ей прямоугольного массива упорядочивает элемен-ты по убыванию методом... подробнее

Показать сообщение отдельно
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
27.11.2011, 14:01     Сложность абстракции, полиморфизм, дублирование и другие
Цитата Сообщение от Bers Посмотреть сообщение
разницу между "дублированием кода на с++", и "дублированием функционала на с++"
Ага. А я когда циклы копипастом вставляю тоже дублирую. Или два раза подряд вызывая алгоритм find, я получается тоже дублирую код. Так можно дойти до маразма...

Фаулер, если мне не изменяет память, выделял три типа дублирования:
  • текстовое;
  • функциональное;
  • временное.
Текстовое - идентичные куски кода. Решается базовыми способами рефакторинга, такими как выделение и повторное использование метода, например. В самом утрированном виде это может выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for (int i = 0; i < items.size(); ++i) {
    if (items[i] == 5) {
          five = i;
          break;
    }
}
 
for (int i = 0; i < items.size(); ++i) {
    if (items[i] == 15) {
          fifteen = i;
          break;
    }
}
Функциональное - собственно то, о чем мы тоже уже говорили. Дву сущности повторяют функционал друг друга, то есть имеют одно предназначение.
C++
1
2
3
4
5
6
7
struct Point2D {
     int x, y;
};
 
struct Point {
    int x, y;
};
Временное - когда некая работа выполняется несколько раз подряд, но смысла в этом нет.
C++
1
2
3
4
5
6
for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
         item = some(src[i]);
         dst[j] += item;
    }
}
C++
1
2
3
4
5
n = some();
x = n + a + b;
 
n = some();
y = n + b + c;
А Вы же говорите о дублировании, которое можно утрировать к тому, что я вынужден каждый раз писать возвращаемый тип для методов. Это бред же какой-то.
 
Текущее время: 13:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru