For Döngüsünün İçinde Toplama Yaptıramıyorum (C)
-
for(b++;i>=1;i--)
{
a[i]=k;
c=pow(2,b);
u=u+(k*c);
}
printf("sayi: %d\a",u);serinin elemanlarını teker teker yazdırabiliyorum ama şu şekil bir işleme sokamıyorum. "u" sürekli 0 çıkıyor.
daha önce böyle bişey gelmemişti başıma. yaklaşık iki gündür uğraşıyorum bi el atıverin
-
tuncaxxz bunu yazdı:
-----------------------------for(b++;i>=1;i--)
{
a[1]=k;
c=pow(2,b);
u=u+(k*c);
}
printf("sayi: %d\a",u);-----------------------------
b++ demişsin b nin başlangıç değeri yok, , 1den büyük eşit olana kadar azalsın demişsin i ninde başlangıç değeri yok.
b yi i yi dışarda mı tanımladın naptın?a[1]=k demişsin, k nın değeri ne?
c=pow(2,b) demişsin b nin değeri belli değil ki pow(2,b) yi yapsın,
ardındanda u=u+(k*c) demişsin b den dolayı c ye adam gibi değer vermedi ki onu kullanıp u yu versin.ne yaptırmaya çalışıyon programa?
-
ikilik tabandaki sayıyı onluk tabana ceviriyor. mesela 111 şeklinde ikilik tabanda bi sayı girdiniz. program size bunu 7 olarak veriyor
ilk for döngüsünde basamaklarına ayırıyor sayıyı
a[1]=1
a[2]=1
a[3]=1
olarak. sonra ikinci for döngüsünde dönüşüm formülünü uyguluyor
u= (a[3]*2^0)+(a[2]*2^1)+(a[1]*2^2) = 7
olarak çıkarması lazım ikinci döngüyü ama sonucu 0 çıkarıyor.
kodların bütünü bu şekilde. mantık hatası nerde anlayamadım.
#include
#include
#include
int main()
{
const int q=2;
int k,n,x,y,i,b,a[10000];
double toplam,u,c;
printf("ikilik tabandan onluk tabana\ncevirmek istediginiz sayiyi giriniz:");
scanf("%d",&n);
x=n;
y=n;
i=0;
b=0;
for(b=i;x>=1;i++)
{
a[i+1]=x%10;
y=y/10;
x=y;
}
for(b++;i>=1;i--)
{
a[i]=k;
c=pow(2,b);
u=u+(k*c);
}
printf("sayi: %d\a",u);
getch();
return 0;
}
-
tuncaxxz bunu yazdı:
-----------------------------
ikilik tabandaki sayıyı onluk tabana ceviriyor. mesela 111 şeklinde ikilik tabanda bi sayı girdiniz. program size bunu 7 olarak veriyor
ilk for döngüsünde basamaklarına ayırıyor sayıyı
a[1]=1
a[2]=1
a[3]=1
olarak. sonra ikinci for döngüsünde dönüşüm formülünü uyguluyor
u= (a[3]*2^0)+(a[2]*2^1)+(a[1]*2^2) = 7
olarak çıkarması lazım ikinci döngüyü ama sonucu 0 çıkarıyor.
kodların bütünü bu şekilde. mantık hatası nerde anlayamadım.
#include
#include
#include
int main()
{
const int q=2;
int k,n,x,y,i,b,a[10000];
double toplam,u,c;
printf("ikilik tabandan onluk tabana\ncevirmek istediginiz sayiyi giriniz:");
scanf("%d",&n);
x=n;
y=n;
i=0;
b=0;
for(b=i;x>=1;i++)
{
a[i+1]=x%10;
y=y/10;
x=y;
}
for(b++;i>=1;i--)
{
a[i]=k;
c=pow(2,b);
u=u+(k*c);
}
printf("sayi: %d\a",u);
getch();
return 0;
}
-----------------------------zamanım olmadığından tam bakamadım ama program ilk for da i++ ile i nin değerini 1 in üzerine arttırıyosun ve dolayısıyla alttaki for a girmiyor yani ufak bi mantık hatası var oraya bi çözüm aramaya çalış istersen i yi 0 la mesela ilk for dan sonra
-
tuncaxx olum nerelerdesin sen :) özledim a.q
-
DJ_Alper bunu yazdı:
-----------------------------
tuncaxx olum nerelerdesin sen :) özledim a.q
-----------------------------uyumuştur artık:) adam 5 te yazmış en son :)))
-
DJ_Alper bunu yazdı:
-----------------------------tuncaxx olum nerelerdesin sen :) özledim a.q
-----------------------------
aynen amk. Alper seni de özledim lan.sevişek mi? -
buralardayım ben olm ama pek yazmıyorum. hatta hiç yazmıyorum.
-----------------
&efecan123&
panpa ilk for döngüsünde i belli bi sayıya ulaştıya mesela 3 oldu. çıkan bu i benim dizide bulunan eleman sayısını gösteriyo. i'yi tekrar sıfırlarsam kaç tane elemanla işlem yapacağını programa başka türlü anlatamam.
-
bi yardım edin ya kafaları yicem. 7 farklı yöntem denedim olmadı hiç biri hala 0 çıkıyo
-
Kaç = len(2tabanindasayi)
sonuç = 0
for üs = 0 to (Kaç - 1 )
sonuç = sonuç + (mid(2tabanindasayi,Kaç-1,Kaç)*(2^üs))
Kaç = Kaç - 1
next
msgbox(sonuç)
vb de böyle bişey olmalı services.tahribat.com da vb den c# a çeviri vardı ordan çevirip bi fikir sahibi olabilirsin :) telefondan anca bu kadar yardımcı olabiliyorum ;)