PDA

View Full Version : سوال: راهنمای برای Case فاکتوریل .. برنامه error نمیده ولی جواب ی هم نمیده



mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 00:51 صبح
case'l':{
for (int i=0;i<5;i++){
int f=1;
int f1=1;
while(a[i]>1)
if (a[i]>=0);
a[i]*=f;

while(b[i]>1)
if (b[i]>=0);
b[i]*=f1;

}
for (int i=0;i<5;i++){
cout<<"Factoriel OF a["<<i<<"] Is"<<a[i];
cout<<"Factoriel OF b["<<i<<"] Is"<<b[i];
break;
}
}
default:cout<<"NOTHING";
}

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 13:32 عصر
کسی نیست؟

voiceoffox
چهارشنبه 14 اردیبهشت 1390, 13:41 عصر
کد کاملو بزارین .... من همین جا منتظرم .

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 13:43 عصر
// Araye.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int a[4],b[4];
cout <<"Please Enter A Array!"<<endl;
for (int i=0 ;i<5;i++){
cout <<"a["<<i<<"]=";cin>>a[i];

}
cout <<"Please Enter B Array!"<<endl;
for(int i=0;i<5;i++){
cout <<"b["<<i<<"]=";cin>>b[i];
}
char ch;
cin>>ch;


while(1){
switch(ch){
case 'e':
cout<<"You Asked To Quit the Program"<<endl;
exit(0);

break;

case'+':{
int c[4]={0};
for (int i=0;i<5;i++){
c[i]=a[i]+b[i];

}
for (int i=0;i<5;i++){
cout<<"Multi OF Arrays a["<<i<<"]+b["<<i<<"] Is"<<c[i]<<endl;

}
}

case'l':{
for (int i=0;i<5;i++){
for (int f=a[i];f>=1;f--){
if (f>0)
a[i]*=f;


}
}
for (int i=0;i<5;i++)
cout<<a[i];
break;

}

default:cout<<"ERROR";
}
}



return 0;
}

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 13:48 عصر
case های بالا درست کار می کنه .. فاکتوریل هم یکم تغییر دادم ولی بازم جواب غلط میده و صفحه رو پر از 0 و ERROR که به default دادم میکنه

voiceoffox
چهارشنبه 14 اردیبهشت 1390, 13:50 عصر
شکیبا باشید ...

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 13:53 عصر
حتما ! اگه می شه کمکم کنین من دیگه عقلم به جایی قد نمیده .. هر چی تغییر دادم نشد

voiceoffox
چهارشنبه 14 اردیبهشت 1390, 13:57 عصر
اشکال اول ):

دستور خط 21 رو تو جای اشتباه نوشتن .... منتقلش کنن به بعد از شروع دستور while


یکم دیگه هم صبر کنید ...

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 14:01 عصر
یعنی واسه همین که فقط میشه 1 Ch به برنامه بدم ؟ یعنی 1 بار اجرا میشه؟

voiceoffox
چهارشنبه 14 اردیبهشت 1390, 14:03 عصر
فک می کنم اشکال دیگه نباشه ... فقط به چن تا نکته توجه کنید :

1. بهتره تمام متغیر ها (به جز متغیر هایی که به عنوان شمارشگر حلقه استفاده می شن) تو همون اول برنامه تعریف شن . مثلا بهتر بود خط 20 رو اول برنامه (یعنی همون جایی که آرایه هاذ رو تعریف کردن) می نوشتین .

2. بهتره تو خط 21 به جای استفاده از دستور cin از دستور getch استفاده می کردین ... اگه ازین دستور اطلاعی ندارین بگین تا توضیح بدم .

موفق باشین .

voiceoffox
چهارشنبه 14 اردیبهشت 1390, 14:06 عصر
یعنی واسه همین که فقط میشه 1 Ch به برنامه بدم ؟ یعنی 1 بار اجرا میشه؟


تقریبا !

تو برنامه ای که شما نوشتن فقط میشه یه بار یه کراکتر رو وارد کرد و بعد هم تو یک حلقه بی پایان گیر می افتن .

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 14:06 عصر
نه نمیدونم چیزی از getch.... ولی من هنوز مشکل دارما! مشکل case 'l که واسه فاکتوریل !!

voiceoffox
چهارشنبه 14 اردیبهشت 1390, 14:15 عصر
همون دستور
case'l'
رو میگین ؟! نه اون اشتباه نیس ... احتمالا شما هم اولش مث من فک کردی اون عدده یکه ... آره ؟ ول نه ! اون در واقع حرف l هس ...
L انگلیسی .

و در مورد getch ...
این دستور اینجوری استفاده میشه .



#include "conio.h"

.
.
.

ch=getch();



