PDA

View Full Version : بررسی مشکل کد سی پلاس پلاس



mohammad2407
دوشنبه 29 اردیبهشت 1393, 19:31 عصر
سلام دوستان

میشه کدی که من نوشتم رو چک کنید

اخه مشکل داره برنامه اجرا نمیشه !! خطا داره


#include<iostream.h>
#include<conio.h>
main()
{
char c;
do{
cout<<"\n choice one of items";
cout<<"\n F: Fact of Number";
cout<<"\n T: Number of digits";
cout<<"\n S: Sum of digits";
cout<<"\n ***********E: Exit***********";
cin>>c;
switch(c)
{
case 'f':
{int i,f=1,n;
cout<<"\n Enter Number:";
cin>>n;
for(i=1;i<=n;i++)
f*=i;
cout<<"\n Factorial:"<<f;
break;
}

case't':
{int k=0,n;
cout<<"\n enter Number:";
cin>>n;
while(n!=0)
{
k++;
n/=10;
}
cout<<"\n Number of digits:"<<k;
break;
}

case's':
{int sum=0,n,m;
cout<<"\n Enter Number:";
cin>>n;
while(n!=0)
{m=n%10;
sum+=m;
n/=10;
}
cout<<"\n Sum of digets:"<<sum;
break;
}
}while(c!='e'&&c!='E');
cout<<"\n\n\n ***GOOD BYE***";
getch();
getch();

motherboard
دوشنبه 29 اردیبهشت 1393, 21:44 عصر
سلام
این طوری میشه:

#include<iostream>
#include<conio.h>
using namespace std;
main()
{
char c;
do{
cout<<"\n choice one of items";
cout<<"\n F: Fact of Number";
cout<<"\n T: Number of digits";
cout<<"\n S: Sum of digits";
cout<<"\n ***********E: Exit***********";
cin>>c;
switch(c)
{
case 'f':
{int i,f=1,n;
cout<<"\n Enter Number:";
cin>>n;
for(i=1;i<=n;i++)
f*=i;
cout<<"\n Factorial:"<<f;
break;
}

case't':
{int k=0,n;
cout<<"\n enter Number:";
cin>>n;
while(n!=0)
{
k++;
n/=10;
}
cout<<"\n Number of digits:"<<k;
break;
}

case's':
{int sum=0,n,m;
cout<<"\n Enter Number:";
cin>>n;
while(n!=0)
{m=n%10;
sum+=m;
n/=10;
}
cout<<"\n Sum of digets:"<<sum;
break;
}
}
}
while(c!='e'&&c!='E');
cout<<"\n\n\n ***GOOD BYE***";
getch();
}


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

#include<iostream.h>
#include<conio.h>
main()

(while(c=1) printf(cpp=0
دوشنبه 29 اردیبهشت 1393, 21:49 عصر
سلام.
برنامه شما با تعداد خطهای کمتر اصلاح شد -- منتها من نمی دونم شما قصد داشتید چه نتیجه ای رو دریافت کنید -- اگر می گفتید، بهتر بود.
این دو برنامه رو با برنامه خودتون مقایسه کنید تا متوجه اشتباهاتتون بشید.
شما داخل دو کلمه کلید do و while در اول برنامه تون، از دستور cin >> c استفاده کردید -- هر دفعه که یکی از شروط داخل کلمه کلیدی switch اجرا میشه و نتیجه میده، برنامه برمیگرده به دستور cin >> c -- بنابراین پنجره Command Prompt ثابت می مونه و منتظر دریافت ورودی بعدی از کاربر میشه.
پنجره تا وقتی ثابت می مونه که به متغیر c، دو کاراکتر e و E داده نشه -- در غیر اینصورت پنجره سریعا بسته میشه.
برای ثابت نگه داشتن پنجره در صورت وارد شدن دو کاراکتر e و E، شما می تونی از تابع system استفاده کنی. (به جای 1- می تونید زمان دیگری رو جایگزین کنید. مثلا 60. 1- به دلیل زمان نامحدود برای باز بودن پنجره هست).



#include<iostream>
using namespace std;
main() {
char c;
int i, f=1, n, k=0, sum=0, m;
do {
cout<<"\n choice one of items";
cout<<"\n F: Fact of Number";
cout<<"\n T: Number of digits";
cout<<"\n S: Sum of digits";
cout<<"\n ***********E: Exit***********\n";
cin>>c;
switch(c) {
case 'f':
cout<<"\n Enter Number:";
cin>>n;
for(i=1;i<=n;i++)
f*=i;
cout<<"\n Factorial:"<<f;
break;

case't':
cout<<"\n enter Number:";
cin>>n;
while(n!=0) {
k++;
n/=10;
}
cout<<"\n Number of digits:"<<k;
break;

case's':
cout<<"\n Enter Number:";
cin>>n;
while(n!=0) {
m=n%10;
sum+=m;
n/=10;
}
cout<<"\n Sum of digets:"<<sum;
break;
}
}while(c!='e'&&c!='E');
cout<<"\n\n\n ***GOOD BYE***";
system ("TIMEOUT /T -1");
}



تعریف کردن متغیرها به روشی که خودتون در برنامه تون استفاده کردین، نتیجه ای دیگه ای رو میده :

#include<iostream>
using namespace std;
main() {
char c;
do {
cout<<"\n choice one of items";
cout<<"\n F: Fact of Number";
cout<<"\n T: Number of digits";
cout<<"\n S: Sum of digits";
cout<<"\n ***********E: Exit***********\n";
cin>>c;
switch(c) {
case 'f': {
int i,f=1,n;
cout<<"\n Enter Number:";
cin>>n;
for(i=1;i<=n;i++)
f*=i;
cout<<"\n Factorial:"<<f;
break;
}
case't': {
int k=0,n;
cout<<"\n enter Number:";
cin>>n;
while(n!=0) {
k++;
n/=10;
}
cout<<"\n Number of digits:"<<k;
break;
}
case's': {
int sum=0,n,m;
cout<<"\n Enter Number:";
cin>>n;
while(n!=0) {
m=n%10;
sum+=m;
n/=10;
}
cout<<"\n Sum of digets:"<<sum;
break;
}
}
}while(c!='e'&&c!='E');
cout<<"\n\n\n ***GOOD BYE***";
system ("TIMEOUT /T -1");
}

(while(c=1) printf(cpp=0
دوشنبه 29 اردیبهشت 1393, 22:13 عصر
پست قبلیم ویرایش شد و روش دوم (تعریف متغیر داخل کلمه کلیدی switch -- روشی که خودتون استفاده کردید) بهش اضافه شد.
در هر دو برنامه نتیجه متفاوتی بدست میاد. در برنامه اولی مقدار داخل متغیرها از بین نمیره و با هربار مقدار جدید دادن، مقدار جدید با مقدار قبلی داخل متغیر جمع میشه.
در برنامه دوم اینطور نیست. امتحان کنید.
موفق باشید.

mohammad2407
دوشنبه 29 اردیبهشت 1393, 22:34 عصر
سلام
این طوری میشه:

#include<iostream>
#include<conio.h>
using namespace std;
main()
{
char c;
do{
cout<<"\n choice one of items";
cout<<"\n F: Fact of Number";
cout<<"\n T: Number of digits";
cout<<"\n S: Sum of digits";
cout<<"\n ***********E: Exit***********";
cin>>c;
switch(c)
{
case 'f':
{int i,f=1,n;
cout<<"\n Enter Number:";
cin>>n;
for(i=1;i<=n;i++)
f*=i;
cout<<"\n Factorial:"<<f;
break;
}

case't':
{int k=0,n;
cout<<"\n enter Number:";
cin>>n;
while(n!=0)
{
k++;
n/=10;
}
cout<<"\n Number of digits:"<<k;
break;
}

case's':
{int sum=0,n,m;
cout<<"\n Enter Number:";
cin>>n;
while(n!=0)
{m=n%10;
sum+=m;
n/=10;
}
cout<<"\n Sum of digets:"<<sum;
break;
}
}
}
while(c!='e'&&c!='E');
cout<<"\n\n\n ***GOOD BYE***";
getch();
}


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

#include<iostream.h>
#include<conio.h>
main()


آقا رضا دستت درد نکنه مشکل از کجا بود :تشویق:

(while(c=1) printf(cpp=0
دوشنبه 29 اردیبهشت 1393, 23:14 عصر
آقا رضا دستت درد نکنه مشکل از کجا بود :تشویق:
آقا محمد، دلیل اجرا نشدن برنامه شما، نادرست نوشتن و فراموش کردن این خطها بود:

#include <iostream>
using namespace std;
break فراموش کردن یک آکولاد بعد از آخرین
فراموش کردن یک آکولاد در آخر برنامه

منتها اگر شما در همون پُست اول می گفتید که از خروجی برنامه تون چه انتظاری دارید، خب من در پُستی مشکل اجرا نشدنش رو بهتون می گفتم.
من حتی نمی دونم انتظار شما از این برنامه چیه.
باید سوالتون رو کامل می پرسیدید.
اگر نتایج خروجی هر دو برنامه ای که در پُست بالا براتون نوشتم، اون چیزی نیست که انتظارش رو دارید، پس ذکرش کنید تا ما کمکتون کنیم.

موفق باشی.

motherboard
دوشنبه 29 اردیبهشت 1393, 23:59 عصر
آقا رضا دستت درد نکنه مشکل از کجا بود :تشویق:

خواهش میکنم
شما لطف دارید.:قلب: اگه بخوام براتون ساده توضیح بدم به این صورت است که برنامه شما بعد از ()main در حالت ساده با do و اکولادش شروع میشه و در داخل عملیات do یک جور عملیات شرطی با ()switch ایجاد شده و شما اکولاد های مربوط به دستورات ()switch رو به صورت درست قرار دادید و فقط اون اکولاد پایانی عملیات کلی do که با اکولاد شروع شده بود رو یادتون رفت تا قرار بدید.اشتباه بعدی شما هم شبیه به اشتباه اولی بود با این فرق که این بار اکولاد پایانی بدنه اصلی تابع ()main که اون هم با یک اکولاد شروع شده بود و تمام دستورات در داخل اکولاد های این تابع قرار داده شده بود رو قرار نداده بودید.