سئوالات و مشکلات برنامه نویسی به زبان C و ++C

ناآشنا

عضو جدید
کاربر ممتاز
خوب یه برنامه استاد داده بود که خروجی محیط دایره بود.... ولی اونم int نوشته بود....
return رو متوجه نشدم./.

سلام دوست عزیز
ببینید:
ساختار کلی تابع این هست:
کد:
[FONT=Tahoma][SIZE=2][COLOR=#000000][COLOR=Blue][SIZE=3]
function functionName(argument):returnType{     statements; }[/SIZE][/COLOR][/COLOR][/SIZE][/FONT]
functionName : نام تابع می باشد که که توسط آن شما می توانید تابع را فراخوانی نمایید.
argument : یا آرگومان های تابع ورودی های تابع می باشند که با کاما از هم جدا می شوند (در ادامه با مثال توضیح بیشتر داده می شود)

returnType : نوع بازگشت تابع می باشد، در واقع برای تعیین نوع مقداری که قرار است درون تابع return شود در صورتی که تابع شما return ی نداشته باشد این مقدار بر روی void قرار می دهیم و این به این معنی می باشد که تابع مقداری را بر نمی گرداند، البته تعریف این مقدار الزامی نیست و در صورتی که نوع خروجی را ندانید می توانید با ستاره(*) به هر نوعی از اطلاعات اشاره نمایید.

statements : شامل کدی می شود که می بایست با هر بار فراخوانی تابع اجرا شود.

برای درک بیشتر return تابعی تعریف می کنیم که دو قدار را جمع کند و یک مقدار به عنوان خروجی بدهد:
کد:
[FONT=Tahoma][SIZE=2][COLOR=#000000][COLOR=Blue][SIZE=3]
[FONT=arial]function calculate()

{     var num1:Number = 50;

    var num2:Number = 100;

    var myResult:Number;

      myResult = num1+num2;

    return myResult;
}[/FONT][/SIZE][/COLOR][/COLOR][/SIZE][/FONT]

امیدوارم متوجه ساختار و تعاریف شده باشین.
پیروز باشید.
:gol:
 

لیختن اشتاین

عضو جدید
سلام دوست عزیز ببینید: ساختار کلی تابع این هست:
کد:
[FONT=Tahoma][SIZE=2][COLOR=#000000][COLOR=Blue][SIZE=3] function functionName(argument):returnType{     statements; }[/SIZE][/COLOR][/COLOR][/SIZE][/FONT]
functionName : نام تابع می باشد که که توسط آن شما می توانید تابع را فراخوانی نمایید. argument : یا آرگومان های تابع ورودی های تابع می باشند که با کاما از هم جدا می شوند (در ادامه با مثال توضیح بیشتر داده می شود) returnType : نوع بازگشت تابع می باشد، در واقع برای تعیین نوع مقداری که قرار است درون تابع return شود در صورتی که تابع شما return ی نداشته باشد این مقدار بر روی void قرار می دهیم و این به این معنی می باشد که تابع مقداری را بر نمی گرداند، البته تعریف این مقدار الزامی نیست و در صورتی که نوع خروجی را ندانید می توانید با ستاره(*) به هر نوعی از اطلاعات اشاره نمایید. statements : شامل کدی می شود که می بایست با هر بار فراخوانی تابع اجرا شود. برای درک بیشتر return تابعی تعریف می کنیم که دو قدار را جمع کند و یک مقدار به عنوان خروجی بدهد:
کد:
[FONT=Tahoma][SIZE=2][COLOR=#000000][COLOR=Blue][SIZE=3] [FONT=arial]function calculate()  {     var num1:Number = 50;      var num2:Number = 100;      var myResult:Number;        myResult = num1+num2;      return myResult; }[/FONT][/SIZE][/COLOR][/COLOR][/SIZE][/FONT]
امیدوارم متوجه ساختار و تعاریف شده باشین. پیروز باشید.:gol:
دست شما درد نکنه .. ولی باور کنید اصلا متوجه برنامه تون نشدم./. اگه میشه بیشتر توضیح بدید./
 

ناآشنا

عضو جدید
کاربر ممتاز
دست شما درد نکنه .. ولی باور کنید اصلا متوجه برنامه تون نشدم./. اگه میشه بیشتر توضیح بدید./


در اینجا نوع بازگشتی:تابع اگر عدد صحیح برگرداند از int ، اگر کاراکتر برگرداند از char و به همین ترتیب برای دیگر انواع و اگر هیچ مقداری را برنگرداند از void استفاده می کنیم .


امیدوارم این به اندازه ی کافی واضح باشه.:redface:
 

irmacfa

عضو جدید
Re: سئوالات و مشکلات برنامه نویسی به زبان C و ++C

سلام
خوب طبق برنامه ای که گذاشتین:
کد:
void    read(){cin>>num>>denum;}
void    print(){cout<<num<<"/"<<denum;}
void    invert(){int t=num; num=denum; denam=t;}
floot convertor() {return (floot) num/denum;}

void set_num (int x){num = x;}

 void set_denum (int y){denum = y;}
int get_num(){return num;}
int get_denum(){return denum;}
private:
int num;denum;
}
main () {
ratio r;
r.ratio ();
r.inver ();
cout <<r.convert ();
r.set_num ();
r.set_denum ();
cout<<r.get_num ();
cou<<r.get_denum; ()

set مقدار میده به متغیر و به اصطلاح اون رو ست میکنه و get هر مقداری که متغیر داشته باشه رو بر میگردونه.
خود کلاس ساعت هم که فکر میکنم خیلی ساده باشه ولازم نباشه خط به خط توضیح بدم. اگه بازم کمکی از دستم بربیاد در خدمتم.

فدات .دقیقا ساعت هم مثل این نوشته میشه جناب

Sent from my GT-I9100
 

R.Shiri

عضو جدید
سلام دوست عزیز
به قول دوستمون واقعا مجبورین با این دستور حتما بنویسین؟ آدمو میذارین تو آمپاس ها.(شوخی) .مثلا نمیشه با while نوشت.
این برنامه یک عدد ورودی میگیره تعداد ارقامش رو حساب میکنه:
کد:
#include <iostream.h>
int main()
{
    long int x;
    int count=0;
    cin>>x;
    while(x>=1)
    {
        count++;
        x/=10;
    }
    cout<<"Tedade argham: "<<count;
    return 0;
}
اگه بخواین در چاپ از case استفاده کنین می تونین ولی برای تشخیص چند رقمی بودن باید از یه دستور دیگه استفاده کنید. مثلا می تونین تعداد ارقام رو با همین برنامه که نوشتم به دست بیارین بعد با یک حلقه ی for ودستور case بگید مثلا اگه یک بود در خروجی چاپ کنه یک رقمی , اگه دو بود بگه دورقمی تا الی آخر .

خوب این برنامه بعدی که میذارم تعداد ارقام به علاوه ی فضای خالی و کاراکترها رو هم میشماره:
کد:
#include <stdio.h> 
 /* 
 * count the number of each digit, whitespace, 
 * and all other chars  */
 void main(void)
 {  
   register int c; 
               /* input char */ 
    register int nwhite = 0;   
     /* whitespace count */ 
    register int nother = 0;
        /* other count */   
  register int i;   
             /* counter in a for loop */  
   int ndigit[10];         
       /* digit counts */   
   /*      * initialize the ndigit array      */  
   for(i = 0; i < 10; i++)   
      ndigit[i] = 0;   
   /*      * handle input a char at a time      */  
   while((c = getchar()) != EOF)
{     
    /* see what it is */     
    switch(c)
{   
      case '0': case '1': case '2': case '3':   
 /* digit */     
    case '4': case '5': case '6': case '7':   
      case '8': case '9':     
        ndigit[c - '0']++;      
       break;     
    case ' ': case '\t': case '\n': 
   /* whitespace */          
    nwhite++;      
       break;    
     default: 
   /* neither a digit nor whitespace */   
          nother++;      
       break;    
     }  
   }  
    /*      * announce the results and quit      */    
 printf("digits: ");  
   for(i = 0; i < 10; i++)
{   
      printf("'%c' %3d\t", i + '0', ndigit[i]);  
       /* put 5 digits per line, for neat output */    
     if (i == 4)         
    printf("\n        ");   
  }     putchar('\n');  
   printf("whitespace: %d\nother:      %d\n", nwhite, nother);  
   exit(0); 
}


موفق باشین.

حضرت استاد میگم نمیشه میگه باید بشه من همین برنامه رو با استفاده از hf نوشتم ولی فرمودند باید باید با استفاده از switch نوشته شود. نمیدونم باید چیکار کنم بدجوری گیر افتادم:confused:
سلام ممنونم از اینکه به پست هام پاسخ میدید متاسفانه بله مجبورم جناب آقای استاد اینطوری خواسته به خدا انقدر caseهای مختلف نوشتم و نشده دارم دیوانه میشم هر چی هم به
 

R.Shiri

عضو جدید
سلام دوست عزیز
به قول دوستمون واقعا مجبورین با این دستور حتما بنویسین؟ آدمو میذارین تو آمپاس ها.(شوخی) .مثلا نمیشه با while نوشت.
این برنامه یک عدد ورودی میگیره تعداد ارقامش رو حساب میکنه:
کد:
#include <iostream.h>
int main()
{
    long int x;
    int count=0;
    cin>>x;
    while(x>=1)
    {
        count++;
        x/=10;
    }
    cout<<"Tedade argham: "<<count;
    return 0;
}
اگه بخواین در چاپ از case استفاده کنین می تونین ولی برای تشخیص چند رقمی بودن باید از یه دستور دیگه استفاده کنید. مثلا می تونین تعداد ارقام رو با همین برنامه که نوشتم به دست بیارین بعد با یک حلقه ی for ودستور case بگید مثلا اگه یک بود در خروجی چاپ کنه یک رقمی , اگه دو بود بگه دورقمی تا الی آخر .

خوب این برنامه بعدی که میذارم تعداد ارقام به علاوه ی فضای خالی و کاراکترها رو هم میشماره:
کد:
#include <stdio.h> 
 /* 
 * count the number of each digit, whitespace, 
 * and all other chars  */
 void main(void)
 {  
   register int c; 
               /* input char */ 
    register int nwhite = 0;   
     /* whitespace count */ 
    register int nother = 0;
        /* other count */   
  register int i;   
             /* counter in a for loop */  
   int ndigit[10];         
       /* digit counts */   
   /*      * initialize the ndigit array      */  
   for(i = 0; i < 10; i++)   
      ndigit[i] = 0;   
   /*      * handle input a char at a time      */  
   while((c = getchar()) != EOF)
{     
    /* see what it is */     
    switch(c)
{   
      case '0': case '1': case '2': case '3':   
 /* digit */     
    case '4': case '5': case '6': case '7':   
      case '8': case '9':     
        ndigit[c - '0']++;      
       break;     
    case ' ': case '\t': case '\n': 
   /* whitespace */          
    nwhite++;      
       break;    
     default: 
   /* neither a digit nor whitespace */   
          nother++;      
       break;    
     }  
   }  
    /*      * announce the results and quit      */    
 printf("digits: ");  
   for(i = 0; i < 10; i++)
{   
      printf("'%c' %3d\t", i + '0', ndigit[i]);  
       /* put 5 digits per line, for neat output */    
     if (i == 4)         
    printf("\n        ");   
  }     putchar('\n');  
   printf("whitespace: %d\nother:      %d\n", nwhite, nother);  
   exit(0); 
}


موفق باشین.

سلام
متاسفانه مجبورم دستور استاد گرانقدرمه :crying:
 

R.Shiri

عضو جدید
سلام

ینی شما کار مقایسه رو حتما باید با این دستور انجام بدین؟!نمیشه قبل از استفاده از این دستور if یا for به کار ببرین؟!

به نظرم اگر فقط بخواین با این دستور کار کنین امکان مقایسه توی case ها وجود نداشته باشه چون کلا ساختار case به گونه ای هست که باید یه مقدار ثابت داشته باشه نمیشه بازه بهش داد!

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

کد:
result=floor(log(input)/log(10))+1;

توضیح اینکه در اینجا input عددی هست که کاربر وارد میکنه و result نتیجه بررسی می باشد که یک عدد از نوع int است.

برای استفاده از این تابع باید هدر
کد:
# include <math>

رو به برنامه اضافه کنید..حالا نتیجه این فرمول رو میتونید در switch ...case به کار ببرید!

البته به احتمال خیلی زیاد شما نباید از فرمول ریاضی استفاده کنید ولی خب اینو گفتم تا شاید جرقه ای تو ذهنتون زده بشه و به راه حلی برسید:smile:

اگر امکان استفاده از if یا for وجود داشت میشد بازه ها رو با استفاده از این ها تعریف و نتیجه رو در case ها استفاده کرد!

راستی شما هم مثل من از همون روش تقسیم بر 10 و مقایسه خارج قسمت برای تعداد ارقام استفاده میکنید؟

:gol:



سلام

int main() ساختار یه تابع رو معرفی میکنه که int نشون دهنده ی نوع خروجی اون هست!
از اونجایی که این تابع بنا به تعریفش حتما باید یه خروجی از نوع int داشته باشه پس همیشه آخر عملیات هایی که توش انجام میدیم return 0 یا return -1 (که معمول تر هستن) رو قرار میدیم:gol:


سلام
متاسفانه مجبورم استاد محترم فرمودند باید با استفاده از دستور switch بنویسم:cry:
 

zahra1386

مدیر بازنشسته
کاربر ممتاز
سلام
متاسفانه مجبورم استاد محترم فرمودند باید با استفاده از دستور switch بنویسم:cry:

سلام

مشکل شما باعث شد بعد از تقریبا دو سال دست به کد بشم:Dو خوشبختانه تونستم مشکل رو حل کنم(اونم خیلی راحت!) و یه حس خوب نوستالژیک رو تجربه کنم...یادش بخیر....:cry:

لازم نبود ما مقایسه رو داخل case ها ببریم داخل switch این کارو انجام میدیم...فقط کافی بود برای هر مقایسه یه سوییچ بنویسیم;)

اینم برنامه ای که نوشتم:

کد:
#include<iostream>
using  std::cin;
using  std::cout;
using  std::endl;

void main()
{
int in,out;

cin>>in;

out=in/10;

switch(out)
    {
    case 0:cout<<"a digit"<<endl;
    
    return ;
    }


switch(0<out & out<10)
    {
        case true:cout<<"tow digit"<<endl;
        
        return;
    }
    
switch(10<out & out<100)

    {
        case true:cout<<"three digit"<<endl;
        return;
    
    }


cout<<"four digit"<<endl;

}


توضیح این که in ورودی کاربر هست و out خارج قسمتی که برای مقایسه به کار میبریم...

پ.ن:گاهی وقتا یه مسئله رو سخت میگیریم در حالی که راه حلش خیلی اسونه...امیدوارم مشکلتون حل شده باشه:smile::gol:
 

ناآشنا

عضو جدید
کاربر ممتاز
خوب این برنامه بعدی که میذارم تعداد ارقام به علاوه ی فضای خالی و کاراکترها رو هم میشماره:
کد:
#include <stdio.h> 
 /* 
 * count the number of each digit, whitespace, 
 * and all other chars  */
 void main(void)
 {  
   register int c; 
               /* input char */ 
    register int nwhite = 0;   
     /* whitespace count */ 
    register int nother = 0;
        /* other count */   
  register int i;   
             /* counter in a for loop */  
   int ndigit[10];         
       /* digit counts */   
   /*      * initialize the ndigit array      */  
   for(i = 0; i < 10; i++)   
      ndigit[i] = 0;   
   /*      * handle input a char at a time      */  
   while((c = getchar()) != EOF)
{     
    /* see what it is */     
    switch(c)
{   
      case '0': case '1': case '2': case '3':   
 /* digit */     
    case '4': case '5': case '6': case '7':   
      case '8': case '9':     
        ndigit[c - '0']++;      
       break;     
    case ' ': case '\t': case '\n': 
   /* whitespace */          
    nwhite++;      
       break;    
     default: 
   /* neither a digit nor whitespace */   
          nother++;      
       break;    
     }  
   }  
    /*      * announce the results and quit      */    
 printf("digits: ");  
   for(i = 0; i < 10; i++)
{   
      printf("'%c' %3d\t", i + '0', ndigit[i]);  
       /* put 5 digits per line, for neat output */    
     if (i == 4)         
    printf("\n        ");   
  }     putchar('\n');  
   printf("whitespace: %d\nother:      %d\n", nwhite, nother);  
   exit(0); 
}



البته کد دوم با استفاده از swith هست منتها مخلوطی با while , if و... . به هر حال امیدوارم با کد دوستمون که لطف کردن نوشتن مشکل حل شده باشه.
 

sirosb

عضو جدید
سلام
تو باید ابتدا یه حلقه یwhile() تعریف کنی تا بتونی برنامه ای بسازی که هر بار بتونی اعداد دلخواه رو وارد کنی و شرط حلقه هم می تونه مثلا این باشه
که تازمانی ادامه بده که یه عدد معتبر از لحاظ ریاضی وارد بشه!
سپس داخل این حلقه باید با یه الگوریتم تعداد رقم های عدد رو مشخص کنی و تعداد رو داخل یه متغیر دیگه بعنوان اندیس دستور switch استفاده کنی.
تا بر اساس اینکه اندیس مورد نظر 1 یا 2 یا 3 یا بالاتر باشه نوع عدد رو در خروجی چاپ کنه.
به همین سادگی.
 

sirosb

عضو جدید
جواب شما دقیقا منظور سوال نیست!
شما ساختار یک function معمولی رو توضیح دادین,دستور ( return(0 برای تابع main جهت بازگشت به سیستم عامل است یعنی سیستم عامل کلیه ی متغیر ها و اطلاعاتی رو که جهت اجرای تابع main به حالت تعلیق در اورده بوده رو دوباره بازگشت میده تا به روال کار عادی خودش برگرده.این مفهوم هر نوع دستور بازگشت است و ربطی به زبان خاصی نداره. ولی مقدار 0 به خاطر اینکه برای تابع main خروجی مشخص کردیم.
 

reza.arshan

عضو جدید
سلام خوبید؟ من یه مشکلی در اجرای برنامه c++ در ویژوال استدیو دارم وقتی میخوام اجرا کنم این پیامو میده چیکار کنم؟
the system cannot find the file specified
 

ناآشنا

عضو جدید
کاربر ممتاز
سلام خوبید؟ من یه مشکلی در اجرای برنامه c++ در ویژوال استدیو دارم وقتی میخوام اجرا کنم این پیامو میده چیکار کنم؟
the system cannot find the file specified

این اشکال بعضی وقتا به خاطر آنتی ویروس هست که اجازه نمیده فایل exe اجرا بشه سعی کنید یک بار آنتی ویروس رو غیرفعال کنید بعد ویژوال استودیو رو اجرا کنین. ببینید مشکل حل میشه یا نه؟
مورد دیگه آیا برنامتون درست build میشه؟
برای کنترل بیشتر در VS 2010 C++ Express , شما می تونید آیتم "Expert Settings" رو زیر "Tools>Settings" منوی 'Build' رو تیک بزنید.
پس از کلیک بر روی 'Build->Build Solution' یا 'Rebuild' اگز برنامتون کامپایل شد و ارتباطات صحیحه پنجره ی 'Output' رو این درستی رو تایید میکنه.('View->Outout')
 
آخرین ویرایش:

sirosb

عضو جدید
سلام
سوال:کی میتونه برنامه ای به زبان c++ بنویسه که مجموع زیر رو حساب کنه؟
!1/1+!2/2+!3/3+........!n/n
 

antengogoli21

عضو جدید
سلام
سوال:کی میتونه برنامه ای به زبان c++ بنویسه که مجموع زیر رو حساب کنه؟
!1/1+!2/2+!3/3+........!n/n

من این برنامه رو نوشتم ولی نمی دونم چرا اعشاری بهم نمیده فقط قسمت صحیحشو می ده!!!الان برای خودمم سواله که کجای کارم اشتباهه ؟ اگر کسی فهمید به منم بگه:smile:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int factor(int n)
{

n=n*factor(n-1);
return n;

}
int main()
{
int num;
float sum=0.0;
cout<<" enter a number :";
cin>>num;
for(int i=1;i<=num;i++)
{
sum+=(i/factor(i));

}
cout<<"sum is:"<<sum<<endl;
system("pause");
return 0;
}
 

فاطمه_برق

عضو جدید
با سلام
دوستان لطف کنند از این پس برای بررسی سریع تر سئوالاتشان در زمینه های ذکر شده در این تاپيک سئوالات خود را مطرح نمایند.

با تشکر:gol:

سلام دوست عزيز
من رشته ام برقه و از برنامه نويسي چيز زيادي نميدونم.
تابستون ترم تابستوني گرفتم و استادمون دو تا سوال بهمون داده كه حل كنيم و گفته براي امتحان مياد.
اما بلدشون نيستم.
ازتون خواهش ميكنم كمكم كنيد.
سوالاتش اينه:

1-برنامه اي به زبان c++ بنويسيد كه يك آرايه ي 20 عضوي را با عناصر تصادفي پر كند سپس اين آرايه را مرتب كرده و آرايه ي مرتب شده را نمايش دهد.

2-برنامه اي بنويسيد كه شماره ي كارمندي و حقوق تعدادي از كاركنان موسسه اي را دريافت كند و بر اساس تعرفه ي زير ماليات حقوق آنها را محاسبه و به خروجي ببرد سپس مشخص كنيد بيشترين دريافتي مربوط به كدام كارمند است.
حقوق كوچكتر مساوي 400 هزار (از ماليات معاف)
حقوق بزرگتر از 400 هزار و كوچكتر مساوي 500 هزار (10% نسبت به مازاد)
حقوق بزرگتر از 500 هزار و كوچكتر مساوي 700 هزار (15% نسبت به مازاد)
حقوق بزرگتر از 100 هزار (17% نسبت به مازاد)
 

sirosb

عضو جدید
پاسخ سوال مرتب سازی ارایه رندوم 20در20

پاسخ سوال مرتب سازی ارایه رندوم 20در20

سلام
سوال دوم خیلی اسون تره
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
//dis program write by sirosb
//dis program sort a random array 20*20
int main()
{
unsigned seed;
cout<<"enter seed: *behtar ast adady yek ragame vared konid*"<<endl;
cin>>seed;
srand(seed);
int random[20][20];
int msort[400];
int temp,i,j,d=0;
for(i=0;i<20;++i)
for(j=0;j<20;++j)
{
random[j]=rand();
temp=random[j];
msort[d]=temp;
++d;
}
//sort of msort array
for(i=0;i<400;++i)
for(j=i+1;j<400;++j)
if(msort[j]<msort)
{
temp=msort[j];
msort[j]=msort;
msort=temp;
}
//inter msort array to random arry
int k=0;
i=0;
j=0;
while(i<400)
{
temp=msort;
random[j][k]=temp;
++i;
++k;
if(k==20 )
{
++j;
k=0;
}
} //end of while
for(i=0;i<20;++i)
for(j=0;j<20;++j)
{
cout.width(8);
cout<<random[j];
if(j==20)
cout<<endl;
}
}//end of main





 

sky_cs

عضو جدید
سلام دوستان
من یک برنامه خیلی خیلی ساده تو ++Borland cنوشتم خروجی رو محاسبه می کنه اما صفحه خروجی بلافاصله بسته می شه!!!!!!!!!1
چکارنم که تو صفحه خروجی بمونه؟؟؟؟؟
مشاهده پیوست 164850
 

شهریاری 2

کاربر فعال تالار اسلام و قرآن
کاربر ممتاز
سلام دوستان
من یک برنامه خیلی خیلی ساده تو ++Borland cنوشتم خروجی رو محاسبه می کنه اما صفحه خروجی بلافاصله بسته می شه!!!!!!!!!1
چکارنم که تو صفحه خروجی بمونه؟؟؟؟؟
مشاهده پیوست 164850

سلام دوست عزیز
قبل return ، بزنید:
cin.get();
اگر بازم نشد، دو تا ازین دستور رو وارد کنید.
 

sky_cs

عضو جدید
سلام دوست عزیز
قبل return ، بزنید:
cin.get();
اگر بازم نشد، دو تا ازین دستور رو وارد کنید.
سلام.ممنون از پاسخ شما
ممکنه برام توضیح بدید که چرا حتما این دستور باید نوشته بشه؟
خیلی از برنامه ها رو دیدم که بدون این دستور تو صفحه خروجی می مونه
:gol::gol::gol:............................................................................................
 

mt92

عضو جدید
لیست کردن فایلها و فولدر ها به روش بازگشتی

لیست کردن فایلها و فولدر ها به روش بازگشتی

سلام به همگی دوستان
من میخواسنم یه تابع بنویسم که یه string بگیره (این رشته آدرس یه پوشه یا یه درایو تو کامپیوتره)
بعد تمامی subfolder ها و فایلای اون رو توی آرایه بریزه یعنی وقتی یه آدرس یهش دادی اول فایلای اون رو
بعد فولدراش رو بعدش به ازای هر فولدر که پیدا کرد یه بار خودشو یا اون آدرس فراخوانی کنه.
کسی میتونه کمکم کنه؟
خیلی گشتم ولی چیز بدرد بخوری پیدا نکردم.
 

zahra1386

مدیر بازنشسته
کاربر ممتاز
سلام دوست عزيز
من رشته ام برقه و از برنامه نويسي چيز زيادي نميدونم.
تابستون ترم تابستوني گرفتم و استادمون دو تا سوال بهمون داده كه حل كنيم و گفته براي امتحان مياد.
اما بلدشون نيستم.
ازتون خواهش ميكنم كمكم كنيد.
سوالاتش اينه:

1-برنامه اي به زبان c++ بنويسيد كه يك آرايه ي 20 عضوي را با عناصر تصادفي پر كند سپس اين آرايه را مرتب كرده و آرايه ي مرتب شده را نمايش دهد.

2-برنامه اي بنويسيد كه شماره ي كارمندي و حقوق تعدادي از كاركنان موسسه اي را دريافت كند و بر اساس تعرفه ي زير ماليات حقوق آنها را محاسبه و به خروجي ببرد سپس مشخص كنيد بيشترين دريافتي مربوط به كدام كارمند است.
حقوق كوچكتر مساوي 400 هزار (از ماليات معاف)
حقوق بزرگتر از 400 هزار و كوچكتر مساوي 500 هزار (10% نسبت به مازاد)
حقوق بزرگتر از 500 هزار و كوچكتر مساوي 700 هزار (15% نسبت به مازاد)
حقوق بزرگتر از 100 هزار (17% نسبت به مازاد)

سلام

دوست گلم این که شما سوالتون رو در پست های مکرر تکرار کنید یا مدام براش تاپیک بزنید باعث نمیشه که زودتر جواب بگیرید!!اگر قرار به پاسخگویی دوستان باشه همینجا پاسخ میدن و نیازی به تکرار چندباره سوالتون در پست ها و تاپیک ها نیست...:gol:

این رو هم عرض کنم که معمولا کسی به درخواست هایی که مستقیما جواب سوال یا پروژه رو میخوان پاسخی نمیده!تاپیک های درخواست پروژه هم تایید نخواهد شد....شما دست به کار بشید و یه مقداری از راه رو برید و هر جا به مشکل برخوردید مطرح کنید تا دیگران راهنماییتون کنن:gol:

بنده در حد سوادم شما رو راهنمایی میکنم و ان شا الله شما میتونید خودتون پاسخ سوالاتون رو پیدا کنید:smile:

سوال 1:
خب این سوال روی مرتب سازی آرایه تاکید داره و شما باید از یکی از روش های مرتب سازی مثل مرتب سازی حبابی،انتخابی،مرتب سازی سریع و غیره استفاده کنید....الگوریتم این مرتب سازی ها به وفور در نت هست و با یه سرچ ساده میتونید پیداشون کنید!
برای گرفتن اعضای آرایه از ورودی هم کافیه یه حلقه ی for تعریف کنید و تکرارش رو روی 20 قرار بدین و داخل بدنه for ورودی گرفته شده از کاربر رو به آرایه نسبت بدین!این طوری:
کد:
for(int i=0;i<20;i++)
cin>>num;
a[i]=num;

سوال2:

برای این سوال چیزی که بلافاصله به ذهن من رسید اینه که شما میتونید از یه آرایه ی دو بعدی استفاده کنید!بُعد اول برای شماره کارمند و بُعد دوم برای حقوقش!میتونید از دو ارایه یک بعدی هم استفاده کنید که یکی برای شماره کارمندا و دیگری برای حقوق که به نظرم همون دو بعدی جالبتر و بهتر هست!
محاسبه مالیات رو هم میتونید همزمان با ورود شماره و حقوق انجام بدین و هم میتونید بعد از تکمیل شدن این ها!
شرط ها هم که کاملا واضح هست و کافیه شما چند تا شرط if به کار ببرین و روی حقوق ها اعمال کنید تا مالیات به دست بیاد..مالیات های محاسبه شده رو هم در یک ارایه بریزید و بعد max رو پیدا کنید!
توضیح اضافه اینکه برای پیدا کردن max شما عنصر اول رو max در نظر بگیر و بعد در یک حلقه for با تک تک عناصر بعدی ارایه مقایسه کن هر عنصری که بزرگتر بود max رو مساوی اون عنصر قرار بده...در نهایت بعد از اجرای for به ماکزیمم حقوق خواهید رسید..

امیدوارم توضیحاتم بتونه کمکت کنه:smile::gol:
 
  • Like
واکنش ها: EECi

فاطمه_برق

عضو جدید
من رشته ام برقه و از برنامه نويسي چيز زيادي نميدونم.
تابستون ترم تابستوني گرفتم و استادمون دو تا سوال بهمون داده كه حل كنيم و گفته براي امتحان مياد.
اما بلدشون نيستم.
ازتون خواهش ميكنم كمكم كنيد.
سوالاتش اينه:

1-تابع void ي بنويسيد كه يك رشته حداكثر 400 حرفي را گرفته و تعداد جمله ها ( تعداد جمله هايي كه به . ! ؟ : ختم ميشوند ) را محاسبه و تعداد كلمات را محسابه كند و متن را به حروف كوچك تبديل كند.
2-برنامه اي به زبان C++بنويسيد كه شماره ي كارمندي و حقوق تعدادي از كاركنان موسسه اي را دريافت كند و بر اساس تعرفه ي زير ماليات حقوق آنها را محاسبه و به خروجي ببرد سپس مشخص كنيد بيشترين دريافتي مربوط به كدام كارمند است.
حقوق كوچكتر مساوي 400 هزار (از ماليات معاف)
حقوق بزرگتر از 400 هزار و كوچكتر مساوي 500 هزار (10% نسبت به مازاد)
حقوق بزرگتر از 500 هزار و كوچكتر مساوي 700 هزار (15% نسبت به مازاد)
حقوق بزرگتر از 100 هزار (17% نسبت به مازاد)

تو رو خدا جواب بدين:cry:
در جواب به zahra1386 :
راستش رو بخواين جواب سوالا رو براي خودم نميخوام.
واسه يكي از خواهرامه.كه ترم تابستوني گرفته.و چون من در دوره كارشناسي برنامه نويسي پاسكال و براي پايان نامه ام برنامه نويسي بيسكام كار كردم نميتونم كمكش كنم.:(
تو رو خدا اگه بلدشون هستين و وقتتون رو نميگيره برنامه رو بنويسيد .به خدا دعاتون ميكنم.:gol:
 
آخرین ویرایش:

فاطمه_برق

عضو جدید
سلام

دوست گلم این که شما سوالتون رو در پست های مکرر تکرار کنید یا مدام براش تاپیک بزنید باعث نمیشه که زودتر جواب بگیرید!!اگر قرار به پاسخگویی دوستان باشه همینجا پاسخ میدن و نیازی به تکرار چندباره سوالتون در پست ها و تاپیک ها نیست...:gol:

این رو هم عرض کنم که معمولا کسی به درخواست هایی که مستقیما جواب سوال یا پروژه رو میخوان پاسخی نمیده!تاپیک های درخواست پروژه هم تایید نخواهد شد....شما دست به کار بشید و یه مقداری از راه رو برید و هر جا به مشکل برخوردید مطرح کنید تا دیگران راهنماییتون کنن:gol:

بنده در حد سوادم شما رو راهنمایی میکنم و ان شا الله شما میتونید خودتون پاسخ سوالاتون رو پیدا کنید:smile:

سوال 1:
خب این سوال روی مرتب سازی آرایه تاکید داره و شما باید از یکی از روش های مرتب سازی مثل مرتب سازی حبابی،انتخابی،مرتب سازی سریع و غیره استفاده کنید....الگوریتم این مرتب سازی ها به وفور در نت هست و با یه سرچ ساده میتونید پیداشون کنید!
برای گرفتن اعضای آرایه از ورودی هم کافیه یه حلقه ی for تعریف کنید و تکرارش رو روی 20 قرار بدین و داخل بدنه for ورودی گرفته شده از کاربر رو به آرایه نسبت بدین!این طوری:
کد:
for(int i=0;i<20;i++)
cin>>num;
a[i]=num;

سوال2:

برای این سوال چیزی که بلافاصله به ذهن من رسید اینه که شما میتونید از یه آرایه ی دو بعدی استفاده کنید!بُعد اول برای شماره کارمند و بُعد دوم برای حقوقش!میتونید از دو ارایه یک بعدی هم استفاده کنید که یکی برای شماره کارمندا و دیگری برای حقوق که به نظرم همون دو بعدی جالبتر و بهتر هست!
محاسبه مالیات رو هم میتونید همزمان با ورود شماره و حقوق انجام بدین و هم میتونید بعد از تکمیل شدن این ها!
شرط ها هم که کاملا واضح هست و کافیه شما چند تا شرط if به کار ببرین و روی حقوق ها اعمال کنید تا مالیات به دست بیاد..مالیات های محاسبه شده رو هم در یک ارایه بریزید و بعد max رو پیدا کنید!
توضیح اضافه اینکه برای پیدا کردن max شما عنصر اول رو max در نظر بگیر و بعد در یک حلقه for با تک تک عناصر بعدی ارایه مقایسه کن هر عنصری که بزرگتر بود max رو مساوی اون عنصر قرار بده...در نهایت بعد از اجرای for به ماکزیمم حقوق خواهید رسید..

امیدوارم توضیحاتم بتونه کمکت کنه:smile::gol:

راستش رو بخواين جواب سوالا رو براي خودم نميخوام.
واسه يكي از خواهرامه.كه ترم تابستوني گرفته.و چون من در دوره كارشناسي برنامه نويسي پاسكال و براي پايان نامه ام برنامه نويسي بيسكام كار كردم نميتونم كمكش كنم.:(
تو رو خدا اگه بلدشون هستين و وقتتون رو نميگيره برنامه رو بنويسيد .به خدا دعاتون ميكنم.
 

sirosb

عضو جدید
زهرا خانوم اعضای ارایه باید تصادفی باشن نه از ورودی !
 

فاطمه_برق

عضو جدید
زهرا جون تو رو خدا اگه جوابشون رو بلدي برنامه ها رو بنويس.
خواهش ميكنم ازت...:(
خودم نميتونم كمكش كنم.
چون اصلا C++ كار نكردم.
 

sirosb

عضو جدید
زهرا خانم منظور این سوال اینه که بشه برنامه هایی ساخت که مثلا بشه بازی پرتب تاس رو شبیه سازی کرد یا در حالت پیشرفته تر برای مسائل هوش مصنوعی کاربرد داره؟
منظور اصلی برنامه تولید اعدادی است که انسان هیچ دخالتی در تولیدشان نداشته باشه؟
 

شهریاری 2

کاربر فعال تالار اسلام و قرآن
کاربر ممتاز
سلام.ممنون از پاسخ شما
ممکنه برام توضیح بدید که چرا حتما این دستور باید نوشته بشه؟
خیلی از برنامه ها رو دیدم که بدون این دستور تو صفحه خروجی می مونه
:gol::gol::gol:............................................................................................


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

sky_cs

عضو جدید
ببین وقتی برنامه به این خط کد میرسه، منتظره که یه کاراکتر وارد بشه. خب....... تا موقعی که اینتر رو فشار ندید، برنامه منتظر هست که شما ، یه کاراکتر وارد کنید. پس منتظر میماند تا شما اقدام کنید.
سلام. انگاری من سوالم رو بد پرسیدم.
منظورم اینه که چرا بدون دستوری که گفتید برنامه کار نمی کنه؟!!!!!!!!!
:gol::gol::gol:.......................................................................................
 

Similar threads

بالا