PDA

Tam Sürümünü Görmek İçin : 0 error 0 warning ama output yanlış :(


i_rem
22/11/2007, 22:20
mrb ben (for kullanarak)klavyeden girdiğim 4 değerin önce aynısını sora 1 fazlasını gösteren bir program yazmak istiyorum ama çok alakasız bir çıktı werio..hata nerde bilmiyorum(sabrm kalmadı yani)...

#include<stdio.h>
int inc1(int[],int);
int inc2(int[],int);
int main()
{
int s[4];
printf("Please enter 4 integers for the array:\n");
scanf("%d",&s[4]);
printf("initial values in the array:%d\n",inc1(s,4));
printf("Values after increment function:%d\n",inc2(s,4));

return 0;
}
int inc1(int k[],int size)
{
int i;
for(i=0;i<size;i++)
printf("%d\n",k[i]);
return k[i];
}
int inc2(int k[],int size2)
{
int i;
for(i=0;i<size2;i++)
printf("%d\n",k[i]+1);
return k[i]+1;
}


acehreli
22/11/2007, 23:47
Dort tane sayi dOnUSturmek icin scanf'i ya 4 kere cagirmalisin, ya da tek cagrida dort dOnUsUm yapmasini soylemelisin.

Senin scanf'te bir tane %d oldugu icin yalnizca bir tane tamsayi okuyor. Ayrica okuttugun yer de sana ait degil: &s[4]. Cunku o, s'in besinci uyesinin uzerine yazmasini soyler. (Diziler 0'dan baslar ya...)

Ayni hata printf'te de var: bir tane %d, bir tane tamsayi demektir.

inc1 ve inc2 icinde dongu kullanarak dizi uyelerini tek teker kullandigin gibi, ornegin scanf'i soyle kullanmalisin:

scanf("%d", &s[i]);

Ali

necipakif
22/11/2007, 23:47
i_rem,

Kod yazma işi sabır ve emek işidir. Sürekli değişebilir ve geliştirilebilir. Her insanda yansıması değişik olur. Farklı düşüncelerde, farklı hâller alır. Bir nevî "platform bağımsızdır".
Bu bağlamda yukarıdaki kodu incelerseniz;
Bu kod hata vermez (doğrudur).
Ancak kullanımda bir yanlışlık var. Kodu kafanızda adım adım çalıştırnız. Sayıları "tek tek almaya başlayın bir döngü içinde" ! O zaman siz de oluşan hatayı bulucaksınızdır, Ayrıca sizin deyiminizle "çok alakasız bir çıktı werio" cümlesindeki alakasız yeri rahatlıkla görebileceksiniz.

İpucu:
1) Klavyeden girilen sayıların alınması ile ilgili birçok Türkçe ve yabancı dillerde yazılmış makale bulabilirsiniz.
2) Dizilerin kullanımı, dizi elemanlarına erişim gibi diziler hakkında bilgi edinmenizde de fayda olacaktır.

Selâmetle..

necipakif
22/11/2007, 23:50
acehreli,
Yazdıklarını görmeden yazdım mesajı, ben yazıyı hazırlarken siz hızlı davranmışsınız. F5 farkı diiyelim :)

Selâmetle..

acehreli
23/11/2007, 18:26
Evet, iki mesaj da ayni dakikada atilmis. :)

Ali