گذاشتن پرانتز ها هم اجباریه . ch هم که یک متغیر از نوع char هس . با این دستور کاربر فقظ حق داره یک کاراکتر رو وارد کنه . نیاز به زدن کلید اینتر بعد از وارد کردن حرف هم نیس .

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 14:16 عصر
رفتین؟ انگار این برنامه تلسم شده نمی خواد درست شه

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 14:18 عصر
این برنامه رو خودم نوشتم میدونم که L هست ولی برنامه جواب فاکتوریل رو نمیده و 1 سری چرت و پرت توی خروجی چاپ می کنه

voiceoffox
چهارشنبه 14 اردیبهشت 1390, 14:19 عصر
نرفتم . مگه درس نشد ؟ پست قبلی منو نخوندن مگه ؟

voiceoffox
چهارشنبه 14 اردیبهشت 1390, 14:22 عصر
یکم دیگه هم صبر کنن ...

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 14:23 عصر
چرا خوندم .. پست قبلیم رو ببین

voiceoffox
چهارشنبه 14 اردیبهشت 1390, 14:31 عصر
حل شد ... در واقع اشکال از محاسبه فاکتوریل بود . این قطه کد رو


case'l':{
for (int i=0;i<5;i++){
for (int f=a[i];f>=1;f--){
if (f>0)
a[i]*=f;


}
}
for (int i=0;i<5;i++)
cout<<a[i];
break;

}

وردارین و بجاش اینو بزارین ...


case'l':{
for (int i=0;i<5;i++){
for (int f=a[i];f>=1;f--){
s=s*f;


}
cout<<s<<" ";
s=1;
}

break;

در ضمن یادتون نره که متغیر s رو اول برنامه تعریف کنن و بعد مقداره اولیه اش رو مساوی با یک (1) قرار بدن ...

و فقط یک نکته دیگه ... تلسم غلطه ... درستش طلسم هس ...

حله ؟!

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 14:36 عصر
ولی با اضافه کردن این کد فاکتوریل تمام عنصرهای ارایه a رو تویه یک ارایه نشون نمیده .. میشه اونهم درست کنین؟

voiceoffox
چهارشنبه 14 اردیبهشت 1390, 14:42 عصر
یعنی منظورتون اینه که میخواین فاکتوریل اعضای a تو یک آرایه ذخیره بشه ؟

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 14:48 عصر
اون کد هم اضافه کردم ... دیگه برنامه اجرا نمیشه :لبخند:

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 14:50 عصر
اره .. و با زدن L که تو case نوشتم ارایه مخصوص واسه فاکتوریل رو نشون بده .. ولی همونطور که گفتم برنامه اجرا نمیشه :گریه:

voiceoffox
چهارشنبه 14 اردیبهشت 1390, 14:50 عصر
مگه میشه ؟ این برنامه تغییر یافته تا به این جا هس ... اینو اجرا کنن :


#include "stdafx.h"
#include "iostream"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int a[4],b[4],s=1;
cout <<"Please Enter A Array!"<<endl;
for (int i=0 ;i<5;i++){
cout <<"a["<<i<<"]=";cin>>a[i];

}
cout <<"Please Enter B Array!"<<endl;
for(int i=0;i<5;i++){
cout <<"b["<<i<<"]=";cin>>b[i];
}
char ch;



while(1){
cin>>ch;
switch(ch){
case 'e':
cout<<"You Asked To Quit the Program"<<endl;
exit(0);

break;

case'+':{
int c[4]={0};
for (int i=0;i<5;i++){
c[i]=a[i]+b[i];

}
for (int i=0;i<5;i++){
cout<<"Multi OF Arrays a["<<i<<"]+b["<<i<<"] Is"<<c[i]<<endl;

}
}

case'l':{
for (int i=0;i<5;i++){
for (int f=a[i];f>=1;f--){
s=s*f;


}
cout<<s<<" ";
s=1;
}

break;

}

default:cout<<"ERROR";
}
}



return 0;
}

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 14:55 عصر
}
cout<<s<<" ";
s=1;
}


چرا s=1 ؟

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 14:58 عصر
Error 1 fatal error C1075: end of file found before the left brace '{' at 'c:\users\mehrdad\documents\visual studio 2008\projects\araye\araye\araye.cpp(9)' was matched c:\users\mehrdad\documents\visual studio 2008\projects\araye\araye\araye.cpp 62 Araye


الان این errore عجیب رو میده.. فکر کنم ترکید :خجالت:

mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 15:07 عصر
من و تو این موقعت قرار نده :ناراحت:

voiceoffox
پنج شنبه 15 اردیبهشت 1390, 13:57 عصر
1. کدوم موقعیت ؟
2. s رو 1 قرار میدیم چون s قراره در یک سری اعداد ضرب شه تا فاکتوریل حساب بشه ... پس باید مساوی 1 باشه وگرنه حاصل نهایی 0 خواهد بود .
3. برنامه رو که ارور میده دقیقا همین جا قرار بدن ... غلط نکنم اشکال از آکولاد هاس.