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

реализация класса "симметричная матрица целых чисел"... - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ решить уравнение в зависимости от введенного Х (if else) http://www.cyberforum.ru/cpp-beginners/thread253483.html
требуется помощь в решении задачи. дано три уравнения и в зависимости от введенного Х нужно решить определенное уравнение. но программа работает не так как надо, все время выводит результат из первого истинного условия не зависимо от Х , y=1. #include <stdio.h> #include <iostream> #include <math.h> void main()
C++ Структурированные файлы Как сделать,чтобы во всех полях которые у меня объявлены как int в самих функциях при вводе букв она у меня обратно возвращала в меню и программа не подвисала,и я мог заново один из пунктов меню. Сколько не пробывал все время программа возвращает в меню,но там я ничего выбрать уже не могу. #include<iostream> #include <fstream> #include <conio.h> #include <stdlib.h> #include <stdio.h>... http://www.cyberforum.ru/cpp-beginners/thread253476.html
C++ Динамика
При вводе студента появляется одновременно фамилия и число. Как сделать так чтобы поэтапно появлялось ? #include <iostream> #include <conio.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <iomanip> using namespace std;
Строка C++
Есть набор слов и любая текстовая строка. Нужно взять из текстовой строки слова, входящие в данный набор и вывести на экран, применяя strtok, strcmp. На 15 и 20 строчке как сделать? #include <string.h> #include <iostream> #include <conio.h> #include <stdlib.h> using namespace std;
C++ Обработка массивов http://www.cyberforum.ru/cpp-beginners/thread253465.html
Всем доброго времени суток. Помогите, пожалуйста, с задачей. Задан целочисленный массив X из 20 элементов, среди которых есть повторяющиеся. Записать в массив Y по одному элементу их каждой группы одинаковых значений исходного массива.
C++ Содержит ли последовательность хотя бы два соседних числа с одинаковыми знаками? Вводится последовательность ненулевых чисел, 0 — конец последовательности. Определить содержит ли последовательность хотя бы два соседних числа с одинаковыми знаками.Произведение двух чисел с одинаковыми знаками — положительное число. подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
07.03.2011, 23:18     реализация класса "симметричная матрица целых чисел"...
Зачем хранить N^2, когда хватит и половины дозы?
Некоторый функционал.
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <ctime>
 
template<class Tp_>
class SymmetricMatrix {
 public:
  explicit SymmetricMatrix(size_t size, Tp_ (*init)(int, int) = NULL)
    : size_(size), data_(NULL) {
    data_ = new Tp_*[size_];
    for (int i = 0; i < size_; ++i) {
      data_[i] = new Tp_[i + 1];
      if (init != NULL)
        for (int j = 0; j < i + 1; ++j)
          data_[i][j] = init(i, j);
    }
  }
  SymmetricMatrix(const SymmetricMatrix &other)
    : size_(other.size_), data_(NULL) {
    CopyFrom(other);
  }
  ~SymmetricMatrix() {
    Clear();
  }
  const Tp_ &At(size_t i, size_t j) const {
    if (j > i) std::swap(i, j);
    return data_[i][j];
  }
  Tp_ &At(size_t i, size_t j) {
    if (j > i) std::swap(i, j);
    return data_[i][j];
  }
  int Size() const {
    return size_;
  }
  void Clear() {
    if (data_ != NULL)
      for (int i = 0; i < size_; ++i)
        delete [] data_[i];
    delete [] data_;
    data_ = NULL;
    size_ = 0;
  }
  void CopyFrom(const SymmetricMatrix &other) {
    Clear();
    size_ = other.size_;
    data_ = new Tp_*[size_];
    for (int i = 0; i < size_; ++i) {
      data_[i] = new Tp_[i + 1];
      for (int j = 0; j < i + 1; ++j)
        data_[i][j] = other.data_[i, j];
    }
  }
  friend std::ostream &operator<<(std::ostream &o,
                                  const SymmetricMatrix &matrix) {
    for (int i = 0; i < matrix.Size(); ++i) {
      for (int j = 0; j < matrix.Size(); ++j)
        o << std::setw(4) << matrix.At(i, j);
      o << std::endl;
    }
    return o;
  }
  SymmetricMatrix &operator=(const SymmetricMatrix &other) {
    if (&other != this)
      CopyFrom(other);
    return *this;
  }
 private:
  size_t size_;
  Tp_** data_;
};
 
int Random(int i, int j) {
  return rand() % 100;
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  SymmetricMatrix<int> matrix(10, Random);
  for (int i = 0; i < matrix.Size(); ++i)
    matrix.At(i, i) = 0;
  std::cout << matrix << std::endl;
}
Добавлено через 1 минуту
А ошибка может быть из-за того, что delete matr[i] вместо delete [] matr[i].
 
Текущее время: 01:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru