PDA

View Full Version : سوال: اشکال در اجرا برنامه



Faraz Mehraien
جمعه 13 دی 1392, 21:20 عصر
با سلام.من این برنامه رو نوشتم که المان های ماتریس و بگیره و اگر در جواب do you want to continue? کاراکتر n را دریافت کرد break کنه که درست اجرا نمی شه یعنی بازم متغیر می گیره.؟؟؟
اینم بزنامم و کامپایلرم dev است
#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int i,j,p,q;
char ans1,ans2,answer;
int matrix1[100][100];
int matrix2[100][100];
char func[80];

cout<<"enter first matrix\n";
while(1)
{
for(i=0; ; i++)
{
for(j=0; ;j++)
{
cin>>matrix1[i][j];
cout<<"do you want to continue? (y/n)\n";
cin>>ans1;
}
}
if(ans1 !='y')
break;


}






cout<<"\n";
getch ();
return 0;
}

sr2m72
جمعه 13 دی 1392, 21:47 عصر
با سلام.من این برنامه رو نوشتم که المان های ماتریس و بگیره و اگر در جواب do you want to continue? کاراکتر n را دریافت کرد break کنه که درست اجرا نمی شه یعنی بازم متغیر می گیره.؟؟؟
اینم بزنامم و کامپایلرم dev است
#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int i,j,p,q;
char ans1,ans2,answer;
int matrix1[100][100];
int matrix2[100][100];
char func[80];

cout<<"enter first matrix\n";
while(1)
{
for(i=0; ; i++)
{
for(j=0; ;j++)
{
cin>>matrix1[i][j];
cout<<"do you want to continue? (y/n)\n";
cin>>ans1;
}
}
if(ans1 !='y')
break;


}






cout<<"\n";
getch ();
return 0;
}


سلام
شما در ابتدا باید شرط را درون حلقه بعد از ans1 قرار بدین.
بعد شما با دستور break فقط یکی از حلقه ها رو شکوندین.
برای هر کدام از حلقه ها باید دستور break را بنویسید.

#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int i,j,p,q;
char ans1,ans2,answer;
int matrix1[100][100];
int matrix2[100][100];
char func[80];

cout<<"enter first matrix\n";
while(1)
{
for(i=0; ; i++)
{
for(j=0; ;j++)
{
cin>>matrix1[i][j];
cout<<"do you want to continue? (y/n)\n";
cin>>ans1;
if(ans1 != 'y')
break;
}
break;
}
break;
}
cout<<"\n";
return 0;
}


موفق باشید//

Azar.099
جمعه 13 دی 1392, 22:05 عصر
این اشتباهه
چون وقتی حلقه یک تمام بشه (برای زمانی را میگم که if برقرار نشده باشه) وقتی باید یکی به i ها اضافه کنه اینکار انجام نمیشه و از حلقه ها خارج میشه

sr2m72
جمعه 13 دی 1392, 22:16 عصر
این اشتباهه
چون وقتی حلقه یک تمام بشه (برای زمانی را میگم که if برقرار نشده باشه) وقتی باید یکی به i ها اضافه کنه اینکار انجام نمیشه و از حلقه ها خارج میشه

اگه درست به حلقه ها نگاه کنید میبینید که شرط خاتمه ندارند. یعنی چی؟؟؟ "یعنی حلقه بینهایت"
پس داخلی ترین حلقه هیچ وقت تمام نمیشه. و اگر شرط، داخل حلقه نباشه هیچ وقت اجرا نمیشه.

حالا چرا اشتباهه؟؟؟؟

کامبیز اسدزاده
جمعه 13 دی 1392, 23:31 عصر
این اشتباهه
چون وقتی حلقه یک تمام بشه (برای زمانی را میگم که if برقرار نشده باشه) وقتی باید یکی به i ها اضافه کنه اینکار انجام نمیشه و از حلقه ها خارج میشه

کدی که دوستمون گذاشتند کاملا درست هست و توضیحاتشونم صحیح.

omidshaman
شنبه 14 دی 1392, 11:21 صبح
سلام
شما در ابتدا باید شرط را درون حلقه بعد از ans1 قرار بدین.
بعد شما با دستور break فقط یکی از حلقه ها رو شکوندین.
برای هر کدام از حلقه ها باید دستور break را بنویسید.

#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int i,j,p,q;
char ans1,ans2,answer;
int matrix1[100][100];
int matrix2[100][100];
char func[80];

cout<<"enter first matrix\n";
while(1)
{
for(i=0; ; i++)
{
for(j=0; ;j++)
{
cin>>matrix1[i][j];
cout<<"do you want to continue? (y/n)\n";
cin>>ans1;
if(ans1 != 'y')
break;
}
break;
}
break;
}
cout<<"\n";
return 0;
}


موفق باشید//
اون while(1) توی کدتون اضافیه

sr2m72
شنبه 14 دی 1392, 12:24 عصر
اون while(1) توی کدتون اضافیه

بله اضافه هست.
من کد بالا رو تصحیح کردم، حواسم نبود پاکش کنم.

Azar.099
شنبه 14 دی 1392, 14:44 عصر
اگه درست به حلقه ها نگاه کنید میبینید که شرط خاتمه ندارند. یعنی چی؟؟؟ "یعنی حلقه بینهایت"
پس داخلی ترین حلقه هیچ وقت تمام نمیشه. و اگر شرط، داخل حلقه نباشه هیچ وقت اجرا نمیشه.

حالا چرا اشتباهه؟؟؟؟

بله درست میگین ..
من به بی نهایت بودن حلقه ها توجه نکردم