تغییر متغیر global - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تغییر متغیر global

+1 امتیاز

سلام

من یک تابع دارم که در آن هر وقت به آن مراجعه می کنم باید یک واحد از متغیر گلوبالم کم شود ولی نمی شود وحتی دستور کم کردن آن هم نوشتم ولی نمی شود باید چکار کنم

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int co (int f , int s , int d , char c);
int mn (char  , char , char  , char  );
int ga(int p, char c);
    int f , s , d , n ,p;
    char c1 , c2 , c3 , c;
int main()
{
    scanf("%d %d %d\n%c %c %c\n%d", &f, &s, &d, &c1, &c2, &c3 , &n);
    for(int i = 0; i < n; i++)
    {
        scanf("%d %c", &p , &c);
        ga(p,c);
    }
    return 0;
}
int ga (int p,char c)
{
    switch(c)
    {
        case 'f':
            if(p < 6000)
                 printf("No enough money\n");
            else
                 mn(c,c1,c2,c3);
            return 0;
        case 's':
            if( p < 18000)
                 printf("No enough money\n");
             else
                mn(c,c1,c2,c3);
            return 0;
        case 'd':
            if( p < 30000)
                printf("No enough money\n");
            else
                mn(c,c1,c2,c3);
            return 0;
    }
    return 0;

}
int mn(char c , char c1 , char c2 , char c3)
{
    switch(c)
    {
        case 'f' :
            if(c1 == 'a' )
                 printf("Not a chef\n");
            else
                co(f,s,d,c);
            return 0;
        case 's':
            if( c2 == 'a')
                  printf("Not a chef\n");
             else
                co(f,s,d,c);
            return 0;
        case 'd' :
            if(c3 == 'a')

                  printf("Not a chef\n");
            else
                co(f,s,d,c);
            return 0;
    }
    return 0;
}
int co(int f , int s , int d , char c)
{
    switch(c)
    {
        case 'f' :
            if( f >=1)
            {
                f = f - 1;
                printf("Food is ready\n");
            }
            else
                 printf("Material is not enough\n");
        return 0;
        case 's' :
            if ( s >= 1)
            {
                s = s - 1;
                 printf("Food is ready\n");
            }
            else
                 printf("Material is not enough\n");
        return 0;
        case 'd' :
            if( d >= 1)
            {
                d = d - 1;
                printf("Food is ready\n");
            }
            else
                printf("Material is not enough\n");
            return 0;


    }
    return 0;
}

 

سوال شده آبان 22, 1398  بوسیله ی فرید فتوحی (امتیاز 26)   1 5 8
ویرایش شده آبان 23, 1398 بوسیله ی مصطفی ساتکی
کدتون رو  هم توی سوال ذکر کنید.

1 پاسخ

+1 امتیاز

اگر قراره تابعی مقدار پارامترهای ورودی را تغییر بده باید یا با اشاره گر یا با رفرنس ارسالش کنید به صورت زیر:

//کد شما
int co(int f , int s , int d , char c)


//کد اصلاح شده
//Ansi C
int co(int* f , int* s , int* d , char* c)



//C++
int co(int& f , int& s , int& d , char& c)

چون شما دارید تو ansi c کد می نویسید وقتی پارامتر های شما اشاره گر میشن پس باید در هنگام اضافه کردن هم به مقدارشون اضافه کنید به صورت زیر کدتون را تغییر بدید.

//کد شما
f = f - 1;

//اصلاح شده
*f = *f -1

و اگر تابع دارای پارامتر اشاره گر هستش جهت پاس دادن آرگومان ها به تابع موردنظر باید آدرس متغیر را با استفاد از &  ارسال کنید.

پاسخ داده شده آبان 23, 1398 بوسیله ی farnoosh (امتیاز 8,362)   20 44 59
...