ورود

View Full Version : مشکل در نمایش تابع



Masoudse7en
جمعه 24 شهریور 1391, 12:59 عصر
سلام دوستان به نظره شما کجای کارم اشتباه است که تابع رو فراخوانی نمکینه؟میخوام وقتی ورودی اون چیزی که مشخص کردم باشه بعد اون تابع مشخص شده رو فراخوانی کنه؟ممنون میشم راهنمایی کنید.

#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
void printA (char)
{cout<<" *** "<<endl;
cout<<" *** "<<endl;
cout<<" *** "<<endl;
cout<<" ** ** "<<endl;
cout<<" ** ** "<<endl;
cout<<" ** ** "<<endl;
cout<<" ** ** "<<endl;
cout<<" ** ** "<<endl;
cout<<" ** ** "<<endl;
cout<<" ** ** "<<endl;
cout<<" ** ** "<<endl;
cout<<" ** ** "<<endl;
cout<<" *********** "<<endl;
cout<<" *********** "<<endl;
cout<<" ** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** ";
return;
}
void printB (char)
{cout<<"********* "<<endl;
cout<<"********** "<<endl;
cout<<"** *** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** *** "<<endl;
cout<<"********* "<<endl;
cout<<"********** "<<endl;
cout<<"** *** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** *** "<<endl;
cout<<"********** "<<endl;
cout<<"********* ";
return;
}
void printC (char)
{
cout<<" ****** "<<endl;
cout<<" ******** "<<endl;
cout<<" **** ** "<<endl;
cout<<" ** "<<endl;
cout<<"*** "<<endl;
cout<<"** "<<endl;
cout<<"** "<<endl;
cout<<"** "<<endl;
cout<<"** "<<endl;
cout<<"** "<<endl;
cout<<"** "<<endl;
cout<<"** "<<endl;
cout<<"** "<<endl;
cout<<"*** "<<endl;
cout<<" ** "<<endl;
cout<<" **** ** "<<endl;
cout<<" ******** "<<endl;
cout<<" ****** ";
return;
}
void printD (char)
{
cout<<"******** "<<endl;
cout<<"********** "<<endl;
cout<<"** **** "<<endl;
cout<<"** ** "<<endl;
cout<<"** *** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** ** "<<endl;
cout<<"** *** "<<endl;
cout<<"** ** "<<endl;
cout<<"** **** "<<endl;
cout<<"********** "<<endl;
cout<<"******** ";
return;
}
int main()
{
char alpha,A,B,C,D;
cout<<"Inter Your Name And Press Enter";
std::cin.get();
for(int i=0;cin.get()!='\n';i++){

if(cin.get()=='A')
{char a=void printA();
cout<<a;}

else if(cin.get()=='B')
{char b=void printB();
cout<<b;}

else if(cin.get()=='C')
{char c=void printC();
cout<<c;}

else if(cin.get()=='D')
{char d=void printD();
cout<<d;}
}
cin.get();
cin.get();
return 0;
}

مسعود اقدسی فام
جمعه 24 شهریور 1391, 14:40 عصر
دستور cin.get اول (بعد از چاپ پیام) رو باید پاک کنید. شما پیام رو چاپ کردید و الان منتظرید کاربر اطلاعات وارد کنه. دلیلی نداره یه cin.get اضافی اون اول باشه. در ضمن تا جایی که یادم می یاد cin.get خودش کلید اینتر رو به عنوان اتمام ورودیش فرض می کنه. یعنی مثلا برای تایپ masoud، باید m و اینتر، a و اینتر و همینطور تا آخر پیش برید. نه اینکه هر کلیدی فشار دادید بلافاصله دریافت کنه. اونطور توابع مثل getch و getche فرق دارن. در ضمن cin.get هر چی رو که دریافت کنه چاپ هم می کنه. یعنی اینطور نیست که کاربر a رو بزنه و خروجی فقط A با ستاره ها باشه. اینجور وقتا getch بهتر جواب می ده. البته بستگی به کامپایلر شاید تابع استاندارد دیگه ای هم موجود باشه.