PDA

View Full Version : آرایه ی پایین مثلثی دندانه دار



paradise_human
پنج شنبه 26 فروردین 1389, 10:49 صبح
سلام دوستان .
من این برنامه رو نوشتم ولی توی نوشتن دستور خروجی اون مشکل دارم .
هر طوری که مینویسم اون خروجی مد نظر من رو نمیده .
میخوام ماتریسی به این صورت برام چاپ کنه :
[]
[] []
[] [] []
[] [] [] []
.
.
.
.
.
[] [] [] [] [] [] [] [] . . . . .

اینم کد برنامه :

#include <iostream>
using namespace std;
void main ()
{
const int n=4;
int i,j;
float *a[n];
for(i=1;i<=4;i++)
a[i-1]=new float [i];
for(i=0;i<n;i++)
for(j=0;j<=i;j++)
cin>>a[i][j];


}

paradise_human
پنج شنبه 26 فروردین 1389, 11:53 صبح
دوستان چند سوال :
این دستورات رو میتونید برام تحلیل کنید:

const int n=4;
float *a[n];
for(i=1;i<=4;i++)
a[i-1]=new float [i];
که چرا توی این برنامه از تخصیص حافظه استفاده کردیم ؟
بدون تخصیص نمیشد خروجی مد نظر رو گرفت ؟
حتما باید از تخصیص حافظه استفاده میشد ؟
و در کل ما این دستور ور برای چی توی این برنامه قرار دایم ؟
نقش این دستور توی این برنامه دقیقا چیه و چه کاری انجام میده ؟

paradise_human
سه شنبه 31 فروردین 1389, 10:32 صبح
سلام.
دوستان میخوام این برنامه به نحوی تغییر کنه که ما سطر هاشو خودمون از ورودی بگیریم و خانه ی اول اون سطر رو همون عدد ورودی بذاریم و بقیه اعدادشو هم ازما بگیره .
یعنی اینکه بر فرض مثال ما عدد 4 رو از ورودی بگیریم و این برنامه به این صورت برای ما ماتریسو چاپ کنه
[?][?][?][?][4]
ستون بعدی بر فرض مثال عدد وارده 3 هستش :
[?][?][?][3]
چطور این برنامه رو میشه تغییر داد که این خروجی رو بده ؟

paradise_human
چهارشنبه 01 اردیبهشت 1389, 01:52 صبح
اگر یکم دقیق تر بگی خوب میشه.
برنامه همون برنامه ی قبلیه با این تفاوت که در برنامه ی قبلی سطر ها به ترتیب از ستون 1 تا n از 1 تا n پیش میرفت ولی حالا ما میخوام به تعداد سطر هامون مون که در سوال قبلی فکر کنم 4 بود عدد از ورودی بگیریم و اون اعداد تعداد ستون هارو معین میکنن .
و البته اون عددی هم که میگیریم در خونه ی اول سطر هم قرار میگیره.
شکلشم که تو بالا کشیدم.

paradise_human
چهارشنبه 01 اردیبهشت 1389, 23:25 عصر
#include <iostream>
using namespace std;
void main ()
{
const int n=4;
int i,j,m;
float *a[n];
for(i=0;i<4;i++)
a[i]=new float [i];

for(i=0;i<n;i++)
{
a[0]=m;
cin>>m;
for(j=1;j<m;j++)
cin>>a[i][j];
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
cout<<a[i][j];
cout<<endl;
}


}
این برنامه بیشترش ایراد داره ...
اول از همه اون دستور قرمز رنگه که خودم علتشو میدونم ولی نمیدونم چطوری مشکلشو رفع کنم
و دوم دستور خروجیه ......

paradise_human
پنج شنبه 02 اردیبهشت 1389, 11:26 صبح
#include <iostream>
using namespace std;
void main ()
{
const int n=4;
int i,j,m;
float *a[n];
for(i = 0;i < n;i++)
{
cout<<"m : ";
cin>>m;
a[i] = new float[m];
a[i][m] = NULL;
for(j = 0;j < m;j++)
{
cin>>a[i][j];
}
}
for(i = 0;i < n;i++)
{
j = 0;
while(a[i][j])
{
cout<<a[i][j]<<endl;
j++;
}
delete a[i];
cout<<endl;
}
}

ممنون بابت راهنمایی ولی بازم این دوتا کارو انجام نمیده ....
یکی اینکه وقتی m رو از ما میگیره باید توی خونه ی اول آرایه قرارش بده .
دوم اینکه خوروجیش به صورت عمودیه و افقی عدد عارو چاپ نمیکنه ....

paradise_human
پنج شنبه 02 اردیبهشت 1389, 11:52 صبح
#include <iostream>
using namespace std;
void main ()
{
const int n=4;
int i,j,m;
float *a[n];
for(i = 0;i < n;i++)
{
cout<<"m : ";
cin>>m;
a[i] = new float[m];
a[i][m] = NULL;
a[i][0]=m;
for(j = 1;j<m;j++)
{
cin>>a[i][j];

}
}
for(i = 0;i<n;i++)
{
j = 0;
while(a[i][j])
{
cout<<a[i][j];
j++;

}
cout<<endl;
}
}
خودم به اون چیزی که میخواستم ویرایش کردم برنامه رو و اون مشکل دستور خروجی هم یک endl بود که اونو از بین بردم و مشکل خروجیش هم حل شد.
ممنون.

paradise_human
پنج شنبه 02 اردیبهشت 1389, 12:10 عصر
سلام دوست عزیز Negative_Se7en:
خارج از بحث چند سوال از شما داشتم...
شما چطور کار کردید که اینقدر توی برنامه نویسی عالی هستید ....
الان دانشجویید یا فارغ التحصیل شدید ؟
من الان ترم دو نرم افزارم ...
تقریبا 80% چیزایی که بهم یاد دادنو بلدم .
ولی وقتی میخوام برنامه بنویسم تا 60-70% درست مینویسم ولی اون 30-40% آخرشو گیر میزنم و اون خروجی رو بهم نمیده .
معمولا امتحانایی هم که توی دانشگاه ازمون میگیرن به همین صورت برنامه مینویسم( یعنی 60-70% صحیحه)
میتونید راهنماییم کنید که چطور این مشکلمو حل کنم ؟
البته میدونم چیره دست شدن توی برنامه نویسی یعنی مطالعه و تمرین ....
من تمرین و دارم ولی مطالعه ی آنچنانی ندارم .
اگه مطالعه کنم مشکلم حله ؟