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

Транспонированая матрица - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Построчное чтение из файла http://www.cyberforum.ru/cpp-beginners/thread682102.html
Вечер добрый! С с++ только знакомлюсь. Нужно обработать файл. Построчно считываю данные, и обрабатываю их. Но вот ведь какая странность. Последняя строка считывается дважды file = fopen(file_name, "r"); while (!feof(file)){ str = fgets(line, 1000, file);
C++ Вычислить таблицу значений функции, используя switch в паре с break, оператор перехода goto Доброго вам времени суток. Есть самое бредовое задание которое я только видел в своей жизни. Написать программу, используя операторы переключения switch в паре с оператором break, оператор перехода goto. Вычислите таблицу значений функции Y=f1(x), если xЄX1, Y=f2(x), если xЄX2, Y=f3(x), если xЄX3, Y=f4(x), если xЄX4. для целочисленных значений аргумента x из интервала . Множе-ства... http://www.cyberforum.ru/cpp-beginners/thread682098.html
Как записать функцию arccrg? C++
Как записать функцию arccrg и плиз чтоо это такое(проста лабу сделал,а вот что это за триногометрическая функция незнаю=))?
C++ Не работают функции удаления и добавления данных в класс
не работают функции удаления страны и добавления.. помогите исправить ошибки..просто срочно нужно.. #include<math.h> #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<time.h> #include<dos.h>
C++ Найти все корни уравнения на заданном интервале http://www.cyberforum.ru/cpp-beginners/thread682086.html
Помогите написать программу буду очень признателен) В ходе выполнения работы необходимо создать программу, которая находит все корни уравнения на заданном интервале с заданной точностью (задается пользователем). Программа должна выводить список корней (при этом корни не должны повторяться) либо выводить соответствующее сообщение, если корней нет. ctg(x)*sin((x^3)/2)+1=0
C++ Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр Помогите написать код,очень Вас прошу.. вот условие: Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр. Заранее ОЧЕНЬ благодарю всех,кто сможет хоть чем-то мне помочь! подробнее

Показать сообщение отдельно
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
28.10.2012, 09:18     Транспонированая матрица
Цитата Сообщение от tyry Посмотреть сообщение
хорошо хотел бы я ненмого подучиться с динамическими массивами)
на с++выделяется память таким образом
инициализируете указатель
C++
1
 int *p //имя конечно может быть любое и ип данных тоже, вплоть до ваших собственных клаcсов/структур и тд и тп
далее необходимо выделить под этот указатель память
C++
1
p = new int [n]//выделить память можно при инициализации n должно быть целым числом, если выделяете одну ячейку [n] писать не будет. оператор new автоматически выделяет память под ваш тип и количество этой памяти указывается в скобках
теперь у нас грубо говоря есть массив p[n]; c ним можно работать как со статическим
чтобы выделять память под 2хмерный или nмерный массив нужно сначала знать скольки мерный массив у вас будет. Соответственно поставить перед указателем нужное количество звездочек.
например у нас массив будет 2х мерный.
C++
1
2
int **p =new int*[n];//** перед указателем означает что мы инициализируем 2мерный массив и сразу выделяем ему память в n ячеек. грубо говоря у нас массив р будет состоять из n массивов.
далее необходимо выделять память каждому массиву массивов это делается как в предыдущем примере за исключением что вместо p пишется p[i]
C++
1
p[i] = new int [n]//где i соответственно iй массив массивов. //Также можно не выделять память а присоединить уже существующую.
например
в какой то отдельной функции или даже в мэйне вы например указателю *a выделили память 5 ячеек
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int *bla_bla_bla(){
//bla bla bla
int *a=new int [n1];
//
return a;
}
 
void main{
//bla bla bla
int **p =new int*[n]
p[i]=bla_bla_bla();//функция возвращает указатель на какуюто память, соответственно указатель одного из массива массивов указывает на эту память
//bla bla bla
}
после всех действий память желательно подтереть это делается оператором delete[] или delete
если у вас переменная
C++
1
delete a;
если у вас массив то
C++
1
delete[] a;
если у вас массив массивов, то необходимо удалять снизу вверх, возьмем для примера 3х менрый массив
C++
1
2
3
4
5
6
7
for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
        delete[] mas[i][j];//delete[] соответственно удалит все массивы по ячейкам j и у нас останется, так сказать матрица ячеек nxm пустых, которым опять можно выделить память
for(int i=0;i<n;i++)
    delete[] mas[i];//далее удаляем все iе массивы и у нас остается только массив ячеек куда мы можем выделить еще память чтобы создать 2мерный масив ячеек куда мы в свою очередь можем выделить память под сами данные
delete[] mas;//полностью очистили память
//З.Ы. при выделение память 2менрному и nмерным масивам не обязательно создавать квадратные матрицы или векторы. Оператору delete[] глубоко пофигу на размер удаляемой памяти, будь то удаляемая область постоянная или меняющаяся(у него помоему есть какойто указатель на длину и он удалит ровно столько сколько надо)
Добавлено через 1 минуту
Есть еще так называемая алгебра указателей, которая позволяет спокойно перемещаться по массиву без применения дополнительных циклов или переменных, но это лучше почитайте отдельно
 
Текущее время: 00:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru