#include "stdafx.h"
#include "malloc.h"
float **matrix;
int n;
void first(void)
{
float **matrix;
int n;
int i,j;
printf("Enter number of columns & rows:\t\n");
scanf("%d", &n);
matrix = (float**)malloc(n * sizeof(float*));
for(i = 0; i < n; i++)
matrix = (float*)malloc(n * sizeof(float));
}
void second(void)
{
float **matrix;
int n;
int i, j, tmp;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
{printf("Enter element of matrix\t");
printf("%f", matrix[j]);
}
for( i = 0; i < n; ++i )
for( j = 0; j < i; ++j )
{
tmp = matrix[j];
matrix[j] = matrix[j];
matrix[j] = tmp;
}
for( i = 0; i < n; ++i )
for( j = 0; j < i; ++j )
printf("%3d", matrix[j]);
}
void third(void)
{int i;
float **matrix;
for(i = 0; i < n; i++)
free(matrix);
free(matrix);
}
int _tmain(int argc, _TCHAR* argv[], int n)
{
first();
second();
third();
return 0;
}
ошибки при работе с динамическим массивом Visual C++
Первая функция получает размерность массива, создает динамический массив и возвращает указатель на начало созданного массива.
Вторая – получает адрес массива и его размерность и решает одну из ниже перечисленных задач(транспонирование матрицы).
Третья функция получает адрес массива и его размерность и освобождает память, занятую массивом.
Размерность вводится с клавиатуры в функции main() и передается в первую функцию. Значения элементов вводятся с клавиатуры в первой функции.
В заданиях с нечетным номером использовать функции управления
памятью библиотеки языка С (#include ).
вот сам код
Код:
может кто нибудь помочь с этим? заранее благодарен =)
она уже глобально определена, и каждый раз локальная матрица инициализируется.
спасибо, это я учту :)
Цитата: psyxo
Вторая – получает адрес массива и его размерность и решает одну из ниже перечисленных задач(транспонирование матрицы).
она не получает никаких адресов (судя по коду)
Цитата: psyxo
Третья функция получает адрес массива и его размерность и освобождает память, занятую массивом.
такая же фигня
все ф-ции работают с разными массивами, вторая и третья вообще с неициализированными.
можешь объяснить, как инициализировать массив, и что должно указывать на матрицу? я недавно начал С++ изучать. Благодарен любому совету))
в коде, во всех ф-ях удали строку float **matrix, а в самом начале оставь, и пусть она (эта матрица) будет единственной и глобальной.
спасибо огромное, сейчас так и сделаю, если не получится то отпишу
заработало! теперь всё без ошибок, НО теперь я не могу ввести элементы матрицы, они уже введены. Это может быть из за того, что компилятор ругается на scanf и warning C4101: 'j' : unreferenced local variable?
http://msdn.microsoft.com/en-us/library/c733d5h9%28VS.80%29.aspx
по простому переменная не используется.... т.е. компилиятор считает, что она лишняя
по простому переменная не используется.... т.е. компилиятор считает, что она лишняя