PDA

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?

cshell
21/12/2007, 00:53
<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...

cshell
21/12/2007, 01:35
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

wulgar
21/12/2007, 14:40
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 ?

wulgar
21/12/2007, 22:39
a =1, a=2 ... için ise neden a yı double tutuyorsun..

wulgar
21/12/2007, 22:42
matematiksel formulu soylersen iyi olur belki orda bi hata vardır..işlem onceliği falan

wulgar
21/12/2007, 22:44
double bi sum variable tut.
double sum = 0;
loopun içinde her seferinde toplam = sum+cevap;

sonucun sum dır.

wulgar
21/12/2007, 22:44
duzeltme:
sum+=cevap;

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: