Лаба №3. Адресная арифметика и управление памятью [Вариант 3]

Вариант: 
3
Решение
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
 
void FreeMem(double **, int);
 
double **GetMem(int TempRows, int TempCols)
{
int i, j;
double **TempArray;
 
TempArray = (double **)calloc(TempRows,sizeof(double *));
if (!TempArray)
return NULL;
else
for (i=0; i<TempRows; i++)
{
TempArray[i] = (double *)calloc(TempCols,sizeof(double));
if (!TempArray[i])
{
FreeMem(TempArray,i);
return NULL;
}
}
 
for (i=0; i<TempRows; i++)
for (j=0; j<TempCols; j++)
while(!scanf("%lf",&TempArray[i][j]))
{
printf("Error...Enter a number\n");
fflush(stdin);
}
return TempArray;
}
 
int ModArray(double **TempArray, int TempRows, int m)
{
int i, j;
double *max;
max = (double *)calloc(TempRows,sizeof(double));
 
for (i=0; i<TempRows; i++)
max[i]=TempArray[i][0];
 
for (i=0; i<TempRows; i++)
for (j=1; j<m; j++)
if (TempArray[i][j] > max[i])
max[i] = TempArray[i][j];
 
for (i=0; i<TempRows; i++)
if (max[i])
for (j=0; j<m; j++)
TempArray[i][j]/=max[i];
else
return 0;
 
return 1;
 
}
 
void FreeMem(double **TempArray, int TempRows)
{
int i;
for (i=0; i<TempRows; i++) 
free(TempArray[i]);
free(TempArray);
}
 
void PrintArray(double **TempArray, int TempRows, int TempCols)
{
int i, j;
for (i=0; i<TempRows; i++)
{
for (j=0; j<TempCols; j++)
printf("%.2lf ",TempArray[i][j]);
printf("\n");
}
}
 
void main()
{
int Rows, Cols;
double **Array;
fflush(stdin);
 
printf("Enter size of array\nRows=");
while (!scanf("%d",&Rows)||Rows<=0)
{
printf("Error...Enter a natural number\nRows=");
fflush(stdin);
}
 
printf("Cols=");
while (!scanf("%d",&Cols)||Cols<=0)
{
printf("Error...Enter a natural number\nCols=");
fflush(stdin);
}
 
printf("Fill the array\n");
Array = GetMem(Rows,Cols);
if (!Array)
{
printf("Error...memory not allocated");
getch();
return;
}
printf("\nThe original array:\n");
PrintArray(Array,Rows,Cols);
if (ModArray(Array,Rows,Cols))
{
printf("\nThe modified array:\n");
PrintArray(Array,Rows,Cols);
}
else
{
printf("\nError...Division by zero\n");
getch();
return;
}
FreeMem(Array,Rows);
getch();
}
Файл с решением: 
Задание

Массив размерностью NxM. Необходимо каждый элемент строки разделить на наибольший элемент строки. 

Комментарии

Если вас интересует разработка сайтов в москве, то случше сразу заглянуть в портфолио. Там Есть много новых идей для интернет-сайта