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

Cevap