Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2009, 19:36   #1
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию Помогите решить задачу на функцию С++

Использование функции-шаблонов: для работы с двумерными массивами арифметических типов данных разработать шаблоны ввода и вывода массива, а также шаблон для решения основной задачи:
Заменить все элементы, попадающие в интервал [a,b], нулем.
Код:
#include "iostream"
#include <conio.h>
using namespace std;
template <typename X>
void addarray(X *a,int n,int N)
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
		{
			cout<<"a["<<i<<"]["<<j<<"]=";
			cin>>a[i][j];
		}
}
template <typename X>
void printarray(X *a,int n,int N)
{
	for(int i=0;i<n;i++,cout<<endl)
		for(int j=0;j<n;j++)
		{
			cout<<"a["<<i<<"]["<<j<<"]="<<a[i][j]<<"\t";
		}	
}
template <typename X>
void sym(X *a,int n,int N,float b,float c)
{	
	float sum=0;
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
				if ((a[i][j]<=c)&&(a[i][j]>=b)) sum+=a[i][j];
	cout<<sum;
}
void main()
{
	int const n=3;
	int const N=3;
	float b,c;
	float a[n][N];
	addarray(a,n,N);
	printarray(a,n,N);
	cout<<"vvedite a=";
	cin>>b;
	cout<<"vvedite b=";
	cin>>c;
	
	sym(a,n,N,b,c);
	getch();
	
}
Помогите исправить что не так.
Many man вне форума Ответить с цитированием
Старый 22.05.2009, 19:40   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Синтаксические ошибки (скобку фигурную забыли). Исправлено.
Код:
#include <iostream>
#include <conio.h>
using namespace std;


template <typename X>
void addarray(X *a,int n,int N)
{
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
		{
			cout<<"a["<<i<<"]["<<j<<"]=";
			cin>>a[i][j];
		}
}
template <typename X>
void printarray(X *a,int n,int N)
{
	for(int i=0;i<n;i++,cout<<endl)
		for(int j=0;j<n;j++)
		{
			cout<<"a["<<i<<"]["<<j<<"]="<<a[i][j]<<"\t";
		}
}
template <typename X>
void sym(X *a,int n,int N,float b,float c)
{
	float sum=0;
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
				if ((a[i][j]<=c)&&(a[i][j]>=b)) sum+=a[i][j];
	cout<<sum;
}


int main()
{
	int const n=3;
	int const N=3;
	float b,c;
	float a[n][N];
	addarray(a,n,N);
	printarray(a,n,N);
	cout<<"vvedite a=";
	cin>>b;
	cout<<"vvedite b=";
	cin>>c;

	sym(a,n,N,b,c);
	getch();

}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 22.05.2009, 20:39   #3
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию

Мне нужно чтобы он заменял на ноль элементы попадающие в интервал [a,b]
Код:
template <typename X>
void sym(X *a,int n,int N,float b,float c)
{
	float sum=0;
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
				if ((a[i][j]<=c)&&(a[i][j]>=b)) sum+=a[i][j];
	cout<<sum;
}
Что нужно здесь исправить?
Many man вне форума Ответить с цитированием
Старый 22.05.2009, 20:48   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Что нужно здесь исправить?
Код:
if ((a[i][j]<=c)&&(a[i][j]>=b)) a[i][j]=0;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 22.05.2009, 21:31   #5
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию

Исправил, всё-равно неработает
Many man вне форума Ответить с цитированием
Старый 22.05.2009, 21:34   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Many man
Исправил, всё-равно неработает
А у меня работает.
Опишите более подробно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 22.05.2009, 21:58   #7
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию

Код:
#include <iostream>
#include <conio.h>
using namespace std;


template <typename X>
void addarray(X *a,int n,int N)
{
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
		{
			cout<<"a["<<i<<"]["<<j<<"]=";
			cin>>a[i][j];
		}
}
template <typename X>
void printarray(X *a,int n,int N)
{
	for(int i=0;i<n;i++,cout<<endl)
		for(int j=0;j<n;j++)
		{
			cout<<"a["<<i<<"]["<<j<<"]="<<a[i][j]<<"\t";
		}
}
template <typename X>
void sym(X *a,int n,int N,float b,float c)
{
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
				if ((a[i][j]<=c)&&(a[i][j]>=b)) a[i][j]=0;

}


int main()
{
	int const n=5;
	int const N=5;
	float b,c;
	int z;
	float a[n][N];
	addarray(a,n,N);
	printarray(a,n,N);
	cout<<"vvedite a=";
	cin>>b;
	cout<<"vvedite b=";
	cin>>c;

	sym(a,n,N,b,c);

	getch();

}
Сделал как вы сказали.
Теперь как вывести массив заменёный нулями?
Many man вне форума Ответить с цитированием
Старый 22.05.2009, 21:59   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Many man
Теперь как вывести массив заменёный нулями?
Ну так добавьте функцию для вывода. И в этом была проблема?
Код:
template <typename X>
void prnt(X *a,int n)
{
float sum=0;
 for(int i=0;i<n;i++)
  {
    for(int j=0;j<n;j++)
    {
     cout.width(4);
      cout.precision(0);
      cout<<a[i][j];
    }
    cout<<endl;
   }

}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 22.05.2009, 22:13   #9
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию

Спасибо, всё получилось.
Many man вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу на функцию в с++ Many man Помощь студентам 7 07.05.2009 21:41
Помогите решить задачу Chuvak Общие вопросы C/C++ 3 07.06.2008 09:48
Помогите решить задачу!!! Колян Помощь студентам 3 03.12.2006 22:19