PDA

View Full Version : مبتدی: ایجاد شکل مربع با ستاره ها از طریق گرفتن ورودی - چگونه کد بهتری می توان نوشت؟



ProgramYL
جمعه 10 مرداد 1393, 20:44 عصر
کد زیر با گرفتن ورودی مربعی با کاراکتر ستاره ایجاد میکنه. می خوام بدونم راه بهتری هم هست تا کد زیر کوتاه تر بشه؟ یعنی با تایپ کمتر همین نتیجه بدست بیاد؟
فقط باید از دستورات while, if...else استفاده بشه.

#include <iostream>
using namespace std;


int main ()
{
int c=0;
int ctwo;
int input;
int inputwo;

cout << "Enter length of square side: ";
cin >> input;
cout << "\n";

while (c < input)
{
cout << "*";
++c;
};
cout << "\n";

c=0;
inputwo=input;
inputwo-=2;
while (c < inputwo)
{
cout << "*";
ctwo=0;
while (ctwo < inputwo)
{
cout << " ";
++ctwo;
}

cout << "*" << "\n";
++c;
};

c=0;
while (c < input)
{
cout << "*";
++c;
};

}

rahnema1
شنبه 11 مرداد 1393, 00:54 صبح
int j,i=-1,input=5;
while(j=0,++i<input)
{
while(j<input)
if ( !(j++%(input-1))|| !(i%(input-1))) cout<<'*'; else cout<<' ';
cout<<endl;
}

ProgramYL
شنبه 11 مرداد 1393, 03:01 صبح
int j,i=-1,input=5;
while(j=0,++i<input)
{
while(j<input)
if ( !(j++%(input-1))|| !(i%(input-1))) cout<<'*'; else cout<<' ';
cout<<endl;
}


بهتره کل کتاب رو بخونم، چون الان از همینش هم سر در نیاوردم :لبخند:

:تشویق:

sa1378
یک شنبه 12 مرداد 1393, 15:05 عصر
حق داری منم دو ساعت نگاه کردم فهمیدم چیه کدش
خب ایشون بجای اینکه دو ساعت برن خط بعد ++ کنن و هر شرط رو جدا توی یه خط بنویسن همه رو یجا نوشتن و درکش سخت شده

behzad004
چهارشنبه 05 آذر 1393, 12:56 عصر
دوستان ببخشید میشه ی نفر اینو اسون ترش رو بنویسه؟؟یکم بیشتر بود کدش عیب نداره فقط قابل فهم باشه لطفا ممنونم

sa1378
چهارشنبه 05 آذر 1393, 15:18 عصر
دوستان ببخشید میشه ی نفر اینو اسون ترش رو بنویسه؟؟یکم بیشتر بود کدش عیب نداره فقط قابل فهم باشه لطفا ممنونم

#include <cstdio>

int main() {
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
printf("*");
printf("\n");
}
return 0;
}

zero_ox
چهارشنبه 05 آذر 1393, 15:22 عصر
#include <iostream>
using namespace std;


int main() {
int i,j,n;
cout<<"Number : " ;
cin>>n;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
if(i==1||i==n||j==1||j==n)
cout<<"*";
else cout<<" ";
cout<<"\n";}

}

behzad004
چهارشنبه 05 آذر 1393, 20:23 عصر
#include <cstdio>

int main() {
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
printf("*");
printf("\n");
}
return 0;
}

منظور من از مربع توخالی هست یعنی اینجوری
* * * *
* ||||*
* ||||*
* * * *
این | رو ک گذاشتم برای اینکه مربع ایجاد بشه تو برنامه نیست توش باید خالی باشه

behzad004
چهارشنبه 05 آذر 1393, 22:16 عصر
من کار کرد برنامه فقط ی چیزی
من شرطش رو نمیفهمم اگه میشه ی توضیح حالا یا همه برنامه رو یا فقط همین خط شرط رو بدید مرسی
if(i==1||i==n||j==1||j==n)

zero_ox
پنج شنبه 06 آذر 1393, 15:40 عصر
فرض بگیر n=5 ; خوب ابتدا i=1 بعد شرط حلقه بالای چک می شه یعنی i کوچکترمساوی 5 خوب شرط برقراره می آد حلقه پایینی j=1 می شه شرط حلقه دوم چک می شه بعد نوبت به دستور if می رسه که چند دستور داخلشه درسته اگر شرط درست ارزیابی بشه ستاره چاب می شه اگه نشه دستور else اجرا می شه . خوب راجع به شرط if چند دستوره که علامت بینشون علامت or (||) قرارداره یعنی درصورتی شرط اشتباه است که دو طرف علامت ||غلط باشه دربقیه موارد درست ارزیابی می شه درمرحله اول که i= 1 هست پس شرط درسته و ستاره چاپ می شه بعد وقتی j : 2,3,4, می شه شرط غلط پس فاصله می زنه وبعد وقتی که j=n می شه دراینجا یعنی 5 شرط درست ارزیابی می شه و ستاره چاب می شه و دراخر یکبار \n یعنی خط جدید و دوباره کنترل به حلقه بالایی برمی گرده و همین مراحل تا i=5 بشه . . . برای دیدن وفهمیدنش بهتره برنامه رو تریس کنی تا خوب متوچه بشی

behzad004
پنج شنبه 06 آذر 1393, 19:56 عصر
من همشو فهمیدم فقط همین قضیحه چاپ جای خالی رو نفهمیدم چی شد مثلا nرو دادیم 5
خوب تو شرط گفتیم j=n یعنی 5 بار * چاپ میشه
پس به else نمیرسه ک ....

zero_ox
جمعه 07 آذر 1393, 06:18 صبح
ببین وقتی i تو حلقه بالایی 1 هست تو حلقه پایین j از ا تا 5 باید بره درست( فرض کردیم n=5 )وقتی i دو میشه همینجور والی اخر تا i=5 این چرخه ادامه پیدامی کنه حالا این شرط if می گه فقط وقتی j دقیقا مثلا j==5 یا j==1 شد ستاره بزنوالا وقتی j 2, 3 ,4 هست فاصله بزن درمورد i هم. حلقه های تودرتورو سرچ کن بعد هم اگرجندتا برنامه رو تریس کنی کاملا متوجه می شی .

behzad004
جمعه 07 آذر 1393, 19:30 عصر
اها حالا گرفتم چی شد خیلی ممنونم