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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2011, 21:38   #1
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
Сообщение Visual C++ Express 2010. Перегруженные функции.

Привет всем. Проблема в том что не могу понять как создавать перегруженные функции, есть учебники, есть примеры, но все равно не получается додуматься.Само задание, это простейшее перемножение двумерных матриц, но проблема в том что нужно сделать программу, способную работать и с int и float данными. Если кому не тяжело, объясните мне как это сделать. Собственно код программы, какой у меня есть на данный момент(это версия работает только с int данными).
Код:
#include "stdafx.h"
int proizv(int A[3][3],int B[3][3],int AB[3][3]);
float proizv(float A[3][3], float B[3][3], float AB[3][3]);

int main(){
	int A[3][3], B[3][3], AB[3][3];
	
std::cout<<"Vvedi A:";
for(int sr=1;sr<3;sr++){
	for(int st=1;st<3;st++){
		std::cin>>A[sr][st];
	}
}
std::cout<<"Vvedi B:";
for(int sr=1;sr<3;sr++){
	for(int st=1;st<3;st++){
		std::cin>>B[sr][st];
	}
}

AB[1][1]=A[1][1]*B[1][1]+A[1][2]*B[2][1];
AB[1][2]=A[1][1]*B[1][2]+A[1][2]*B[2][2];
AB[2][1]=A[2][1]*B[1][1]+A[2][2]*B[2][1];
AB[2][2]=A[2][1]*B[1][2]+A[2][2]*B[2][2];

std::cout<<"Rezultat A*B:";
for(int sr=1;sr<3;sr++){
	for(int st=1;st<3;st++){
		std::cout<<AB[sr][st]<<" ";
	}
}
system("PAUSE");
}
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 03.05.2011, 23:34   #2
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Люди, хелп плиз, посоветуйте хоть, где почитать.
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 04.05.2011, 01:03   #3
Biggs
Пользователь
 
Регистрация: 15.07.2010
Сообщений: 74
По умолчанию

int sum(int a,int b){ return a+b;}
float sum(float a,float b){return a+b;}

int _tmain(int argc, _TCHAR* argv[])

{
float a,b;int s,d;
s=1;
d=2;
a=8;
b=9;
std::cout<<sum(a,b)<<"\n";
std::cout<<sum(s,d)<<"\n";
getch();
return 0;
}
Biggs вне форума Ответить с цитированием
Старый 04.05.2011, 01:32   #4
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Спасибо за ответ, но в нем отсутствует полезная мне информация. Непонятно, как создать перегруженную функцию, как к ней обратиться и как вывести результат ее работы.
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 04.05.2011, 08:46   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Непонятно, как создать перегруженную функцию
Код:
int sum(int a,int b){ return a+b;}
 float sum(float a,float b){return a+b;}
Заметили разные типы параметров?

Цитата:
как к ней обратиться
Код:
std::cout<<sum(a,b)<<"\n";
 std::cout<<sum(s,d)<<"\n";
Заметили, что параметры разных типов?

Цитата:
ак вывести результат ее работы.
Это вообще из раздела - я совсем тупой. Так же как и любо другой.
p51x вне форума Ответить с цитированием
Старый 04.05.2011, 10:16   #6
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Демик

Люди, хелп плиз, посоветуйте хоть, где почитать.

перегрузка функций - это фундаментальные возможности C++, поэтому почитать можно в любом учебнике по C++ (за исключением, может быть, тех, в названии которых присутствуют фразы "... за 5 минут", "... для чайников" или "... для полных идиотов")
Rififi вне форума Ответить с цитированием
Старый 04.05.2011, 11:07   #7
Damnar
Пользователь
 
Регистрация: 27.03.2011
Сообщений: 12
По умолчанию

В данном случае лучше создать функцию - шаблон
Код:
template <class Any >
Any* proizv(Any *, Any *, Any*)
int main()
{...
....
}
template <class Any >
Any* proizv(Any * A, Any * B, Any * C)
{...}
это смысл шаблона и для каждого типа данных подставляется автоматически вместо Any тот тип, который Вы используете.
Литература Стивен прата в пдф - 214 страница

