Консультация № 175956
09.01.2010, 21:25
32.73 руб.
0 2 1
Здравствуйте, уважаемые Эксперты. Помогите пожалуйста решить данную задачу:

Дана программа: (приложение).
Изменить данную программу (по возможности, не переделывая с нуля) так, чтобы использовались указатели.

Среда программирования - Borland C++ 3.1

Заранее благодарен.

Приложение:
#include <iostream.h>
#define I 3
#define J 4

void inputmas(float [I][J], char);
void raschet(float [I][J], int& , int& );
void printmas(float [I][J], char);
void printrez(float [I][J], char, int, int);

void main()
{
float c[I][J], d[I][J];
int kol0c, kol0d, kol7to10c, kol7to10d;
inputmas(c,'c');
inputmas(d,'d');
raschet(c,kol0c,kol7to10c);
printrez(c,'c',kol0c,kol7to10c);
raschet(d,kol0d,kol7to10d);
printrez(d,'d',kol0d,kol7to10d);
}


void inputmas(float m[I][J], char im)
{
int i,j;
cout << "\nВводим массив " << im << "\n";
for (i=0; i<I; i++)
for ( j=0; j < J; j++)
{
cout << im << " [" << i << " ][ " << j << " ] = ";
cin >> m[i][j];
}
}


void raschet (float x[I][J], int& kol0, int& kol7to10)
{

int i,j;
kol0=0;
kol7to10=0;
for (i=0; i<I; i++)
for ( j=0; j < J; j++)

{

if (( x[i][j] <= 10 ) && ( x[i][j] >= 7 ))
kol7to10++;
if ( x[i][j] == 0 )
kol0++;
}
}

void printmas(float x[I][J], char immas)
{
int i,j;
cout.setf( ios::showpoint | ios::fixed);
cout << "\nМассив " << immas ;
for (i=0; i<I; i++)
{
cout << "\n";
for(j=0; j<J; j++)

{
cout.width(8);
cout.precision(2);
cout << x[i][j];
}

}
}

void printrez(float x[I][J], char immas, int kol0, int kol7to10)
{
printmas(x,immas);
cout << "\n\nКол-во нулевых элементов = " << kol0;
cout << "\nКол-во элементов от 7 до 10 = " << kol7to10;
}

Обсуждение

давно
Профессор
230118
3054
09.01.2010, 21:37
общий
Penkov213:
Наверное, заменить на указатели там, где используются ссылки?
давно
Академик
320937
2216
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;
}
Форма ответа