Tam Sürümünü Görmek İçin : c++ hakkında yardım(döngü)
portalturks
20/12/2007, 23:03
Arkadaşlar...
Ödevim.
altsınır Sigma üstsınır var ve fonksiyon ((a*a)/7+(5*a)+7)/(3*a)+4 ;
İşte program bunu hesaplicak, alt ve üst sınırlar için klavyeden giriş alınacak. Ben yapmaya çalıştım ama hata veriyor derleyici :mad: (dev c++ kullanıyorum)
Kodlarım.
#include <iostream>
using namespace std ;
int main ()
{
string a ;
double cevap , u ;
cout<<"Lutfen ust ve alt siniri belirleyiniz"<<endl;
cout<<"Lutfen altsiniri giriniz"<<endl;
cin>>a ;
cout<<"Lutfen ustsiniri giriniz"<<endl;
cin>>u ;
a="a";
while (a!=u)
{
a=a+1 ;
cevap=((a*a)/7+(5*a)+7)/(3*a)+4 ;
}
cout<<cevap<<endl;
system ("PAUSE");
return 0 ;
}
Lütfen yapmak istediğimin cevabını yazmayın..
Balıgı tutmayın , bana balık tutmayı öğretin...
quasimodo
21/12/2007, 00:09
[C O D E] Oncelikle yazdigin kodlari bu sekile etikete alirsan
daha iyi olur. Aralarda bosluk olmadan! [/C O D E]
Programinda alt sinirdan ust sinira kadar bir dongu
yapmissin ama a != u gibi bir karsilastirma yapamazsin.
Cunku biri string turunde digeri double. Ikisinide ayni tur
yapmalisin.
portalturks
21/12/2007, 00:18
sanırım döngü kısımında da bir hata var :S
while (a!=u)
{
cevap=((a*a)/7+(5*a)+7)/(3*a)+4 ;
a=a+1 ;
BURASI
}
şimdi yukarıya göre, program napicak, girilen a değerine göre fonksiyonu işlicek, a yı1 arttıracak, sonra işlemi tekrar yapıcak a=u olunca durucak değilmi?
Ama amacıma göre , a yi 1 arttırıp önceki değerle toplamalı, yani sanırım, yukarıda BURASI diye gösterdiğim yere birşey eklemeliyim? :S
quasimodo
21/12/2007, 00:36
a = a + 1;
de zaten a yi bir arttirip onceki degerle (kendisiyle)
toplar. a ile u yu ayni tur yaptin mi?
<iostream.h> yapmayı dene :)
portalturks
21/12/2007, 00:54
eet ikisinide string yaptım.
yaw dostum, a=a+1 dedim ama :D
şimdi bide cevapları toplamam lazım misal a=1 için cevap, sonra a=2 için , sonra bunları topla şeklinde ..... :'( ,
şeymi yapcam acaba , cevap=cevap+NE çözemedim bi türlü :'(
#include <iostream>
using namespace std ;
int main ()
{
string a,u ;
long double cevap ;
cout<<"Lutfen ust ve alt siniri belirleyiniz"<<endl;
cout<<"Lutfen altsiniri giriniz"<<endl;
cin>>a ;
cout<<"Lutfen ustsiniri giriniz"<<endl;
cin>>u ;
a="a";
while (a!=u)
{
cevap=((a*a)/7+(5*a)+7)/(3*a)+4 ;
a=a+1 ;
BURASI
}
cout<<cevap<<endl;
system ("PAUSE");
return 0 ;
}
quasimodo
21/12/2007, 01:06
iostream.h diye bir baslik C++ yoktur. Belki uzun yillar once
vardi.
double a, ust_sinir;
while (a != ust_sinir) {
cevap += ((a * a) / 7 + (5 * a) + 7) / (3 * a) + 4;
++a; // a = a + 1; ile ayni sey
}
portalturks
21/12/2007, 01:32
çıldırcam ya , yanlış hesaplıyor :'(
nese şimdi yatıyım , yarın sağlam kafayla bidaha bakarım...
iostream.h diye bir baslik C++ yoktur. Belki uzun yillar once
vardi.
double a, ust_sinir;
while (a != ust_sinir) {
cevap += ((a * a) / 7 + (5 * a) + 7) / (3 * a) + 4;
++a; // a = a + 1; ile ayni sey
}
evt farkındaym fakat bazen DevC++ da öyle sorunlar çıktığı için hatırlatmak istedim
loop larda sayaçları double yapmak tehlikelidir.üstelik çıkma şartını a!= u gibi bişi yapmak daha tehlikelidir..bunun yerine <= veya >= kullan..
portalturks
21/12/2007, 21:58
peki double dışında ne yapıcam :( int olmaz. çünkü sayı mutlak virgüllü çıkıcak...
a<=u yaptım.ancak hala yanlıs hesaplıyo...
#include <iostream.h>
using namespace std ;
int main ()
{
double a , ust_sinir , cevap ;
cout<<"Lutfen ust ve alt siniri belirleyiniz"<<endl;
cout<<"Lutfen altsiniri giriniz"<<endl;
cin>>a ;
cout<<"Lutfen ustsiniri giriniz"<<endl;
cin>>ust_sinir ;
while (a<=ust_sinir)
{
cevap= ((a * a) / 7 + (5 * a) + 7) / (3 * a) + 4;
a++;
}
cout<<cevap<<endl;
system ("PAUSE");
return 0 ;
}
ya döngüde bi hata yokmu arkadaşlar,benim a=1 için , sonra a=2 için sonra a=3 ...... vs. için bulunan cevapları toplamam lazım. Bunu nasıl yapıcam
cevap=cevap+ gibi birşey mi eklemem lazım acaba ?
a =1, a=2 ... için ise neden a yı double tutuyorsun..
matematiksel formulu soylersen iyi olur belki orda bi hata vardır..işlem onceliği falan
double bi sum variable tut.
double sum = 0;
loopun içinde her seferinde toplam = sum+cevap;
sonucun sum dır.
portalturks
23/12/2007, 23:16
a =1, a=2 ... için ise neden a yı double tutuyorsun..
dostum , ben misal a=1 dedim... yani kullanıcı a=2.1 olarak ta atayabilir...
yanlız hala yapamadım ya... =(
sum+ kullanamam.sadece döngü ve if...
her a ve onun artan değerleri için , bulunan cevapları toplamam gerek.... :aglama:
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.