PDA

View Full Version : شمارش تعداد دفعات صدا زدن یک تابع



fshb_ 1370
پنج شنبه 06 آبان 1389, 08:02 صبح
سلام
میخوام برنامه ای بنویسم که به تعداد دفعاتی که تابع صدا زده میشه، پارامتر تابع رو (که یک string هست) چاپ کنه. و برای محاسبه تعداد دفعات فراخوانی تابع نباید از یک پارامتر int که در هدر تابع تعریف شده استفاده کنه.
این پروژه دانشجویی نیست، یکی از سوالات کتابی هست که میخونم.
برنامه کامل رو نمیخوام، فقط برای تعداد دفعات تکرار تابع نمیدونم باید از چه راهی استفاده کنم. اگه میشه ی راهنایی بکنید.
در ضمن اینکه در main یک متغیر تعریف کنم و بعد از صدا زدن تابع مقدار اون رو افزایش بدم و از for برای تکرار صدا زدن تابع استفاده کنم، هم ، غلطه.
ممنون

r00tkit
پنج شنبه 06 آبان 1389, 09:34 صبح
دوست عزیز به متغیر از نوع static تعریف کن تو تابع مشکلت حله



void geek(string s)
{
static int x;
x++;

for(int i=0;i<x;i++)
cout<<s;

}




چون متغیر x یه متغیر static هستش تو هر دفعه اجرای تابع مقدار قبلیش ذخیره می شه

Salar Ashgi
پنج شنبه 06 آبان 1389, 09:48 صبح
میتونید از متغیرهای global استفاده کنید :



#include <iostream>
#include <conio>
#include <string>
using namespace std;
int cnt=0;
void print(string str,int n){
cnt++;
for(int i=1;i<=n;i++)
cout<<str<<endl;}
//========================
int main(){
for(int i=1;i<=4;i++){
print("salar",i);
cout<<"========\n";}
cout<<"Count is :"<<cnt<<endl;
getch();
}

r00tkit
پنج شنبه 06 آبان 1389, 10:00 صبح
میتونید از متغیرهای global استفاده کنید :



#include <iostream>
#include <conio>
#include <string>
using namespace std;
int cnt=0;
void print(string str,int n){
cnt++;
for(int i=1;i<=n;i++)
cout<<str<<endl;}
//========================
int main(){
for(int i=1;i<=4;i++){
print("salar",i);
cout<<"========\n";}
cout<<"Count is :"<<cnt<<endl;
getch();
}





میخوام برنامه ای بنویسم که به تعداد دفعاتی که تابع صدا زده میشه، پارامتر تابع رو (که یک string هست) چاپ کنه
و برای محاسبه تعداد دفعات فراخوانی تابع نباید از یک پارامتر int که در هدر تابع تعریف شده استفاده کنه.
در ضمن اینکه در main یک متغیر تعریف کنم و بعد از صدا زدن تابع مقدار اون رو افزایش بدم و از for برای تکرار صدا زدن تابع استفاده کنم، هم ، غلطه.تصحیح شد:



در کد بالا برای اینکه تعدا چاپ رشته (که همون تعداد فراخوانی تابع هستش) ذخیره بشه از i که توسط حلقه به تابع فرستاده شده استفاده شده که طراح سوال اینو نخواسته !!!!

هر چند cnt تعدا کل فراخوانیها رو نشون داده که طراح سوال اینو مطرح نکرده بود


int cnt=0;
void print(string str){
cnt++;
for(int i=1;i<=cnt;i++)
cout<<str<<endl;
}


منظور نویسنده اینه که رشتهی مورد نظر تو تابع به تعداد فراخوانی های تابع چاپ بشه و این تعداد فراخوانی نباید توسط حلقه به تابع فرساده بشه

Salar Ashgi
پنج شنبه 06 آبان 1389, 10:12 صبح
تصحیح شد:

چیزی اشتباه نبود که بخواد تصحیح بشه !


منظور نویسنده اینه که رشتهی مورد نظر تو تابع به تعداد فراخوانی های تابع چاپ بشه و این تعداد فراخوانی نباید توسط حلقه به تابع فرساده بشه

قرار نیست که همه چی رو آماده به آدم تحویل بدن ، این فقط یه ایده بود ، تکمیل کردن برنامه با اهداف مورد
نظرش به عهده نویسنده ...

Pouri_sb
پنج شنبه 06 آبان 1389, 10:16 صبح
میتونید از متغیرهای global استفاده کنید :



#include <iostream>
#include <conio>
#include <string>
using namespace std;
int cnt=0;


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