SeRgikON
03-06-2010, 19:35
Собственно вот программа
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
#define N 100
#define M 100
void main()
{
setlocale(LC_ALL, "Russian");
//int Q[N][M]; //исходная матрица
float summa_v_stroke[N];
//int **Q;
int l,m; //индексы элементов матрицы
int rows,cols; //размер матрицы
//Ввод размерности матрицы
printf("Введите элементы матрицы\n");
printf("Строки=");
scanf("%d", &rows);
printf("Столбцы=");
scanf("%d", &cols);
//Выделение динамической памяти под массив
float **Q=(float**) malloc (rows*sizeof(float*));
Q[0]=(float*) malloc (rows*cols*sizeof(float));
for(l=1; l<rows; l++)
{
Q[l]=Q[0]+l*cols;
}
// Q=(int**) calloc (rows/cols,sizeof(int*));
// for(int i=0;i<rows/cols;i++)
// {
// *(Q+i)=(int*) calloc (cols,sizeof(int));
// }
//Ввод элементов матрицы
printf("Введите элементы матрицы\n");
for(l=0; l < rows; l++)
for(m=0; m < cols; m++)
scanf("%f", *(*(Q+l)+m));
//Вычисление среднего арифметического в строках матрицы
printf("Найдите средние значения строк\n\n");
for(l=0; l < rows; l++)
{
summa_v_stroke[l]=0;
for(m=0; m < cols; m++)
{
summa_v_stroke[l] +=Q[l][m]; //нахождение суммы элементов в строке
}
summa_v_stroke[l] = summa_v_stroke[l]/cols; //нахождение среднего арифметического в строке
printf("Среднее значение %d строки %.2f\n", l, summa_v_stroke[l]);
}
printf("\n\n");
//Вывод полученной матрицы
printf("Результат:\n");
for(l=0; l < rows; l++)
{
printf("\n");
for(m=0; m < cols; m++)
{
Q[l][m] = Q[l][m]-summa_v_stroke[l];
printf("%f\t", Q[l][m]);
}
printf("\n");
}
}
как реализовать выделение динамической памяти? (вариант который сейчас не работает, как и тот который закомментирован ниже) если кому не трудно, подскажите плиз
П.С при компиляции ошибок нет, но при запуске
http://s51.radikal.ru/i134/1006/11/b4fdabec9c01.png
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
#define N 100
#define M 100
void main()
{
setlocale(LC_ALL, "Russian");
//int Q[N][M]; //исходная матрица
float summa_v_stroke[N];
//int **Q;
int l,m; //индексы элементов матрицы
int rows,cols; //размер матрицы
//Ввод размерности матрицы
printf("Введите элементы матрицы\n");
printf("Строки=");
scanf("%d", &rows);
printf("Столбцы=");
scanf("%d", &cols);
//Выделение динамической памяти под массив
float **Q=(float**) malloc (rows*sizeof(float*));
Q[0]=(float*) malloc (rows*cols*sizeof(float));
for(l=1; l<rows; l++)
{
Q[l]=Q[0]+l*cols;
}
// Q=(int**) calloc (rows/cols,sizeof(int*));
// for(int i=0;i<rows/cols;i++)
// {
// *(Q+i)=(int*) calloc (cols,sizeof(int));
// }
//Ввод элементов матрицы
printf("Введите элементы матрицы\n");
for(l=0; l < rows; l++)
for(m=0; m < cols; m++)
scanf("%f", *(*(Q+l)+m));
//Вычисление среднего арифметического в строках матрицы
printf("Найдите средние значения строк\n\n");
for(l=0; l < rows; l++)
{
summa_v_stroke[l]=0;
for(m=0; m < cols; m++)
{
summa_v_stroke[l] +=Q[l][m]; //нахождение суммы элементов в строке
}
summa_v_stroke[l] = summa_v_stroke[l]/cols; //нахождение среднего арифметического в строке
printf("Среднее значение %d строки %.2f\n", l, summa_v_stroke[l]);
}
printf("\n\n");
//Вывод полученной матрицы
printf("Результат:\n");
for(l=0; l < rows; l++)
{
printf("\n");
for(m=0; m < cols; m++)
{
Q[l][m] = Q[l][m]-summa_v_stroke[l];
printf("%f\t", Q[l][m]);
}
printf("\n");
}
}
как реализовать выделение динамической памяти? (вариант который сейчас не работает, как и тот который закомментирован ниже) если кому не трудно, подскажите плиз
П.С при компиляции ошибок нет, но при запуске
http://s51.radikal.ru/i134/1006/11/b4fdabec9c01.png