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

Cevap