Teşekkür ederim, işte dikkatsizlik:( 23 Mayıs 2010 20:13 tarihinde Mesut YILMAZ <[email protected]> yazdı:
> double a[2], b[2] yerine double a[3], b[3] olması gerekiyor sanırım. > > 2010/5/23 Engin Yüce <[email protected]> > >> Merhaba, bilgileri 2 tane array'de saklanmış 2 tane vektörün skaler >> çarpımını yapan ve sonucu ekranda yazan bir program yazdım. Fakat program >> çalışması sırasında garip bir hata alıyorum. Program şöyle: >> >> #include <stdio.h> >> #include <stdlib.h> >> #include <string.h> >> >> double getdouble(){ >> char buff[64]; >> while(1) { >> fgets(buff, sizeof(buff)+1, stdin); >> if (strcmp(buff, "0\n") == 0 || strcmp(buff, "0.\n") ==0 || strcmp(buff, >> "0.0\n") == 0) >> return(strtod("0", NULL)); >> if (strtod(buff, NULL)==0.0) //Bu strtod fonksiyonu eğer geçersiz bir şey >> girildiyse 0 değeri döndürüyor. Bu nedenle böyle bir hata yakalama >> mekanizması yaptım. >> printf("\aGeçersiz sayı girildi. Yeniden deneyiniz:"); >> else >> return(strtod(buff, NULL)); >> } >> } >> >> double dotproduct(double v1[], double v2[]){ >> int i; >> double result=0; >> for(i=0;i<=2;i++){ >> result+=v1[i]*v2[i]; >> printf("DEBUG:%f %f %f\n",v1[i], v2[i], result); >> } >> return result; >> } >> >> int main(){ >> int i; >> double a[2], b[2]; >> printf("İkinci vektörü giriniz:\n"); >> for(i=0;i<=2;i++){ >> printf("a%d:",i+1); >> a[i]=getdouble(); >> } >> printf("\nDEBUG:Birinci vektör: %f %f %f\n\n",a[0],a[1],a[2]); >> //1. array burada doğru, fakat 2. arrayin değerlerini aldıktan >> sonra 1. arrayin ilk değeri, 2. arrayin son değerine eşit oluyor, nedenini >> anlayamadım. >> printf("İkinci vektörü giriniz:\n"); >> for(i=0;i<=2;i++){ >> printf("b%d:",i+1); >> b[i]=getdouble(); >> } >> printf("\nDEBUG:Birinci vektör: %f %f %f\n",a[0],a[1],a[2]); >> printf("\nDEBUG:İkinci vektör: %f %f %f\n\n",b[0],b[1],b[2]); >> printf("skaler çarpım sonucu: %f", dotproduct(a, b)); >> return 0; >> } >> >> >> Buradaki hata arada commet ile de yazdığım gibi, 1. arrayin 0 1 ve 2. >> değerlerini alıyorum, Bakıyorum 1. array istediğim gibi dolmuş. Şimdi de >> aynı şekilde 2. arrayin 0 1 ve 2. değerini alıyorum. Bakıorm 2. array de >> istediğim gibi dolmuş. Fakat 2. arrayin değerlerini aldıktan sonra, bir >> bakıyorum 1. arrayin ilk değeri 2. arrayin son değerine eşit olmuş. Örneğin: >> >> a={a0, a1, a2} ve b={b0, b1, b2} olsun >> a0=1 a1=2 a2=3 giriyorum, >> a={1, 2, 3} görüyorum. >> Şimdi de b0=4 b1=5 b2=6 giriyorum, >> b={4, 5, 6} görüyorum fakat >> bir bakıyorum a={6, 2, 3} olmuş??? >> >> Sorun nerden kaynaklı çözemedim bir türlü. Yardımlarınız için >> teşekkürler.. >> >> -Engin Yüce >> >> _______________________________________________ >> Linux-programlama mailing list >> [email protected] >> https://liste.linux.org.tr/mailman/listinfo/linux-programlama >> Liste kurallari: http://liste.linux.org.tr/kurallar.php >> >> > > > -- > Mesut YILMAZ > > _______________________________________________ > Linux-programlama mailing list > [email protected] > https://liste.linux.org.tr/mailman/listinfo/linux-programlama > Liste kurallari: http://liste.linux.org.tr/kurallar.php > > -- | c0d3 = <cr4c...@st3r> |
_______________________________________________ Linux-programlama mailing list [email protected] https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
