View Full Version : سوال: راهنمای برای Case فاکتوریل .. برنامه error نمیده ولی جواب ی هم نمیده
mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 01: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, 14:32 عصر
کسی نیست؟
voiceoffox
چهارشنبه 14 اردیبهشت 1390, 14:41 عصر
کد کاملو بزارین .... من همین جا منتظرم .
mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 14: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, 14:48 عصر
case های بالا درست کار می کنه .. فاکتوریل هم یکم تغییر دادم ولی بازم جواب غلط میده و صفحه رو پر از 0 و ERROR که به default دادم میکنه
voiceoffox
چهارشنبه 14 اردیبهشت 1390, 14:50 عصر
شکیبا باشید ...
mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 14:53 عصر
حتما ! اگه می شه کمکم کنین من دیگه عقلم به جایی قد نمیده .. هر چی تغییر دادم نشد
voiceoffox
چهارشنبه 14 اردیبهشت 1390, 14:57 عصر
اشکال اول ):
دستور خط 21 رو تو جای اشتباه نوشتن .... منتقلش کنن به بعد از شروع دستور while
یکم دیگه هم صبر کنید ...
mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 15:01 عصر
یعنی واسه همین که فقط میشه 1 Ch به برنامه بدم ؟ یعنی 1 بار اجرا میشه؟
voiceoffox
چهارشنبه 14 اردیبهشت 1390, 15:03 عصر
فک می کنم اشکال دیگه نباشه ... فقط به چن تا نکته توجه کنید :
1. بهتره تمام متغیر ها (به جز متغیر هایی که به عنوان شمارشگر حلقه استفاده می شن) تو همون اول برنامه تعریف شن . مثلا بهتر بود خط 20 رو اول برنامه (یعنی همون جایی که آرایه هاذ رو تعریف کردن) می نوشتین .
2. بهتره تو خط 21 به جای استفاده از دستور cin از دستور getch استفاده می کردین ... اگه ازین دستور اطلاعی ندارین بگین تا توضیح بدم .
موفق باشین .
voiceoffox
چهارشنبه 14 اردیبهشت 1390, 15:06 عصر
یعنی واسه همین که فقط میشه 1 Ch به برنامه بدم ؟ یعنی 1 بار اجرا میشه؟
تقریبا !
تو برنامه ای که شما نوشتن فقط میشه یه بار یه کراکتر رو وارد کرد و بعد هم تو یک حلقه بی پایان گیر می افتن .
mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 15:06 عصر
نه نمیدونم چیزی از getch.... ولی من هنوز مشکل دارما! مشکل case 'l که واسه فاکتوریل !!
voiceoffox
چهارشنبه 14 اردیبهشت 1390, 15:15 عصر
همون دستور
case'l'
رو میگین ؟! نه اون اشتباه نیس ... احتمالا شما هم اولش مث من فک کردی اون عدده یکه ... آره ؟ ول نه ! اون در واقع حرف l هس ...
L انگلیسی .
و در مورد getch ...
این دستور اینجوری استفاده میشه .
#include "conio.h"
.
.
.
ch=getch();
گذاشتن پرانتز ها هم اجباریه . ch هم که یک متغیر از نوع char هس . با این دستور کاربر فقظ حق داره یک کاراکتر رو وارد کنه . نیاز به زدن کلید اینتر بعد از وارد کردن حرف هم نیس .
mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 15:16 عصر
رفتین؟ انگار این برنامه تلسم شده نمی خواد درست شه
mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 15:18 عصر
این برنامه رو خودم نوشتم میدونم که L هست ولی برنامه جواب فاکتوریل رو نمیده و 1 سری چرت و پرت توی خروجی چاپ می کنه
voiceoffox
چهارشنبه 14 اردیبهشت 1390, 15:19 عصر
نرفتم . مگه درس نشد ؟ پست قبلی منو نخوندن مگه ؟
voiceoffox
چهارشنبه 14 اردیبهشت 1390, 15:22 عصر
یکم دیگه هم صبر کنن ...
mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 15:23 عصر
چرا خوندم .. پست قبلیم رو ببین
voiceoffox
چهارشنبه 14 اردیبهشت 1390, 15: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, 15:36 عصر
ولی با اضافه کردن این کد فاکتوریل تمام عنصرهای ارایه a رو تویه یک ارایه نشون نمیده .. میشه اونهم درست کنین؟
voiceoffox
چهارشنبه 14 اردیبهشت 1390, 15:42 عصر
یعنی منظورتون اینه که میخواین فاکتوریل اعضای a تو یک آرایه ذخیره بشه ؟
mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 15:48 عصر
اون کد هم اضافه کردم ... دیگه برنامه اجرا نمیشه :لبخند:
mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 15:50 عصر
اره .. و با زدن L که تو case نوشتم ارایه مخصوص واسه فاکتوریل رو نشون بده .. ولی همونطور که گفتم برنامه اجرا نمیشه :گریه:
voiceoffox
چهارشنبه 14 اردیبهشت 1390, 15: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, 15:55 عصر
}
cout<<s<<" ";
s=1;
}
چرا s=1 ؟
mehrdadseret
چهارشنبه 14 اردیبهشت 1390, 15: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, 16:07 عصر
من و تو این موقعت قرار نده :ناراحت:
voiceoffox
پنج شنبه 15 اردیبهشت 1390, 14:57 عصر
1. کدوم موقعیت ؟
2. s رو 1 قرار میدیم چون s قراره در یک سری اعداد ضرب شه تا فاکتوریل حساب بشه ... پس باید مساوی 1 باشه وگرنه حاصل نهایی 0 خواهد بود .
3. برنامه رو که ارور میده دقیقا همین جا قرار بدن ... غلط نکنم اشکال از آکولاد هاس.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.