PDA

Tam Sürümünü Görmek İçin : #include <process.h>


ubuntu
19/03/2007, 22:15
Çalıştığım kitapta döngü içindeki if'lerde verdiği örnekte takıldım.
#include <process.h> kullanılmış ama bende hata veriyor. Verdiği hata şu;

error: process.h: No such file or directorySanırım bu kütüphane bende yok. Bunu nasıl ekleyebilirim? Ya da bunun yerine kullanabileceğim başka bir kütüphane? Ya da bunu kullanmasam olurmu?

NOt: Linux altında code::blocks kullanıyorum.


rset_
19/03/2007, 22:22
"process.g" yazıyor. yazım hatası olmasın!?

ubuntu
19/03/2007, 22:31
Pardon buraya yanlış yazdım h orası :)

ubuntu
19/03/2007, 22:36
Aynı hatayı getche() kullanmak için <conio.h> ile aldım. Daha önce sormuştum conio linux ta kullanılmıyor denmişti. Nasıl öğreneceğim bu işi ? Kİtap aldım kütüphanelerle uraşıyorum :mad:

acehreli
20/03/2007, 00:28
Eger kitaptaki ornekleri kullanabilmek icin yardim vermemislerse, ben bunu o kitabin bir sorunu olarak goruyorum. Eger Windows altinda calistigini soylemisler de sen Linux kullaniyorsan, bu tUr sorunlar normal...

<process.h>'den ne ogretiyorlar acaba? Ben olsam o satiri eklemeden denerdim... Belki de o program icin onemli degildir. (?)

Ali

Fobus
20/03/2007, 00:32
GNU C Kütüphanesi Başvuru Kılavuzu
http://www.belgeler.org/glibc/glibc.html

ubuntu
20/03/2007, 00:39
Evet windows altında çalıştıklarını söylemişler. Ama bende windows yok sadece linux var ve windows kullanmak hiçte işime gelmiyor :mad:

process.h ı döngü içindeki if'ler konusunu anlatırken verdiği örnekte kullanmış.


#include <process.h> //exit için


Birde conio sorunum var ve bu daha büyük bir sorun çünkü bundan sonra baya örnek vermiş conio.h ile başlayan.

acehreli
20/03/2007, 00:42
exit icin <process.h> eklemeye gerek yok. <stdlib.h>'nin yetmesi lazim. Dedigim gibi, <process.h>'yi bosvererek dene; bakalim bir sonraki hata mesaji neymis...

<conio.h>'yi de bosverebilirsin. Simdi C ogreniyorsun; platforma bagli bir kutuphaneyi ogrenmek o kadar onemli olmamali...

Ali

ubuntu
20/03/2007, 00:50
process.h olmadan denedim çalıştı fakat ufak bir sorun var. Asal sayı değilse programdan çıkması gerekiyor fakat process.h olmadığı için asal sayı olsada çıkıyor.


#include <iostream>
using namespace std;
int main()
{
unsigned long n, j;

cout<<"Enter a number: ";
cin>>n;
for(j=2; j<=n/2; j++)
if(n%j==0)
{
cout<<"It 's not prime; divisible by " <<j<<endl;
exit(0);
}
cout<<"It 's prime \n ";
return 0;
}


conio.h ı boşverelim ama örneklerde hep conio kullanılmış. Örnekleri denemeden birşey anlamıyorum ne yapacağım?

acehreli
20/03/2007, 00:55
Asal sayi oldugu zaman programdan "cikmiyor", program sonlaniyor zaten! :p

<conio.h>'yi getche icin kullanmislar oyle mi? Ne icin kullanmislar? Cogunun standart karsiliklari bulunabilir. <conio.h> satirini cikart, bak bakalim ne sorun oluyor...

Ali

ubuntu
20/03/2007, 00:58
getche() karakter okuması için kullanmış. Yani karakter girince enter a basmaya gerek kalmıyor.

ubuntu
20/03/2007, 01:03
Programı yazarsam daha iyi olur sanırım.


#include <iostream>
using namespace std;
#include <conio.h>
int main()
{
int chcount=0;
int wdcount=1;
char ch='a';

cout<<"Enter a phrase: ";
while(ch != '\r')
{
ch=getche();
if(ch==' ')
wdcount++;
else
chcount++;
}
cout<< "\nWords=" <<wdcount << endl
<< "Letters=" << (chcount-1) << endl;
return 0;
}

acehreli
20/03/2007, 01:26
Ben ona karsilik su degistirilmis programi oneriyorum. Aciklamalar kodun icinde...

#include <iostream>
using namespace std;
// [Ali] Cikarttim: #include <conio.h>

