الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]call local variable to main method

بدأه بلسم أمل في 26 أكتوبر 2013 · 6 رد · 854 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته:

لو سمحتو انا استخدم برنامج dev -c حاليا.. بس أواجه مشكله في استدعاء local variable n 

الى main .... سؤالي بسيط وهو: كيف اقدر اعمل return لل n الى main method..؟؟؟ 

جالسه أعمل تجارب واريدكم تساعدووني :lol:

 

--------------

#include <cstdlib>

#include <iostream>


 try using namespace;


int sum(){
   int m,n,s;
   printf("enter the marks \n");
   scanf("%d", &m);
  
     n=0;
 s=0;
    while(m!=-1){
                 s=s+m;
                 ++n;
                 printf("enter the marks \n");
                   scanf("%d", &m);
}
return s;
}
int main (int argc, char *arvg[]){


int=x;
x=sum();
printf("%d",x);
system("PAUSE");
    return EXIT_SUCCESS;
}

تم تعديل هذه المشاركة بواسطة Snack3r في 26 أكتوبر 2013 في 11:23 — السبب: تعودي على استخدام الوسم الخاص بالكود !

#2

السلام عليكم

 

الكود سي و ليس سي++ :

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

int sum() {
    int m, n, s;
    n = s = 0;

    do {
        printf("Enter the marks : ");
        scanf("%d", &m);
        if (m == -1)
            break;
        s += m;
        n++;
    } while (true);

    return s;
}

int main(int argc, char **arvg) {
    int x = sum();
    printf("%d\n", x);
    system("PAUSE");
    return EXIT_SUCCESS;
}

لم أقهم سؤالك جيدا, هل تريدين إعادة s و n معا ؟

إذا كان هذا هو السؤال فيمكنك جعل الدالة تُعيد مصفوفة من عنصرين مثلا أو استخدمي structure تحتوي على two int.

1
#3

نعم اريد اعادة s,n  معا..

كيف ممكن اعمل مصفوفة تعيد عنصرين؟؟ عطني مثال يساعدني

#4

لغة C لا تسمح للدوال بإعادة أكثر من كائن, لكن توجد عدة حلول لهذه المشكلة, أحد أبرز هذه الحلول هو التمرير بالمرجع لأن التغييرات ستحدث على مستوى العنوان و ليس القيمة, يوجد أيضا حل آخر و هو تمرير بنية أو مؤشر بنية تحوي مجموعة العناصر التي نريد تغيير قيمها.

يمكنك جعل الدالة تعيد مصفوفة من int لكن لا أفضل مثل هذا الحل.

 

استخدام الـ structures هكذا :

#include <stdio.h>

typedef struct {
    int a;
    int b;
} example;

example test(int x, int y) {
    example structExample;
    structExample.a = x;
    structExample.b = y;
    return structExample;
}

int main() {
    example struct1 = test(3, 4);
    example struct2 = test(1, 9);
    printf("struct1 : %d %d\n", struct1.a, struct1.b);
    printf("struct2 : %d %d\n", struct2.a, struct2.b);
    return 0;
}

تحياتي.

2
#5

شكـــرا أستاذنا.. بس م اعرف استخدم ال structure بشكل كثير .. ما متعوده أستخدمه يوجد عندك طريقة المصفوفه؟؟؟

#6

السلام عليكم

البرنامج الذي طرحته لا يعمل لان به بعض الاخطاء القواعدية ، لكن عموما يمكنك استعمال العناوين المرجعية هكذا

#include <cstdlib>

#include <iostream>


 using namespace std;


void sum(int &s,int &n){
   int m;
   printf("enter the marks \n");
   scanf("%d", &m);
  
     n=0;
 s=0;
    while(m!=-1){
                 s=s+m;
                 ++n;
                 printf("enter the marks \n");
                   scanf("%d", &m);
}

}
int main (int argc, char *arvg[]){


int s,n;
sum(s,n);
printf("%d\n",s);
printf("%d\n",n);
system("PAUSE");
    return EXIT_SUCCESS;
}
2
#7

ايوا فهمت الحين.. شكــــــــــــــــــــرا جزيلا abdou&snack3r  على وقتكم

.. م كنت افكر انه ممكن اعمل تعريف للمتغيرات ف function :blush:

يارب زدني علما..

مواضيع مشابهة