PDA

View Full Version : فرستادن struct از یه تابع به تابع main (مشکل با struct )



hosseinam1370
شنبه 14 تیر 1393, 21:07 عصر
سلام دوستان.
هرکار میکنم تا struct رو از داخل تابع vorodi بفرستم به تابع main و متغییر های استراکت vorod رو بریزم داخل متغییرهای استراکت hossein برای نمایش دادن،هرکار میکنم نمیشه.
دوستان یه دید بزنید ببینید مشکل کجاست.
#include "stdafx.h"
#include <iostream>
using namespace std;
//////////
/////
struct time{
int saat ;
int daqiqe;
};
//////
//////
time vorodi ( time vorod);
///
///
int main()
{
time hossein;
vorodi(hossein);
cout << hossein.daqiqe << " " << hossein.daqiqe;
cin.get();
system("pause");
}
///////
///////
time vorodi (time vorod)
{
time vorod;
cout << "vared kon time ra :";
cin >> vorod.saat >> vorod.daqiqe;
return vorod;
}


مثل int با struct برخورد کردم/ولی باز نشد.:افسرده:

کله ام سوت کشید.

بازم خیلی ممنون دوستان.

مسعود اقدسی فام
شنبه 14 تیر 1393, 21:24 عصر
۱- time رو عوض کنید به یه اسم دیگه.

۲- تابع پایینی هم یه vorod به عنوان آرگومان دریافت می‌کنه و هم یه vorod داخلش تعریف شده. داخل تابع نیازی نیست دوباره تعریف بشه.

فعلا همین دو تا به نظرم رسیدم. اصطلاح کنید و اگه خطا داد بنویسید اینجا.

مسعود اقدسی فام
شنبه 14 تیر 1393, 21:27 عصر
۳- مقدار بازگشتی از تابع رو کجا داخل hossein ریختید که انتظار دارید اعداد صحیحی چاپ بشه؟ مگه نه اینکه تابع پایینی مقادیری دریافتی از کاربر رو return می‌کنه. اما جایی که فراخوانی شده اصلا داخلی متغیری ذخیره نشده.


h = vorodi(hossein);
cout << h.saat << " " << h.daqiqe;


که h‌ از نوع time هست که گفتم بهتره عوضش کنید به یه اسم دیگه.

البته نمی‌دونم چرا hossein رو ارسال می‌کنید به تابع، وقتی خروجی تابع براتون مهم هست.

مسعود اقدسی فام
شنبه 14 تیر 1393, 21:32 عصر
یه راهشم اینطوریه


void vorodi (times &vorod)
{
cout << "vared kon times ra :";
cin >> vorod.saat >> vorod.daqiqe;
}


یعنی استفاده از متغیرهای مرجع.

اینطوری hossein‌ که به صورت پارامتر برای تابع ارسال شده، می‌شه مقدارش رو داخل تابع هم عوض کرد و اون خروجی مطلوب شما رو می‌ده.

hosseinam1370
یک شنبه 15 تیر 1393, 01:38 صبح
اولا از شما بسیار تشکر میکنم که وقت گزاشتید و مشکل منو بدونه منت حل کردید.



البته نمی‌دونم چرا hossein رو ارسال می‌کنید به تابع، وقتی خروجی تابع براتون مهم هست.

فکر میکردم ،تابع vorod مقدار خودش و میریزه داخل تابع hossein . ولی درصورتی که اینجوری نبود. باید یه متغییر از نوع استراکت دیگه معرفی میکردم و مساوی باهاش قرار میدادم،که با کمک شما اینو فهمیدم و انجام دادم و حل شد.
int main()
{
times hossein;
hossein.saat = 0;
hossein.daqiqe = 0;
hossein = vorodi();
cout << hossein.saat << " " << hossein.daqiqe;
cin.get();
system("pause");
}
///////
///////
times vorodi ()
{
times vorod;
cout << "vared kon time ra :";
cin >> vorod.saat >> vorod.daqiqe;
return vorod;
}



ممنون دوسته عزیز.