[C++] While Döngüsünden EOF İle Çıkış Sorunu
-
#include<iostream>
#include<locale>
using namespace std;
int main()
{
int i=0,parola=0;
setlocale(LC_ALL,"TURKISH");
do
{
cout<<"Parola: ";
cin>>parola;
if(parola==1991)
{
cout<<"doğru\n";
break;
}
else
cout<<"yanlış parola\n";
}
while((parola==getchar())!=EOF);
}------------------------------------
Yazokulu ödevi için ufak bi hasta kayıt programı yazıcam aslında, menü olucak kayıt ekle kayıt sil gibisinden. while ile bu tarz bir döngü kurup içine switchle seçimleri yerleştiricem...deneme amaçlı bu kodları yazdım,ancak sorun şu; program çalışıyor,parola yanlışsa aynen sormaya devam,parola doğruysa döngüden çıkılıyor ama ben istiyorumki parolayı bilmiyosamda -1 yazıp döngüden çıkabileyim. eofun değeri -1 diye biliyorum,nerde yanlış yapıyorum?
-
edit: çok yanlış anlamışım
-
wasd bunu yazdı:
-----------------------------
#include
#include
using namespace std;
int main()
{
int i=0,parola=0;
setlocale(LC_ALL,"TURKISH");
do
{
cout<<"Parola: ";
cin>>parola;
if(parola==1991)
{
cout<<"doğru\n";
break;
}
else
cout<<"yanlış parola\n";
}
while((parola==getchar())!=EOF);
}------------------------------------
Yazokulu ödevi için ufak bi hasta kayıt programı yazıcam aslında, menü olucak kayıt ekle kayıt sil gibisinden. while ile bu tarz bir döngü kurup içine switchle seçimleri yerleştiricem...deneme amaçlı bu kodları yazdım,ancak sorun şu; program çalışıyor,parola yanlışsa aynen sormaya devam,parola doğruysa döngüden çıkılıyor ama ben istiyorumki parolayı bilmiyosamda -1 yazıp döngüden çıkabileyim. eofun değeri -1 diye biliyorum,nerde yanlış yapıyorum?
-----------------------------tamam fakat while in içinde yalnışın var gibi.
demişsin ki parola == getchar() bu işlem TRUE veya FALSE döndürür veya 0 ya da 1.
Ayrıca getchar() bir tane karakter alır, yani 1991 yazılmışşsa 1 alır, halbuki parola nın değeri 1991 ve sen char ın integer değeri ile sayıyı karşılaştırıyorsun yani a basılınca char olarak sayı değeri 65 idi sanırım. İŞlem böyle olunca sen bir de != EOF yapıyorsun dönen true veya false sonuca :/
-
SpArK bunu yazdı:
-----------------------------
Yazokulu ödevi için ufak bi hasta kayıt programı yazıcam aslında, menü olucak kayıt ekle kayıt sil gibisinden. while ile bu tarz bir döngü kurup içine switchle seçimleri yerleştiricem...deneme amaçlı bu kodları yazdım,ancak sorun şu; program çalışıyor,parola yanlışsa aynen sormaya devam,parola doğruysa döngüden çıkılıyor ama ben istiyorumki parolayı bilmiyosamda -1 yazıp döngüden çıkabileyim. eofun değeri -1 diye biliyorum,nerde yanlış yapıyorum?
-----------------------------tamam fakat while in içinde yalnışın var gibi.
demişsin ki parola == getchar() bu işlem TRUE veya FALSE döndürür veya 0 ya da 1.
Ayrıca getchar() bir tane karakter alır, yani 1991 yazılmışşsa 1 alır, halbuki parola nın değeri 1991 ve sen char ın integer değeri ile sayıyı karşılaştırıyorsun yani a basılınca char olarak sayı değeri 65 idi sanırım. İŞlem böyle olunca sen bir de != EOF yapıyorsun dönen true veya false sonuca :/
-----------------------------Evet hocam parolayı string olarak al
-
#include<iostream>
#include<locale>
using namespace std;
int main()
{
int i=0,parola=0;
int validpassword;
validpassword = 1991;
do
{
cout<<"Parola: ";
cin>>parola;
if((parola==validpassword) ||(parola==-1))
{
cout<<"doğru\n";
break;
}
else
cout<<"yanlış parola\n";
}
while((parola!=validpassword));
}
-
Ya olay parola değil,
------------------
[1]Kayıt ekle
[2]Kayıt düzenle
[3]Kayıt bul
[4]Kayıt sil
[5]Çıkış
--------------------
yazdırıcam ekrana,girilen rakama göre switch devreye girip işlem yapıcak,benim istediğim ordaki çıkışı sağlamak. Bu deitel'ın kitabında
while((not=getchar())!=EOF) şeklinde yazılmış,ondan bu şekilde yazdım. Yani bu menü için sonsuz döngü tarzı bişey kurup girilen int değere göre döngüden çıkışı yaptırmam lazım. mesela konsola 5 değeri girilip entera basıldığında program kapansın istiyorum,nasıl yapabilirim?
-
wasd bunu yazdı:
-----------------------------
Ya olay parola değil,
------------------
[1]Kayıt ekle
[2]Kayıt düzenle
[3]Kayıt bul
[4]Kayıt sil
[5]Çıkış
--------------------
yazdırıcam ekrana,girilen rakama göre switch devreye girip işlem yapıcak,benim istediğim ordaki çıkışı sağlamak. Bu deitel'ın kitabında
while((not=getchar())!=EOF) şeklinde yazılmış,ondan bu şekilde yazdım. Yani bu menü için sonsuz döngü tarzı bişey kurup girilen int değere göre döngüden çıkışı yaptırmam lazım. mesela konsola 5 değeri girilip entera basıldığında program kapansın istiyorum,nasıl yapabilirim?
-----------------------------case 5:
cout<< "Program Kapandı.";
return 0;
case 5 i bu hale getirceksin hocam
-
---------------------
#include
#include
int main()
{
setlocale(LC_ALL,"TURKISH");
int giris=0,cikis=5;
while((giris!=cikis))
{
printf(" MENÜ\n----------------\n[1]Kayıt ekle\n[2]Kayıt düzenle\n[3]Kayıt sil\n[4]Kayıt bul\n[5]Çıkış\n");
scanf("%d",giris);
if(giris==cikis)
{
break;
}
else
printf("Yanlış giriş");
}
}------------------------
şu şekilde yazıyorum ama hata veriyo,bi türlü çözemedim gitti :/
-
wasd bunu yazdı:
-----------------------------
---------------------
#include
#include
int main()
{
setlocale(LC_ALL,"TURKISH");
int giris=0,cikis=5;
while((giris!=cikis))
{
printf(" MENÜ\n----------------\n[1]Kayıt ekle\n[2]Kayıt düzenle\n[3]Kayıt sil\n[4]Kayıt bul\n[5]Çıkış\n");
scanf("%d",&giris);
if((giris==cikis) || (giris==EOF))
{
break;
}
else
printf("Yanlış giriş");
}
}------------------------
şu şekilde yazıyorum ama hata veriyo,bi türlü çözemedim gitti :/
-----------------------------hocam mantık hatası var mı bakmadım ama scanf de giris den önce & koyman gerekiyor
-
manyaki bunu yazdı:
-----------------------------
hocam mantık hatası var mı bakmadım ama scanf de giris den önce & koyman gerekiyor
-----------------------------hay anasını satayım ya :/ çok sağol :) bi c bi c++ kafam pelte oldu herşey birbirine girdi uykusuzlukla birleşince,sağolasın
-
Yok hocam ne demek. Ama C i tamamen bitirmeden C++ a geçmeni önermem pek hocam ya. Zaten c yi hallettikten sonra c++ ı çok daha rahat halledersin, karışık gidersen çok girer birbirine.