int main()
{
int chcount=0;
int wdcount=1;
char ch='a';

cout<<"Enter a phrase: ";

/*
[Ali] Her ortamda '\r' karakteri goremeyebiliriz. '\n'
her yerde calisir ama... Onun icin '\n' kullaniyorum.
*/
while(ch != '\n')
{
/*
[Ali] Yazar burada buyuk olasilikla bir hata
yapiyor: Yukarida cout'a yazdirdigi karakterlerin
cikisa yazdirilma garantisi yok ki... Programi
ilk calistirdigimda "Enter a phrase:" yazisi
cikmadigi halde program burayi calistirmaya
baslamisti bile.

Zaten bu yuzden cout gibi C++ akimlariyla stdin
gibi C akimlarinin karisik olarak kullanilmasi
onerilmez.

Yazar yukarida cout'a bir flush gondermedig
surece o yazdirdiklarinin cikisa gittiklerinde
emin olamaz:

cout << flush;
*/

/* [Ali] Cikarttim: ch=getche(); */

/*
[Ali] Ben ise, yukarida flush gondermedigim halde
bile burada cin kullanarak karakterleri
gorebiliyorum, cunku dogal olarak cout'a
baglanmis (std::tie) olan cin'i
kullaniyorum. cout ve cin'in birbirlerinden
haberleri vardir. Burada cin'den okumaya
calistigimiz an, cout'a yazilan karakterler
cikisa gonderilirler.
*/
ch = cin.get();

if(ch==' ')
wdcount++;
else
chcount++;
}
cout<< "\nWords=" <<wdcount << endl
<< "Letters=" << (chcount-1) << endl;
return 0;
}

Ali

ubuntu
20/03/2007, 01:45
Evet bu şekilde çalıştı teşekkür ederim. Ama sorunum daha büyük. Çünkü bundan sonra yine birçok yerde conio kullanmış. Değer atama deyimleri, kümelenmişif...else ifadeleri, if...else yapısı, karakter değişkenleri ile switch ifadesi vs.. hep conio ile örneklendirilmiş. Hepsini tek tek buraya yazıp cvp beklersem iki sayfalık konuyu bir haftada anca geçerim.(Anlayacağım meçhul tabi) Conio kullanmamın bir yolu yokmu acaba? Ya da getche kullanabilmem için başka bir başlık? Ya da getche yerine aynı işi gören birşey?

Verdiğin örnekte getche yerine başka birşey kullanmışsın. Bu sanırım bu program içindi. Başka programlarda getche için ne kullanacağım?

ch=cin.get();

cout<< flush;Ben bunların ne olduklarını bilmiyorum. Bunları kullanırsam program çalışır ama ben birşey anlamam ki :( Verdiği örneğe göre anlattığı için kodları değiştirmemen gerekiyor. Değiştirince anlatımı ile örnek birbirini tutmuyor kafam iyice karışıyor.

acehreli
20/03/2007, 02:01
cout << flush; kullanmadim. Onu simdilik bir kenara birak.

cin.get()'i getche() yerine kullandim. Bu programda calistiysa bundan sonrakilerde de calisir... :)

Ali

ubuntu
20/03/2007, 02:06
Pardon */ görmedim biraz karışık olmuş o bölüm :)

conio.h kullanmadan getche yerine cin.get kullanarak yaptın yani. Diğer örnekleri bu şekilde deniyeyim bakalım ne olacak.

ubuntu
20/03/2007, 02:20
Evet dediğin gibi yaptım başka bir örnekte sorun olmadan çalıştı.(sanırım)

Kitaptaki örnek;


#include <iostream>
using namespace std;
#include <conio.h>

int main()
{
char dir='a';
int x=10, y=10;

cout<< "Type Enter to quit\n";
while(dir!='\r')
{
cout<<"\nYour location is " << x << "," << y;
cout <<"\nPress direction key (n,s,e,w): ";
dir=getche();
if(dir=='n')
y--;
else
if(dir=='s')
y++;
else
if(dir=='e')
x++;
else
if(dir=='w')
x--;
}
return 0;
}Bu da benim değiştirdiğim;


#include <iostream>
using namespace std;
//#include <conio.h> kaldırıldı
int main()
{
char dir='a';
int x=10, y=10;

cout<< "Type Enter to quit\n";
while(dir!='\n') ' //'\r' yerine '\n' koyuldu
{
cout<<"\nYour location is " << x << "," << y;
cout <<"\nPress direction key (n,s,e,w): ";
dir=cin.get(); //getche() yerine cin.get() koyuldu
if(dir=='n')
y--;
else
if(dir=='s')
y++;
else
if(dir=='e')
x++;
else
if(dir=='w')
x--;
}
return 0;
}Bu örneği denedim sorun çıkmadı. Yardımın için çok teşekkür ederim. Beni büyük bir dertten kurtardın.