Другие языки программирования и технологии

C++ Шаблоны с массивами

Вообщем написал программку для подсчета среднего всех элементов массива. Требовалось по условию использовать шаблоны. Решил использовать динамические массивы. Когда запускаю, то все нормально вводится, но стоит ввести последний элемент, так тут же выскакивает окно с сообщение об ошибке в куче. Если удаляю в программе строки с высвобождением динам. памяти., то всё работает. В чем проблема. #include <iostream> #include <conio.h> using namespace std; template <typename> X **vvod(X **mas, int str, int stb) { for(int i=0; i<str;> Z srednee(Z **mas, int str, int stb) {Z s=0; for(int i=0; i<str;>[j]; return (s/(str*stb)); } int main() { int stb,str; cout<<"vvedite kol-vo stolbcov = "; cin>>stb; cout<<"vvedite kol-vo strok = "; cin>>str; float **massive=new float*[str]; for(int i=0; i<str;>=new float; } vvod(massive, str, stb); print(massive, str, stb); cout<<srednee(massive,>; i=i+1;} delete[] massive; getch(); return 0; }
AI
Alexander Ignatov
138
а ты размер строки неправильно делаешь
massive[ i ] = new float[ i ] float[ stb ];
ЖИ
Жасулан Ишбанов
2 203
Лучший ответ
Это значит что неправильно динамически выделяешь память
Я бы сделал проще

template<class T>
T* CreateArray2D(int Y, int X)
{
return new T[Y * X];
}

template<class T>
void DeleteArray2D(T* pArray)
{
delete [] pArray;
}

template<class T>
void PrintArray2D(T *pArray, int Y, int X)
{
for (int i = 0; i < Y; i++)
{
for (int j = 0; j < X; j++)
{
cout << "A[" << i << "][" << j << "]\t" << pArray[j] << "\n";
}
pArray += X;
}
}

template<class T>
void InputArray2D(T *pArray, int Y, int X)
{
for (int i = 0; i < Y; i++)
{
for (int j = 0; j < X; j++)
{
cout << "введите A[" << i << "][" << j << "]\t";
cin >> pArray[j];
}
pArray += X;
}
}

template<class T>
T AveArray2D(T *pArray, int Y, int X)
{
T Ret = 0;
for (int i = 0, n = Y*X; i < n; i++)
{
Ret += pArray[ i ];
}
return Ret;
}

int main()
{
int Y, X;
cout << "введите число строк ";
cin >> Y;
cout << "введите число столбцов ";
cin >> X;

float *p = CreateArray2D<float>(Y, X);
InputArray2D(p, Y, X);
PrintArray2D(p, Y, X);
cout << "среднее " << AveArray2D(p, Y, X) << "\n";
DeleteArray2D(p);

return 0;
}
лучше заливайте на http://pastebin.com/ , а то с картинки перенабирать напряжно.