Последний раз редактировалось Damnar; 04.05.2011 в 11:13.
Damnar вне форума Ответить с цитированием
Старый 04.05.2011, 12:10   #8
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Всем спасибо что откликнулись), а особое спасибо Damnar
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 06.05.2011, 00:40   #9
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Эмм, со всеми советами удалось сотворить "это"- компилируется без проблем, но вывода результата нет, в чем моя ошибка?
Вот код:
Код:
#include "stdafx.h"

void proizv(int Ai[3][3],int Bi[3][3],int ABi[3][3]){

ABi[1][1]=Ai[1][1]*Bi[1][1]+Ai[1][2]*Bi[2][1];
ABi[1][2]=Ai[1][1]*Bi[1][2]+Ai[1][2]*Bi[2][2];
ABi[2][1]=Ai[2][1]*Bi[1][1]+Ai[2][2]*Bi[2][1];
ABi[2][2]=Ai[2][1]*Bi[1][2]+Ai[2][2]*Bi[2][2];

std::cout<<"Rezultat A*B int:";
for(int sr=1;sr<3;sr++){
	for(int st=1;st<3;st++){
		std::cout<<ABi[sr][st]<<" ";
	}
}
}
void proizv(float Af[3][3], float Bf[3][3], float ABf[3][3]){

ABf[1][1]=Af[1][1]*Bf[1][1]+Af[1][2]*Bf[2][1];
ABf[1][2]=Af[1][1]*Bf[1][2]+Af[1][2]*Bf[2][2];
ABf[2][1]=Af[2][1]*Bf[1][1]+Af[2][2]*Bf[2][1];
ABf[2][2]=Af[2][1]*Bf[1][2]+Af[2][2]*Bf[2][2];
std::cout<<"Rezultat A*B float:";
for(int sr=1;sr<3;sr++){
	for(int st=1;st<3;st++){
		std::cout<<ABf[sr][st]<<" ";
	}
}
}
void main(){
int Ai[3][3], Bi[3][3], ABi[3][3];
float Af[3][3], Bf[3][3], ABf[3][3];
	std::cout<<"Vvedi A int:";
for(int sr=1;sr<3;sr++){
	for(int st=1;st<3;st++){
		std::cin>>Ai[sr][st];
	}
}
std::cout<<"Vvedi B int:";
for(int sr=1;sr<3;sr++){
	for(int st=1;st<3;st++){
		std::cin>>Bi[sr][st];
	}
}

std::cout<<"Vvedi A float:";
for(int sr=1;sr<3;sr++){
	for(int st=1;st<3;st++){
		std::cin>>Af[sr][st];
	}
}
std::cout<<"Vvedi B float:";
for(int sr=1;sr<3;sr++){
	for(int st=1;st<3;st++){
		std::cin>>Bf[sr][st];
	}
}
void proizv(float Af[3][3], float Bf[3][3], float ABf[3][3]);
void proizv(int Ai[3][3],int Bi[3][3],int ABi[3][3]);

system("PAUSE");
}
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 06.05.2011, 06:55   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
void proizv(float Af[3][3], float Bf[3][3], float ABf[3][3]);
void proizv(int Ai[3][3],int Bi[3][3],int ABi[3][3])
Это что за бред в мейне? Вы не знаете как вызываются функции?
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как подключить System.Math (математические функции) в MS Visual C# Express Edition vedro-compota Общие вопросы .NET 5 25.01.2011 09:08
Visual C++ 2010 Express. как заполнить VERSION INFO своей программе. Пепел Феникса Visual C++ 9 22.01.2011 00:34
visual studio 2010 express скомпилировать .cpp файл. the_deer_one Visual C++ 6 25.08.2010 13:43
неполадки с Microsoft Visual C++ 2010 Express Плюшкеевич Visual C++ 2 15.06.2010 19:01
Проблема с windows visual styles в Visual studio 2008 express. [awa Visual C++ 2 09.01.2010 06:05