PDA

Tam Sürümünü Görmek İçin : niye niye niye???


cotiran
08/08/2005, 10:07
merhaba arkadaşlar foruma yeni üye oldum ve iyikide olmuşum bi kaç bişe öğrendim,öğrenmeyede devam ediyorum tabi...
benim sorunum şu ki ben deitel&deitel ın c ve c++ kitabını aldım kitapla birlikte verilen cd de borland c++ vardı ama cd nin içindeki program trial sürümdü ve kurmak için baya bişeler istiyodu yapamadım yani,ama bu engel olamazdı herhalde :) bende dev c++ ı indirdim çok güsel işimi gördü işte kitapta algoritmalara geldim ki sorunlar başlamaya başladı....

----------------------------------------------------------------

/* sayıcı kontrollü döngü ile
sınıf ortalamasının bulunması*/

#include<stdio.h>

int main()
{
int sayici,not,toplam,ortalama;

toplam=0;
sayici=1;

while(sayici<=10){
printf("Notu girin: ");
scanf("%d",&not);
toplam=toplam+not;
sayici=sayici+1;
}

ortalama=toplam/10;
printf("Sinif ortalamasi %d dir.\n",ortalama);

return 0;
}

----------------------------------------------------------------

yazdığım kod bu kitaptada aynen böyle ama compile ettiğimde;

----------------------------------------------------------------

C:\Documents and Settings\Kalabia\c\sınıfortalama.cpp In function `int main()':

8 C:\Documents and Settings\Kalabia\c\sınıfortalama.cpp expected unqualified-id before '!' token

8 C:\Documents and Settings\Kalabia\c\sınıfortalama.cpp expected `,' or `;' before '!' token

10 C:\Documents and Settings\Kalabia\c\sınıfortalama.cpp `toplam' undeclared (first use this function)

(Each undeclared identifier is reported only once for each function it appears in.)

15 C:\Documents and Settings\Kalabia\c\sınıfortalama.cpp expected primary-expression before ')' token

16 C:\Documents and Settings\Kalabia\c\sınıfortalama.cpp expected primary-expression before ';' token

20 C:\Documents and Settings\Kalabia\c\sınıfortalama.cpp `ortalama' undeclared (first use this function)

----------------------------------------------------------------

bu hataları veriyo acaba hatam nerde kaç gündür kafayı yicem bu problemi çözmeden de geçmek istemiorum...yardımlarınız için şimdiden teşekkürler...


karamemed
08/08/2005, 10:33
Hatalar bu koda ait değil. Büyük ihtimalle projede başka kodlar da yazmışsındır ve bu hatalar ona aittir. Hatalar sınıfortalama.cpp için verilmiş. Yukarıda yazdığın kodun bu dosyada olduğuna emin misin?

cotiran
08/08/2005, 10:40
ewet ben dosyayı sınıfortalama olarak kaydettim ondan bide garip bişe oldu şimdi ben dev c++ 4 ü yüklediim zaman bana upgrade istedi işte 4.9....gibi beta bi sürüm yüklemişti az önce dev c++ 4 te yazdım kodları ve sorunsuz çalıştı,hayretler içinde kaldım :) ama bi yandanda sevindim tabi acaba diorum program beta olduu için çalışmamış olabilirmi???

shurzan
08/08/2005, 12:39
Sevgili arkadaşım öncelikle şunu belirtmeliyim yukarıda vermiş olduğun koda ait kaydedilen dosya .c uzantılı olmalıyıdı .cpp değil ayrıca şunuda yapmalısın Derleyici klasörü içerisinde bir çalışma alanı aç bir klasör yarat ve dosyalarını burada derle çünkü standart başlık dosyalarını program dizinide include klasöründen ekler ama sen
"C:\Documents and Settings\Kalabia\c\" altında derliyorsun ki bu durumda "std.h" başlık dosyasını bulamayacak ve hata verecekdir bu yüzden derleyememiş ve hata almışsın kodu ben aynı derleyicide şimdi denedim ve hatasız derledi.
1.Dediğim gibi kayddederken uzantısını .c olarak kaydet çünkü bu c kodu
2.Program dizininde bir klasöre kaydet ve derle bu sorunlar çıkmayacakdır.
Başarılar...

