C De Arg Passing Hatası [Yardım]
-
[[[Tek boyutlu bir A dizisinin elemanlari sirasiyla 10, 12, -9, -6, 7, -5, 9, -8, 16 olarak verilmektedir. Asagidaki islevleri yerine getirecek bir anafonksiyon ve ve fonksiyondan olusan bir C programi yaziniz.
Ana fonksiyonda, A dizisi tanimlanacak, ve dizi kupkoktoplami hesapla isimli fonksiyona gonderilecektir.
kupkoktoplamihesapla isimli fonksiyonda, dizinin pozitif elemanlarinin kupkoklerinin toplami hesaplanacaktir.Programı yazarken pointer kullanmanız gerekmektedir.]]]
şeklinde bişey istedin ben şöyle bişey yazdım:
#include<stdio.h>
#include<math.h>
float kupkoktoplamihesapla(int *A[],int *eleman);
int main(){
int A[9]={10,12,-9,-6,7,-5,9,-8,16},el;
el=9;
printf("Dizideki pozitif sayilarin kup koklerinin toplami %f dir.\n",kupkoktoplamihesapla(&A,&el));
return 0;
}
float kupkoktoplamihesapla (int *A[], int *eleman){
int i;
float sonuc=0;
for(i=0;i<*eleman;i++){
if(*A[i]>0){
sonuc=sonuc+pow(*A[i],1/3);
}
}
return sonuc;
}ama
7 [Warning] passing arg 1 of `kupkoktoplamihesapla' from incompatible pointer type
şeklinde bir hata veriyor işin içinden çıkamadım :(
-
Guteritter bunu yazdı:
-----------------------------
[[[Tek boyutlu bir A dizisinin elemanlari sirasiyla 10, 12, -9, -6, 7, -5, 9, -8, 16 olarak verilmektedir. Asagidaki islevleri yerine getirecek bir anafonksiyon ve ve fonksiyondan olusan bir C programi yaziniz.
Ana fonksiyonda, A dizisi tanimlanacak, ve dizi kupkoktoplami hesapla isimli fonksiyona gonderilecektir.
kupkoktoplamihesapla isimli fonksiyonda, dizinin pozitif elemanlarinin kupkoklerinin toplami hesaplanacaktir.Programı yazarken pointer kullanmanız gerekmektedir.]]]
şeklinde bişey istedin ben şöyle bişey yazdım:
#include
#include
float kupkoktoplamihesapla(int *A[],int *eleman);
int main(){
int A[9]={10,12,-9,-6,7,-5,9,-8,16},el;
el=9;
printf("Dizideki pozitif sayilarin kup koklerinin toplami %f dir.\n",kupkoktoplamihesapla(&A,&el));
return 0;
}
float kupkoktoplamihesapla (int *A[], int *eleman){
int i;
float sonuc=0;
for(i=0;i<*eleman;i++){
if(*A[i]>0){
sonuc=sonuc+pow(*A[i],1/3);
}
}
return sonuc;
}ama
7 [Warning] passing arg 1 of `kupkoktoplamihesapla' from incompatible pointer type
şeklinde bir hata veriyor işin içinden çıkamadım :(
-----------------------------Simdi pointerlar ve arrayler konusunu tekrar ele alman gerekli. Bastan calismani tavsiye ederim. Cunku bir arrayin sadece ismi poniterdir. Yani bir pointer alan fonksiyona A yi direk yollayabilirsin veyahut A ismi arrayde ilk elemana point eder yani A[0]'a ozaman da, &A[0] yapip yollarsin. int *A[] boyle bir parametre 2 katmanli pointer yani, int **a, gibi birsey olmus, cift boyutlu arrayleri yollamakta filan kullanilir genelde. Senin yapman gereken
float kupkoktoplamihesapla(int *A,int *eleman);
diye tanimlayip
int SomeArray[5];
int someEleman;
kupKokToplamiHesapla(SomeArray, &someEleman): olarak cagirmak.
-
dediğini yaptım abicim:
#include<stdio.h>
#include<math.h>
float kupkoktoplamihesapla(int *A,int *eleman);
int main(){
int A[9]={10,12,-9,-6,7,-5,9,-8,16},el;
el=9;
printf("Dizideki pozitif sayilarin kup koklerinin toplami %f dir.\n",kupkoktoplamihesapla(A,&el));
return 0;
}
float kupkoktoplamihesapla (int *A, int *eleman){
int i;
float sonuc=0;
for(i=0;i<*eleman;i++){
if(*A[i]>0){
sonuc=sonuc+pow(*A[i],1/3);
}
}
return sonuc;
}Ama bu seferde kupkoktoplamihesapla daki "if"li kısımda hata veriyor
15 invalid type argument of `unary *'
diyor :(
-
böyle dene
#include<stdio.h>
#include<math.h>
float kupkoktoplamihesapla(int *A,int *eleman);
int main(){
int A[9]={10,12,-9,-6,7,-5,9,-8,16},el;
el=9;
printf("Dizideki pozitif sayilarin kup koklerinin toplami %f dir.\n",kupkoktoplamihesapla(A,&el));
return 0;
}
float kupkoktoplamihesapla (int *A, int *eleman){
int i;
float sonuc=0;
for(i=0;i<*eleman;i++){
if(A[i]>0){
sonuc=sonuc+pow(A[i],1/3);
}
}
return sonuc;
} -
Evet şimdi oldu.
Gerçekten arrays ve pointer kısmını bir daha tekrar etmem gerek
Spark ve bilmece;
Teşekkür ettim
-
Derleyiciden derleniyo ama çıktıda printf dekini yazdırmıyor...
-
printf den sonra getchar(); ekle
-
ve pow o şekilde kullanılmıyo galiba 2.parametre int olmak zorunda yani hepsinde sayının 0. kuvvetini buluyo
-
#include<conio.h>
system("PAUSE");
kullanıyordum getchar() yerine ama system("PAUSE") yi yanlış yere yazmışım benim hatam
Thx to everyone;
-
nasıl küpkok alacaz?
-
pow(A[i],(float)1/3) şeklindeymiş :P