PDA

View Full Version : سوال: چاپ مثلث عددی با چند حلقه for



conter
دوشنبه 21 اردیبهشت 1388, 23:15 عصر
عزیزان من میخوام با استفاده از چند تا حلقه for یه مثلث عددی چاپ کنم که این مثلث باید با وارد کردن عدد n باشه و این شکلی ممنون میشم کمکم کنید من تونستم یه طرفه شو بنویسم اما این جوری ....

1
121
12321
1234321
321.......132
n

:افسرده::افسرده::افسرده:

mabbaszadegan
دوشنبه 21 اردیبهشت 1388, 23:29 عصر
سوالتو میشه به دو قسمت تقسیم کرد که یه قسمتش نوشتن اعداد از 1 تا n هست و قسمت بعدی عکس این مطلب
برای قسمت اولش داری:


for(int i=1;i<=n;i++){
cout<<"\n";
for(int j=1;j<=i;j++)
cout<<j;
}

البته این دو قسمت از هم جدا نیستند , باید توی for دوم کمی تغییر ایجاد کنی تا قسمت دوم اعداد رو هم چاپ کنی
خودت بیشتر روش فکر کن اگه نتونستی کدتو بزار اینجا تا کمکت کنم

Keyhan Clever
سه شنبه 22 اردیبهشت 1388, 15:42 عصر
یه کم جوابتونو اصلاح میکنم
یه for که از یک تا n-1 رو چاپ کنه
یه دونه هم معمولی باید n چاپ بشه و یه for هم که n-1 رو برعکس تا یک چاپ کنه

Keyhan Clever
سه شنبه 22 اردیبهشت 1388, 15:43 عصر
البته یه شمارنده هم میخواد که وقتی به n رسید دیگه برنامه رو متوقف کنه تا مثلث بیشتر از n نشه

tdkhakpur
سه شنبه 22 اردیبهشت 1388, 16:47 عصر
سلام:
دوست گرامی از این مثلث تا 10 بهت قشتگ جوای میده ولی اعداد هر چه قدر بالا بره خودت باید با " " جبرانش کنی بقیه اش با شما


#include <iostream.h>
int main()
{
int n, c, b, j;
cout<<"\n add ro vared konid >";
cin>>n;
c = (n*2-1)/2;
b = 1;
for(int i=0;i<n;i++){
cout<<"\n";
for(j=0;j<c-i;j++)
cout<<" ";
for( j=1;j<b;j++)
cout<< j;
for( j=1;j<i;j++)
cout<< j;
b+=1;
}
return 0;
}
موفق باشید.

Keyhan Clever
سه شنبه 22 اردیبهشت 1388, 23:42 عصر
خوب ببینید میتونین وقتی n بیشتر از ده شد به جای گذاشتن دستی " " از یه for دیگه استفاده کنین که به تعداد for " " رو هر بار با یه فاصله بیشتر چاپ کنه.
__________________________________________________ __________________________
012345678987643210

conter
چهارشنبه 23 اردیبهشت 1388, 17:53 عصر
خوب ممنون دوستان من می خواستم این شکلی " " رو اضافه کنم تو یه حلقه ولی نشد
f=char;

f=" ";

tdkhakpur
چهارشنبه 23 اردیبهشت 1388, 20:47 عصر
سلام:
دوست گرامی اگه بخوای مثلث خیلی دقیق از نظر شکل درباید باید در حالت گرافیک رسم بشه ولی در حالت text باید از دقت کمتری برخوردار باشه و این هم سورس کلی.
موفق باشید.



#include <iostream.h>
int cNum (int k)
{
int val =1;
while( k/10 > 0 )
{
k /=10;
val ++;
}
return val;
}
int cNumCount (int k)
{
int val = 0;
for( int i=k; i>0 && cNum(i)== cNum(k); i--)
val ++;
return val;
}
int main()
{
int n, c, b, j;
cout<<"\n add ro vared konid >";
cin>>n;
c = n*2;
b = 1;
for(int i=0;i<n;i++){
cout<<"\n";
for(j=0;j<c-i-cNumCount(b)*(cNum(i)-1);j++)
cout<<" ";
for( j=1;j<=b;j++)
cout<<j;
for( j=1;j<i+cNum(i);j++)
cout<<j;
b+=1;
}
return 0;
}

Sundown
پنج شنبه 24 اردیبهشت 1388, 12:43 عصر
سلام دوستان این کد رو چند وقت پیش نوشتم شاید بدردتون بخوره کد مثلث پاسکال یا مثلث خیام هست.
بعد از اجرا یک عدد ازتون میخواد 12 را وارد کنید.(تعداد سطرها هست)


وفق باشید

conter
دوشنبه 28 اردیبهشت 1388, 11:35 صبح
ببینید عزیزان من این شکلی نوشتم و تا عددی که از ورودی دریافت می کنه رو چاپ می کنه ولی مشکلش شکل مثلث هستش و مال من مثلثو یکطرفه چاپ میکنه اینجوری البته از چپ چاپ میکنه نه مثل این :
1
121
12321
1234321
123454321
اینم برنامه ممنون میشم کمک کنید :

conter
دوشنبه 28 اردیبهشت 1388, 11:39 صبح
#include<iostream.h>
#include<conio.h>
Void main()
{clrscr();
Int I,n,j,k;
Cout<<”enter your number”;
Cin>>n;
For(i=1;i<=n;i++)
{
for(k=i;k<=n;k++)
cout<<" ";
for(j=1;j<=I;j++)
Cout<<” “<<j;
For(j=I;j>1;j--)
cout<<” “<<j-1;
Cout<<”\n”;}
Getch();
}