09.01.2010, 22:24
общий
это ответ
Здравствуйте, Penkov213. Старался сохранить Ваш стиль. Передается адрес первого элемента массива и количество строк и столбцов. Проверял в G++. Согласно стандарту, int main. Текст в приложении.
Приложение:
#include <iostream.h>
#define I 3
#define J 4
void inputmas(float *, int, int, char);
void raschet(float *, int, int, int& , int& );
void printmas(float *, int, int, char);
void printrez(float *, int, int, char, int, int);
int main()
{
float c[I][J], d[I][J];
int kol0c, kol0d, kol7to10c, kol7to10d;
inputmas(&c[0][0],I,J,'c');
inputmas(&d[0][0],I,J,'d');
raschet(&c[0][0],I,J,kol0c,kol7to10c);
printrez(&c[0][0],I,J,'c',kol0c,kol7to10c);
raschet(&d[0][0],I,J,kol0d,kol7to10d);
printrez(&d[0][0],I,J,'d',kol0d,kol7to10d);
return 0;
}
void inputmas(float *m, int rows, int cols, char im)
{
int i,j;
cout << "\nВводим массив " << im << "\n";
for (i=0; i<rows; i++)
for ( j=0; j < cols; j++)
{
cout << im << " [" << i << " ][ " << j << " ] = ";
cin >> *(m+i*cols+j);
}
}
void raschet (float *x, int rows, int cols, int& kol0, int& kol7to10)
{
int i,j;
kol0=0;
kol7to10=0;
for (i=0; i<rows; i++)
for ( j=0; j < cols; j++)
{
if (( *(x+i*cols+j) <= 10 ) && ( *(x+i*cols+j) >= 7 ))
kol7to10++;
if ( *(x+i*cols+j) == 0 )
kol0++;
}
}
void printmas(float *x, int rows, int cols, char immas)
{
int i,j;
cout.setf( ios::showpoint | ios::fixed);
cout << "\nМассив " << immas ;
for (i=0; i<rows; i++)
{
cout << "\n";
for(j=0; j<cols; j++)
{
cout.width(8);
cout.precision(2);
cout << *(x+i*cols+j);
}
}
}
void printrez(float *x, int rows, int cols, char immas, int kol0, int kol7to10)
{
printmas(x, rows, cols, immas);
cout << "\n\nКол-во нулевых элементов = " << kol0;
cout << "\nКол-во элементов от 7 до 10 = " << kol7to10;
}