PDA

View Full Version : مشکل در برنامه ای به واسطه توابع getche و ساختار if...else (برنامه ای برای دریافت پسوورد)



sina4everafter
شنبه 11 خرداد 1392, 11:38 صبح
سلام.دوستان اگر من و راهنمایی کنید ممنون میشم.
می خوام برنامه ای بنویسم که از کاربر پسوورد و درخواست و وارد کنه و اگر درست بود پیغام خوش آمد چاپ کنه و در غیر اینصورت چاپ کنه که پسوورد اشتباهه.
من 2 تا سوال دارم.یکی اینکه در این کد ، با استفاده از ثابت ها یه پسوردیو داخل برنامه تعریف کرده و کاربر باید دقیقا همون کد و وارد کنه.من می خوام طوری بنویسم که از همون ابتدا کاربر خودش پسورد و وارد کنه و دوباره در خواست پسوورد برای تاییدش کنه.اگر درست بود پیغام خوش آمد بگه در غیر این صورت اعلا کنه که پسورد و اشتباه وارد کردین.
و سوال دومم اینه که من متوجه ی کاربرد عدد 13 و علامت =! نمی شم.اگر یه توضیحی بدین ممنون میشم.
-----------------------------------------------------------
//This program demonstrates IF…ELSE statement.
#include "iostream"
#include <conio.h>
using namespace std;
int main()
{
const int password=62541893;
int ans=0;
char ch=0;
cout<<"Please enter the password for login : ";
while((ch=getch())!= 13)
if(ch>='0' && ch<='9')
{
cout.put('*');
ans *=10;
ans +=(ch-48);
}
if(ans==password)
cout<<"\nWelcome to MJZ program.\n";
else
cout<<"\nUnfortunately you enter a wrong password."
<<"\nLogin failed.\n";
return 0;
}
----------------------------------------------------------------------------
من خودم برای حالتی که پسووردو از کار بردریافت کنه اینطوری نوشتم:
----------------------------------------------------------------------------
char ch,ch1;
cout<<"enter pass.\n";
while((ch=cin.get())!='\n');
cout<<"\n\nRe-enter pass";
while((ch1=cin.get())!='\n');
if(ch1==ch)
{
cout<<"\nwelcome"<<endl;
}
else
{
cout<<"\nyou enterd a wrong pass."<<endl;
}
cin.get();
}
-----------------------------------------------------------------------------
این کد در هر صورت (چه پسوورد درست باشه چه نباشه) پیغام خوش آمد و چاپ می کنه.
اگر راهنماییم کنید ممنون میشم.

saied_hacker
شنبه 11 خرداد 1392, 21:46 عصر
دوست عزیز اینجا اینجوری سوال پرسیدن خلاف قوانین هست ( درخواست کد/دانشجویی) اما چون تازه واردی جواب میدم.

شما اول متغیر password زو از حالت const خارج کن تا بتونی بهش بعدا مقدار بدی...
int password = 0;

این دو خطم اضافه کن تا بتونی رمز رو بگیری...

cout<<"Please enter the password... ";
cin >> password;


اگرم مثل اص کد میخای * بیاد

به جای 2 خط بالا از این استفاده کن

cout<<"Please enter the password... ";
while((ch=getch())!= 13)
if(ch>='0' && ch<='9')
{
cout.put('*');
password *=10;
password +=(ch-48);
}

13 معادل کلید enter روی کیبرد شماست که مبشه رفتن به خط بعد (خط بعد که معادل کاراکتریش میشه '\n' )
اینجا داره کارکاتر به کاراکتر می خونه و چک میکنه که کارکتر وارد شده enter نباشه ....