cotiran
08/08/2005, 16:36
shurzan çok teşekkür ederim yardımlarınız için teşekkürler sorunumu hallettim...

shurzan
08/08/2005, 18:36
Rica :)
Sorununu halletiğine sevindim

acehreli
10/08/2005, 16:53
Shurzan, yine de .cpp olarak da derlenebilmesi gerekir ama degil mi? Cunku icinde C++'in desteklemedigi bir olanak kullanilmadigini goremiyorum.

cotiran, sorunun buyuk olasilikla "not" gibi talihsiz bir ad secmis olmandan kaynaklaniyor. Bunu hata mesajindaki "! token" sozunden anladim.

!, ||, && gibi mantiksal isleclerin Ingilizce okunuslari olan "not", "or" ve "and" gibi karsiliklari da vardir. Bu karsiliklarin ne zaman tanimli olduklarini su anda hatirlamiyorum ama oyle iste :) "not" yerine baska bir ad kullandiginda sorun ortadan kalkacaktir.

Ali

mr1yh1
10/08/2005, 20:03
+1
bir anlam verememiştim ,bu not u çok iyi yakalamışsın .

ve devC++ dosya uzantısına göre davranmaz,
proje açılırken , C ya da C++ projesi olarak seçilir.
C++ projelerine C uzantılı dosya eklenebilir..

shurzan
11/08/2005, 13:24
sorunun buyuk olasilikla "not" gibi talihsiz bir ad secmis olmandan kaynaklaniyor. Bunu hata mesajindaki "! token" sozunden anladim...Sana katılıyorum hocam!
Ancak program sonuçda not adında değişkene sahip olsada sorunsuz derleniyor.
Tabiki biliyorum kod içerisinde c++ sözdizimine ait kod içermiyor derleyici uzantısı .c de olsa .cpp da olsa derleyecekdir ama kullandığı öncü dosya .h uazantılı <stdin.h> sorunun kaynağı cpp uzantılı olmasından değil olabilecğindendir diye belirttim yani ilaveten.+1
bir anlam verememiştim ,bu not u çok iyi yakalamışsın .

ve devC++ dosya uzantısına göre davranmaz,
proje açılırken , C ya da C++ projesi olarak seçilir.
C++ projelerine C uzantılı dosya eklenebilir..
Bu da doğru ancak dev cpp ile hiç proje açılmadan tek dosya olarakda derlenebiliyor.
Bu kodda uzantısı cpp olmasıyla derleyici farklı davranış göstermez ama tersi durumda bir C++ kodunu uzantısını .c olarak değiştirip derlemeye çalıştığında derlemeycekdir.
Ve buradaki sorunun tabi ki üzerinde duruduğumuz konular olmadığına inanıyorum sorun, proje ve ya tek dosya olsun dev cpp dizininde olmamasından yani size katılıyorum uzantısının .c değiştirilmesiyle sorunu düzeltmedi derlenecek dosya derleyici dizininde derlenmesiyle sorun çözüldü.
Saygılar...

acehreli
11/08/2005, 18:31
Sonunda usenmeyip baktim: 'not' gibi adlari kendimiz kullanamiyoruz. C++ standardi o adlari ayirmis. Su sayfada bu adlarin bir listesi var:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndeepc/html/deep04202000.asp

O sayfada da soylendigi gibi, Visual C++ bu konuyu desteklemiyor ve 'not' gibi adlari programlarimizda kullanmamiza izin veriyor. Standart disi bir davranis... Borland'in da en azindan bes yil once bunlari desteklemedigini gordum.

gcc hangi dilde derleyecegini -x secenegi ile alabilir. Bu sayede, uzantisina bakmaksizin her dosyayi gcc'nin destekledigi her dilde derleyebiliriz. Dev-C++'in arka planda gcc'yi kullandigini bildigim icin de baktim ve bunu destekedigini gordum:

Project Menusu | Project Options | Files

Orada dosyayi secip sagdaki seceneklerden 'Compile file as C++' kutucugun kullanabiliyoruz. Hatta 'Override build command' secenegi ile butun komut satiri seceneklerini bile belirleyebiliyoruz. Guzel :)

Ali