PDA

View Full Version : مبتدی: مشکل در مقداردهی آرایه



piman.ir
شنبه 16 اردیبهشت 1391, 01:07 صبح
سلام دوستان
تازه وارد دنیای برنامه نویسی شدم!
یه مشکل کوچیک داشتم!!!
چطور میشه در C++‎ مقدار آرایه رو از کاربر گرفت؟
مثلاً در این کد من int f[n]; رو گذاشتم اما ارور میگه نمیشه از n رو بذارم!!
ممنون میشم راهنمایی کنید :لبخندساده:
#include<iostream.h>
#include<conio.h>

int fibonachi(int n);
void main()
{
clrscr();
int n,m;
cout<<"Insert Number: ";
cin>>n;
m=fibonachi(n);
cout<<"\n RESULT= "<<m<<"\n";
getch();
}

int fibonachi(int n)
{
int i;
int f[n];
f[0]=0;
if(n>0)
{
f[1]=1;
for(i=2;i<=n;i++)
f[i]=f[i-1]+f[i-2];
}
return f[n];
}

cyrusthegreat
شنبه 16 اردیبهشت 1391, 03:07 صبح
سلام دوستان
تازه وارد دنیای برنامه نویسی شدم!
یه مشکل کوچیک داشتم!!!
چطور میشه در C++‎ مقدار آرایه رو از کاربر گرفت؟
مثلاً در این کد من int f[n]; رو گذاشتم اما ارور میگه نمیشه از n رو بذارم!!
ممنون میشم راهنمایی کنید :لبخندساده:
#include<iostream.h>
#include<conio.h>

int fibonachi(int n);
void main()
{
clrscr();
int n,m;
cout<<"Insert Number: ";
cin>>n;
m=fibonachi(n);
cout<<"\n RESULT= "<<m<<"\n";
getch();
}

int fibonachi(int n)
{
int i;
int f[n];
f[0]=0;
if(n>0)
{
f[1]=1;
for(i=2;i<=n;i++)
f[i]=f[i-1]+f[i-2];
}
return f[n];
}

دوست عزیز

آرایه ها در C++ می بایست حتما اندازه مشخصی داشته باشن. شما نمی تونی بگی int f[n]; بلکه باید حتما براش اندازه مشخص کنی.

راستی، برای اینکار شما نیازی به آرایه نداری. بلکه برای نوشتن دنباله فیبوناچی روش های بهتری هم وجود داره.

Mahmood_M
شنبه 16 اردیبهشت 1391, 03:24 صبح
آرایه ها به دو صورت تعریف می شن ، به صورت Static و به صورت Dynamic ، نوع Static یعنی طول آرایه از قبل مشخصه ( یک عدد ثابته ) ولی Dynamic یعنی اینکه طول آرایه در هنگام تعریفش مشخص میشه و قابل تغییره
دستوری که شما نوشتید یک آرایه ی Static تعریف میکنه و طولش باید ثابت باشه ، چون مقدار N در دستورات شما مشخص نیست ( ثابت نیست ) ، کامپایلر نمی تونه اون رو به عنوان ورودی تعداد خانه های آرایه ی F بپذیره
شما باید یه آرایه ی Dynamic ( پویا ) بسازید ، به این صورت :

#include <iostream.h>
#include <conio.h>

int fibonachi(int n);

void main()
{
clrscr();
int n,m;
cout<< "Insert Number: ";
cin>>n;
m = fibonachi(n);
cout<<"\n RESULT= "<<m<<"\n";
getch();
}

int fibonachi(int n)
{
int i, r;
int* f = new int[n];
f[0]=0;
if(n>0)
{
f[1]=1;
for(i=2;i<=n;i++)
f[i]=f[i-1]+f[i-2];
}
r = f[n];
delete [] f;
return r;
}

آرایه ی پویا در ++C یک اشاره گر هست ، بهتره بعد از استفاده از اون ، فضای اختصاص یافتش آزاد بشه ، برای این کار از دستور Delete استفاده میکنیم
متغیر r رو هم برای گرفتن مقدار خروجی تابع تعریف کردیم ، چون باید f رو آزاد کنیم ، مقدارش رو درون r می ریزیم و r رو به عنوان خروجی درنظر می گیریم

موفق باشید ...

piman.ir
شنبه 16 اردیبهشت 1391, 12:36 عصر
واقعاً ممنون :خجالت: :لبخندساده:
دستتون درد نکنه :قلب:

چطوری میتونم اطلاعات جامعی راجع به اشاره گرها پیدا کنم؟
مثلاً نحوه ی ایجاد، استفاده یا پاک کردنشون!

Mahmood_M
یک شنبه 17 اردیبهشت 1391, 17:56 عصر
چطوری میتونم اطلاعات جامعی راجع به اشاره گرها پیدا کنم؟
مثلاً نحوه ی ایجاد، استفاده یا پاک کردنشون!
این سایت (http://www.cplusplus.com) یکی از بهترین منابع برای یادگیری ++C هستش
در این صفحه (http://www.cplusplus.com/doc/tutorial/pointers/) در مورد اشاره گرها و در این صفحه (http://www.cplusplus.com/doc/tutorial/dynamic/) در مورد حافظه ی پویا توضیحات تقریبا کاملی داده شده

موفق باشید ...

maryam_sahar
جمعه 06 مرداد 1391, 11:08 صبح
سلام
میشه راجع به همین موضوع تو سی شارپ هم توضیح بدید؟
من میخوام یه برنامه بنویسم که کاربر یک سری عدد وارد کنه که اینا بره تو یه آرایه ذخیره بشه ، بعدش روی اعضای این آرایه (اعدادی که کاربر مشخص کرده)، عملی مثل جمع انجام بشه.

ممنون میشم اگه راهنماییم کنید

#target
جمعه 06 مرداد 1391, 14:23 عصر
میشه راجع به همین موضوع تو سی شارپ هم توضیح بدید؟
در تالار خودش میپرسیدی بهتر بود !
میشه آرایه رو به تعداد دلخواه و پویا ایجاد کرد
int d = 3 ;
int[] A = new int[d];
A[0] = 10;
A[1] = 20;
A[2] = 30;
int Sum = 0;
for (int i = 0; i < d; i++)
Sum = Sum + A[i];

از لیست هم میشه استفاده کرد (که کاری که میخواید انجام بدین با این راحت تره )
List<int> list = new List<int>();
list.Add(10);
list.Add(20);
list.Add(30);
int Sum = 0;
foreach (int Data in list)
Sum = Sum + Data;

maryam_sahar
شنبه 07 مرداد 1391, 13:21 عصر
ممنون ، ولی من می خوام این A[0],A[1],A[2],… رو کاربر از طریق مثلا تکست باکس وارد کنه، بعدش تو یه آرایه ذخیره بشه بعدم روی اعضای آرایه عمل جمع انجام بشه .





ببخشید تالار خود این موضوع رو پیدا نکردم.

#target
یک شنبه 08 مرداد 1391, 05:05 صبح
از همون لیست استفاده کنید و هر بار که کاربر دکمه رو زد مقدار تکست باکس رو Add کنید در نهایت که خواستید جمع کنید . کدشو تو پست قبلی دادم

تالار C# (http://barnamenevis.org/forumdisplay.php?26)