PDA

View Full Version : سوال در مورد خروجی توابع



younes_ysf
یک شنبه 30 خرداد 1395, 00:59 صبح
سلام خدمت همه
یه سوال
من تازه کارم دو زمینه برنامه نویسی
می خوام یه تابع بنویسم که با فراخوانیش نام و نام خانوادگی رو بگیره و در خروجی ارائه بده به صورت جدا.
مسئله اینه که نمیدونم چجوری باید دو تا خروجی داشته باشم. گزینه return فقط یه خرجی میده. یا نام یا نام خانوادگی.
یکی از دوستان در مورد تابع ضمنی هم یه چیزایی گفت ولی نتونستم.


#include <iostream>

using namespace std;
string flName (string firstName,string lastName);

int main()
{
string a,b,c;
//string c = "ali";
//string d = "gholi";
//string c;

c = flName (a,b) ;
//cout << a << "14 " << b;
cout << c;


//if (b == "ali" )
// cout << endl << "yes you are";
//else
// cout << endl << "Nooo its not you";

return 0;
}
string flName (string firstName,string lastName)
{

cout << "write down your name and family name" << endl;
cin >> firstName;
cin >> lastName;
//cout << "my name is: \n" << endl << firstName << " " << lastName;
//cout << " ok ";
return lastName;

mostafamd
یک شنبه 30 خرداد 1395, 18:49 عصر
سلام عزیز برنامه شما خیلی ایرادات کلی داره ساختار برنامه درست نیست ...
یه تابع سه تا حالت داره حالت اول هیچ مقداری رو به برنامه بر نمی گردونه و خودش مستقیم یک یا چندتا خروجی رو چاپ می کنه و اصلا مقداری به برنامه فرخوانش بر نمی گردونه

حالت دوم یک مقدار رو بر می گردونه که با دستور RETURN انجام می شه و مقدار در اسم تابع ذخیره میشه و بر می گرده به برنامه فرخوان
حالت سوم بیش از یک مقدار به برنامه فرخوان بر می گرده که این کار به کمک مبحث اشاره گر ها انجام میشه
شما تو این برنامه دو مقدار a , b رو فرستادی اما مقدار ندارن و اومدی داخل تابع cin کردی هدف رو باید مشخص کنی چی می خوای تابع چه کاری باید انجام بده تا بیشتر کمکت کنم

ciavosh
جمعه 25 تیر 1395, 13:03 عصر
در حالت کلی اگر انتظار داشته باشیم که یک تابع بیش از یک مقدار برگردونه، رفرنس متغیرهایی که قرار مقادیر رو نگه دارند در پارامترهای تابع تعریف می‌کنیم.
مثال:

#include <iostream>

int foo(int& a, int& b)
{
a = 10;
b = 20;
return 0;
}

int main()
{
int x, y;
std::cout << foo(x, y) << " ";
std::cout << x << " " << y;
std::cin >> x;
return 0;
}