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

Cevap