senko Mesaj tarihi: Ekim 15, 2010 Paylaş Mesaj tarihi: Ekim 15, 2010 #include <stdio.h> #include <stdlib.h> float *prefix_Averages(int [], int ); int main(void) { int array1[] = {10, 11, 12, 13, 14, 15, 16, 17}; int n = 0; int q = 0; float *pa; scanf("%d", &n); pa = prefix_Averages(array1, n); for(q=0; q<=n; q++) { printf("%fn", *(pa+q)); } } float *prefix_Averages(int x[], int z) { float A[z]; int sum = 0; int i = 0; for(i=0; i <= (z-1); i++) { sum = sum + x[i]; A[i] = sum/(i+1); } return A; } boyle bir kod var, istedigim A[] dizisini bastirabilmek ama olmuyor bi turlu, array dondururken yanlis bisiler yapiyorum Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Ceday Mesaj tarihi: Ekim 15, 2010 Paylaş Mesaj tarihi: Ekim 15, 2010 float* olması icin return &A[0] die yazman gerekio die hatırlıom. ya da fonksiyonunun signature'ını float[] sekline cevirip bi dene. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
senko Mesaj tarihi: Ekim 15, 2010 Konuyu açan Paylaş Mesaj tarihi: Ekim 15, 2010 ilk soyledigini denerimde float[] yapamam, fonksiyona giren array integer. int array1 aliyorum fonk icine. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Ekim 15, 2010 Paylaş Mesaj tarihi: Ekim 15, 2010 c tecrübem pek yok ama float A[z]; diye tanımladığın değişken lokal olduğu için fonksiyon sonrasında array'in bellekte ayırdığı yer temizleniyor olmasın? Böyle bir şey varsa float A[z] 'yi caller tarafında tanımlayabilirsin ya da alloc (ya da malloc vb tam hatırlamıyorum) ile kalıcı yer açabilirsin. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
senko Mesaj tarihi: Ekim 15, 2010 Konuyu açan Paylaş Mesaj tarihi: Ekim 15, 2010 mantıksız degil hakketen, belki o yüzdendir, gerci ilkini dogru bastırıyor sonra sacmalıyor malloc ile dinamik yer acmadan nasil statik hale getirebilirim peki? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Ekim 15, 2010 Paylaş Mesaj tarihi: Ekim 15, 2010 Fonksiyonu çağırmadan array boyunu biliyorsun zaten. float *pa; yerine yerine float pa[n] şeklinde tanımlayıp, pa'yı da argüman olarak fonksiyona verirsin. Fonksiyonun bir şey döndürmesine gerek kalmaz. In parameter hedesi. edik: Bazı compiler'lar hede[n] şeklinde dinamik array boyuna izin vermiyorlardı galiba. Öyle bir şey varsa malloc zorunlu olabilir belki. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Tcpip Mesaj tarihi: Ekim 15, 2010 Paylaş Mesaj tarihi: Ekim 15, 2010 fonksiyon bittiğinde o bellek silindiğinden o fonksiyon içinde yarattığın array de silinir. Zaten var olan bir array'i (referansını) pass edip değerlerini değiştirebilirsin. void deistirbeni(float * arr) { arr[0] = 1; arr[1] = 2; } void main() { float sonuc[2]; deistirbeni(&sonuc); printf("%d",sonuc[0]); } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Kojiroh Mesaj tarihi: Ekim 15, 2010 Paylaş Mesaj tarihi: Ekim 15, 2010 float A[z]; yerine float A* = (float*)calloc(z, sizeof(float)); dener misin sdf Edit: aceleyle yazdım tabi bilemiyorum diğer yerler doğru mu Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Deacon Mesaj tarihi: Ekim 15, 2010 Paylaş Mesaj tarihi: Ekim 15, 2010 kojiroh senin dediğin çok fena olur. memory leak mi deniyordu onlara ne deniyordu? array tanımlayınca otomatik siliniyor da o şekilde yer ayırırsan free etmen gerekir. senin yapacağın şey mirage'in söylediği gibi caller'da yer açıp, hesaplayan fonksiyona onun adresini pass etmek. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
senko Mesaj tarihi: Ekim 16, 2010 Konuyu açan Paylaş Mesaj tarihi: Ekim 16, 2010 hmm dediginiz gibi float pa[n] yapinca yemiyor gcc :) baska complierler izin verebilirde gcc ile uyumlu olmasi iyi olur yaptigim kodlarin. yoksa mirage nin dedigi gibi fonksiyona 2 tane array gonderecektim bi tanesini geri alcaktim ama yemedi. en saglami malloc ile fonksiyon icinde yer acmak olucak heralde. o zaman fonksiyondaki degerler silindikten sonra bile malloc ile acilan yerin sabit kalmasi lazim. bide oyle deniyim ben :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
senko Mesaj tarihi: Ekim 16, 2010 Konuyu açan Paylaş Mesaj tarihi: Ekim 16, 2010 malloc kullaninca sorunlar cozuldu ama dogru outputlari vermiyor kafayi yememek elde degil :D Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
LethE Mesaj tarihi: Ekim 16, 2010 Paylaş Mesaj tarihi: Ekim 16, 2010 son halini bi daha koysana, tcpip nin yazdığının yeterli olması lazım. A = sum/(i+1); kısmı duruyomu olduğu gibi? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
senko Mesaj tarihi: Ekim 16, 2010 Konuyu açan Paylaş Mesaj tarihi: Ekim 16, 2010 #include <stdio.h> #include <stdlib.h> float *prefix_Averages(int [], int ); int main(void) { int array1[] = {10, 11, 12, 13, 14, 15, 16, 17}; int n = 0; int q = 0; scanf("%d", &n); float *pa; pa = prefix_Averages(array1, n); for(q=0; q<=n; q++) { printf("%fn", *(pa+q)); } } float *prefix_Averages(int x[], int z) { float *ap; int eleman_sayisi; eleman_sayisi = z; ap = malloc(eleman_sayisi * sizeof(float)); int sum = 0; int i = 0; for(i=0; i <= (eleman_sayisi-1); i++) { sum = sum + x[i]; ap[i] = sum/(i+1); } return ap; } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
senko Mesaj tarihi: Ekim 16, 2010 Konuyu açan Paylaş Mesaj tarihi: Ekim 16, 2010 code tagi tam dogru gosteremiyor Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
senko Mesaj tarihi: Ekim 16, 2010 Konuyu açan Paylaş Mesaj tarihi: Ekim 16, 2010 Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Ekim 16, 2010 Paylaş Mesaj tarihi: Ekim 16, 2010 Sorun ne ki tam olarak? Sonuçta ne yanlış yani? İlk for döngüsünde fazladan bir iterasyon yapıyorsun gibi. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
senko Mesaj tarihi: Ekim 16, 2010 Konuyu açan Paylaş Mesaj tarihi: Ekim 16, 2010 derleyip calistirdiginda vermesi gereken degerleri vermiyor arrayin ilk elemanini 2kere basiyor mesela Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Larva Mesaj tarihi: Ekim 16, 2010 Paylaş Mesaj tarihi: Ekim 16, 2010 for(i=0; i <= (eleman_sayisi-1); i++) { sum = sum + x[i]; ap[i] = (float)sum/(i+1); } Geri kalanina bakmadim ama bunun duzeltmesi gerek 10.5 hesaplarken float a typecast etmeyince sonucu int olarak 10 yapiyo gene indexler de var tabi code tagi koseli parantezleri artik gormuyo galiba. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
senko Mesaj tarihi: Ekim 16, 2010 Konuyu açan Paylaş Mesaj tarihi: Ekim 16, 2010 coder adam boyle belli eder kendini :D evet float olmasi lazimdi dedigin gibi 50kere bakipta gorememem benim okuzlugum :d sak diye cozuldu problem bide ilk forda <= degil < olcak. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar