PDA

View Full Version : مبتدی: ذخیره ی متغیر ها در آرایه



raminlich
چهارشنبه 11 تیر 1393, 12:48 عصر
سلام
من برنامم اینه

#include <iostream>
#include <fstream>
using namespace std;
main()
{
float x,y,z,dar,i;
ofstream list("list.txt");
cout<<"gheymate emroz:";
cin>>x;
cout<<"gheymate diroz:";
cin>>y;
x*=100;
z=(x/y);
z-=100;
cout<<"%"<<z;
float a[10];
for(i=0;i<10;i++)
a[i]=z;
cout<<endl;
cout<<"%"<<a[i];
list<<'%'<<a[i];
}



من می خوام هر بار وارد برنامه میشم این محاسباتی که انجام میشه و می ره تو z خودش اتوماتیک توی یه ارایه ذخیره بشه
اینجاش موندم چجوری بریزم اینی که نوشتم هم کامپایلر خطا می گیره:افسرده:

nilofarr
چهارشنبه 11 تیر 1393, 13:26 عصر
برنامه ی شما الان به زبانc++وبا برنامه code block نوشته شده درسته؟
برای از فایل استفاده کردید؟میتونید لطفا سوال را برام بگید اون طوری بیشتر میتونم کمکتون کنم

raminlich
چهارشنبه 11 تیر 1393, 13:56 عصر
نه این با DEV نوشم من می خوام هر بار که وارد برنامه میشم رویه دو عدد یه سری محاسبات انجام بشه بعد اون محاسبه ایی که انجام شده رو تو یه جا ذخیره کنم بعد هر وقت که خواستم نتیجه هار نشون بده

a.r.khoshghalb
شنبه 14 تیر 1393, 07:13 صبح
سلام
من برنامم اینه

#include <iostream>
#include <fstream>
using namespace std;
main()
{
float x,y,z,dar,i;
ofstream list("list.txt");
cout<<"gheymate emroz:";
cin>>x;
cout<<"gheymate diroz:";
cin>>y;
x*=100;
z=(x/y);
z-=100;
cout<<"%"<<z;
float a[10];
for(i=0;i<10;i++)
a[i]=z;
cout<<endl;
cout<<"%"<<a[i];
list<<'%'<<a[i];
}



من می خوام هر بار وارد برنامه میشم این محاسباتی که انجام میشه و می ره تو z خودش اتوماتیک توی یه ارایه ذخیره بشه
اینجاش موندم چجوری بریزم اینی که نوشتم هم کامپایلر خطا می گیره:افسرده:

سلام
دوست عزیز دلیل اینکه کامپایل ارور میگیری اینه که برای اندیس آرایه از متغیر i استفاده می کنی ولی متغیر i از جنس اعشاری هست (float) ، فکر نمی کنم نیازی به توضیح باشه که چرا نباید از جنس اعشاری باشه :لبخندساده:

برای حل مشکلت دو راه داری. یکی این که از متغیر دیگه ای که int یا long long یا ... باشه استفاده کنی، یک راه این که همین متغیرت رو به int کست (cast) کنی به این صورت :


#include <iostream>
#include <fstream>
using namespace std;
main()
{
float x,y,z,dar,i;
ofstream list("list.txt");
cout<<"gheymate emroz:";
cin>>x;
cout<<"gheymate diroz:";
cin>>y;
x*=100;
z=(x/y);
z-=100;
cout<<"%"<<z;
float a[10];
for(i=0;i<10;i++)
a[(int)i]=z;

cout<<endl;

cout<<"%"<<a[(int)i];

list<<'%'<<a[(int)i];

}






به خط 18 - 22 - 24 دقت کن.

raminlich
شنبه 14 تیر 1393, 12:29 عصر
سلام ارور رفع شد ولی عجیب غریب چاپ میشه مثلا وقتی تو اولی می دم 500 دومی میدم 600 تو cout اولی مینویسه -16.4594% ولی تو cout آرایه اینجوری میشه %6.57796e-039 چرا انجوریه؟؟!

a.r.khoshghalb
شنبه 14 تیر 1393, 20:53 عصر
سلام ارور رفع شد ولی عجیب غریب چاپ میشه مثلا وقتی تو اولی می دم 500 دومی میدم 600 تو cout اولی مینویسه -16.4594% ولی تو cout آرایه اینجوری میشه %6.57796e-039 چرا انجوریه؟؟!

برای برنامه ای که شما نوشتی این خروجی ها درسته! پس اون چیزی که می خواستی رو پیاده سازی نکردی!
بگو می خواستی چه برنامه ای بنویسی؟ مسئله چیه؟

raminlich
شنبه 14 تیر 1393, 22:22 عصر
دادش اون مشکلو درست کردم حالا یه مشکل دیگه دارم
#include <iostream>
#include <fstream>
using namespace std;
main()
{
float x,y,z,dar,a[10];
int td,f,co,i=0;
cin>>co; //Processing times
while(co>=0){
ofstream list("list.txt",ios::app);
cout<<"first number:";
cin>>x;
cout<<"second number:";
cin>>y;
x*=100; //proccess on fist and second number step 1
z=(x/y); //proccess on fist and second number step 2
z-=100; //proccess on fist and second number step 3
i++;
a[i]=z;
list<<'%'<<a[i]<<endl;
co--;
}
for(td=0;td<=i;td++)
cout<<a[i];
}
اگه co رو 1 بدم کدای زیرش دو بار اجرا میشه
اگه درست بگم اول برنامه i دادم 0 که آدرس ذخیره ی ارایه هستش که تو طول برنامه بش اضاف میشه و میره بالا
یعنی یه دفعه z تو a[0] میره یه دفه تو a[1] (در صورتی که co رو یک بدم)
حالا می خوام نشون بدم اینارو فقط دفعه ی دوم که z ذخیره میشه رو چاپ می کنه
اینم صورت مسئله
برنامه ایی که دو عدد از ورودی بگیرد با عدد اول و دوم محاسبه ایی انجام دهد سپس نتیجه را در آرایه ذخیره کند و آرایه را در فایلی ذخیره کند
حالا تعداد دفعات محاسبه معلوم نیست یعنی اینجور که اگه کاربر زد 2 یعنی برنامه اجراشه عدد اول دوم رو بده نتیجه بره تو آرایه خونه اول بعد دوباره برنامه اجراشه عدد اول و دوم متفاوت با قبلی رو بده بره تو خونه بعدی آرایه بعد هر وقت که خواست این نتیجه ها چاپ بشه
ببخشید سرتو درد اوردم:لبخند:

a.r.khoshghalb
یک شنبه 15 تیر 1393, 00:53 صبح
الان نگفتی مشکل چیه یا گفتی من نفهمیدم؟! :لبخند:
الان این کد برای این مسئله ای که شما گفتی درسته! تنها ایرادش اینه که قبل از این که خونه a[i] = z بشه، i رو زیاد کردی. یعنی الان وقتی co رو برابر با 2 قرار بدی خونه های اول و دوم آرایه a پر میشن نه خونه های صفر اوم و اول. و به همین دلیل در انتها که خروجی رو چاپ می کنی متغیرت باید از 1 شروع بشه.
در ضمن متعیر شمارنده آرایه ایت td هست ولی خونه i اوم رو چاپ می کنی
برای درک بهتر کدی که برای for نوشتم نگاه کن و به تفاوت هایی که با کدت داره توجه کن


for(td=1;td<=i;td++)
cout << "Number #" << td << " : " << a[td] << endl;