انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: برگرداندن چندین مقدار ( حل شد )  (دفعات بازدید: 1655 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
برگرداندن چندین مقدار ( حل شد )
« : 30 تیر 1403، 12:55 ب‌ظ »
درود

میخوام یک تابع (‌به زبان سی ) بنویسم که یک شعاع دریافت بکنه و محیط و مساحت دایره رو برگردونه. بیشتر چیزی شبیه به تاپل ها نیاز دارم.
هیچ راهی وجود نداره که اینکار رو بکنم؟ یا با ارجاع؟ یا اصلا میتونم یک مقدار رو به متغیری که میخوام برگردونم؟ با ساختار ها نمیشه اینکار رو کرد؟
« آخرین ویرایش: 02 امرداد 1403، 02:03 ب‌ظ توسط learner:~$ »
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2657
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : برگرداندن چندین مقدار
« پاسخ #1 : 30 تیر 1403، 12:57 ب‌ظ »
برای برگردوندن چندین مقدار باید از اشاره‌گرها استفاده کنی.
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : برگرداندن چندین مقدار
« پاسخ #2 : 30 تیر 1403، 01:27 ب‌ظ »
برای برگردوندن چندین مقدار باید از اشاره‌گرها استفاده کنی.
خب چطور؟؟  اگه بخوام یه  ساختمان اشاره گر برگردونم چطور؟
یک راه موقت پیدا کردم ولی اصلا بدرد نمیخوره و خیلی بده
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2657
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : برگرداندن چندین مقدار
« پاسخ #3 : 30 تیر 1403، 01:42 ب‌ظ »

void fun(int *px, *py)
{
*px=10;
*py=2;
}

main()
{
int x, y;

fun(&x, &y);

printf("%d %d", x, y);
}


نقل‌قول
اگه بخوام یه  ساختمان اشاره گر برگردونم چطور؟
باید نوع اون ساختمانو به صورت سراسری تعریف کنی بعد نام اونو که خودش یک اشاره گر هستو برگردونی.
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : برگرداندن چندین مقدار
« پاسخ #4 : 30 تیر 1403، 01:48 ب‌ظ »

void fun(int *px, *py)
{
*px=10;
*py=2;
}

main()
{
int x, y;

fun(&x, &y);

printf("%d %d", x, y);
}


نقل‌قول
اگه بخوام یه  ساختمان اشاره گر برگردونم چطور؟

واقعا همین چیزی منظورم نبود اینطوری که نمیتونم هم محیط رو برگردونم هم مساحت ( به یک متغیر )‌
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2657
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : برگرداندن چندین مقدار
« پاسخ #5 : 30 تیر 1403، 01:50 ب‌ظ »
نقل‌قول
واقعا همین چیزی منظورم نبود اینطوری که نمیتونم هم محیط رو برگردونم هم مساحت ( به یک متغیر
یعنی یک متغیر در یک زمان دو مقدارو داشته باشه؟! نمیشه که.
منظورتو نمیفهمم.
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : برگرداندن چندین مقدار
« پاسخ #6 : 30 تیر 1403، 02:20 ب‌ظ »
منظورم همچین چیزیه:‌
#include <stdio.h>
int main()
{

}
float p_and_s(float* R )
{
    float PI = 3.14;
    float S = PI * *R * *R;
    float P = 2 * PI * *R;
    // return S, P?
}


توی راست میشه اینکار رو کرد و حتی پایتون ولی توی سی مطمئن نیستم چطوری( به تابع توجه کنید )‌
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آنلاین esmaeelE

  • ناظر انجمن
  • *
  • ارسال: 1270
  • جنسیت : پسر
پاسخ : برگرداندن چندین مقدار
« پاسخ #7 : 30 تیر 1403، 02:59 ب‌ظ »
دو راه دارید.

۱. ساده‌ترین کار استفاده از ساختار struct با دو مقدار
۲. استفاده از امکانات اشاره‌گر برای پیاده‌سازی pass by reference (ارسال آدرس متغیر به تابع دیگر)




آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2657
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : برگرداندن چندین مقدار
« پاسخ #8 : 30 تیر 1403، 04:56 ب‌ظ »
// return S, P?این نمیشه.

.....
float PI = 3.14;این میشه ولی چون عدد پی همیشه ثابته یا تا دورقم اعشارشو define کن یا تا چندین رقم اعشارش به صورت شاخص شده در math.h هست.  یا ته تهش به صورت متغیر غیرقابل تغیر تعریفش کن. یه const بزار اولش.

.....
درضمن همه‌ی این تابع ها در math.h هست البته با عدد پی ۱۵ رقم اعشار و چون توابع خیلی ساده ای هستند خودت دیگه تاحالا هزار بار نوشتیشون پس از توابع کتابخانه ای اون استفاده کن و در زمان کامپایل یه lm- هم جلویی gcc بزار
« آخرین ویرایش: 30 تیر 1403، 05:27 ب‌ظ توسط بریتانیای کبیر »
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : برگرداندن چندین مقدار
« پاسخ #9 : 30 تیر 1403، 05:48 ب‌ظ »
هیچ کدومش رو درک نمیکنم چون کاربردی نداره.  اشاره گر به تابع؟‌نه فکر کنم زیادی از این زبان انتظار دارم و این درست نیست. اگر میتونستم تاپل هارو پیاده سازی کنم عالی میشد. به نظرم راحت ترین راه استفاده از متعیر های عمومی و خارج اسکوپ هست که این زیاد روش جالبی نیست.
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین Stewart

  • Jr. Member
  • *
  • ارسال: 39
  • جنسیت : پسر
  • تعصب آدم رو کور میکنه
پاسخ : برگرداندن چندین مقدار
« پاسخ #10 : 30 تیر 1403، 06:41 ب‌ظ »
هیچ کدومش رو درک نمیکنم چون کاربردی نداره.  اشاره گر به تابع؟‌نه فکر کنم زیادی از این زبان انتظار دارم و این درست نیست. اگر میتونستم تاپل هارو پیاده سازی کنم عالی میشد. به نظرم راحت ترین راه استفاده از متعیر های عمومی و خارج اسکوپ هست که این زیاد روش جالبی نیست.
بنظرم راه حل pointer که خیلی خوبه :D
با این حال اگه میخوای میتونم برات یه دوره ++C جامع بفرستم که شاید دیدنش خیلی کمکت کنه.
« آخرین ویرایش: 30 تیر 1403، 06:42 ب‌ظ توسط Stewart »

آفلاین جادی

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1610
    • در دفاع از آزادی بیان
پاسخ : برگرداندن چندین مقدار
« پاسخ #11 : 31 تیر 1403، 09:00 ق‌ظ »
هیچ کدومش رو درک نمیکنم چون کاربردی نداره.  اشاره گر به تابع؟‌نه فکر کنم زیادی از این زبان انتظار دارم و این درست نیست. اگر میتونستم تاپل هارو پیاده سازی کنم عالی میشد. به نظرم راحت ترین راه استفاده از متعیر های عمومی و خارج اسکوپ هست که این زیاد روش جالبی نیست.

بچه ها یکی دو بار جواب درست رو دادن: استفاده از struct. حالا اینکه بگی درک نمی کنی چون کاربرد نداره خب یعنی نمی خوای سی یاد بگیری (: مساله اینه که الان پایتون بلدی و انتظار داری سی مثل پایتون کار کنه. اگر علاقمندی سی یاد بگیری با حوصله استراکت رو بخون.
آزادی کیبورد حق هر انسان است - جادی

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : برگرداندن چندین مقدار
« پاسخ #12 : 31 تیر 1403، 09:50 ق‌ظ »
من هیچوقت با زبان  پایتون حال نکردم هرکس به یک چیز علاقه دارد و تنها دو دلیل برای یاد گرفتن پایتون در سطح مبتدی داشتم:‌
۱:‌گسترش دانش خودم.
۲: استفاده از کتابخانه ریکوئست و اسکپی .

من هیچوقت از یادگیری فرار نکردم مخصوصا زبان سی!
دوستان یافتم! ممنون از لینکی که در اختیار بنده دادید.
#include <stdio.h>
void sum_and_product(int a, int b, int* sum, int* product);
int main()
{

    int sum, product, a = 5, b = 2;
    sum_and_product(a, b, &sum, &product);
    printf("sum:%d\tproduct:%d\n", sum, product);

    return 0;
}
void sum_and_product(int a, int b, int* sum, int* product)
{
    *sum = a + b;
    *product = a * b;
}

از زبان سی پلاس پلاس متنفرم تنفری که نسبت به سی پلاس پلاس دارم از پایتون بیشتره.
من کلیات این زبان رو یاد گرفتم و الان وقته جزئیات هست.
دوستان میدونم ربطی به تاپیک نداره  ولی میتونم از توابع اشاره گر در ساختار ها استفاده کنم؟
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2657
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : برگرداندن چندین مقدار
« پاسخ #13 : 31 تیر 1403، 10:19 ق‌ظ »
نقل‌قول
دوستان یافتم!
همون اشاره‌گر دیگه.
نقل‌قول
میتونم از توابع اشاره گر در ساختار ها استفاده کنم؟
یعنی چجوری؟
« آخرین ویرایش: 31 تیر 1403، 10:26 ق‌ظ توسط بریتانیای کبیر »
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.