Soru & Cevap

arkadaşlar c++ da yazılmış program acil yardım !!!!

15.05.2016 - 12:17

arkadaşlar programı aşşağıda paylaşıyorum 

burada çözemediğim ''ay'' döngüsünün içinde ''int& b'' yazıyo. buradaki &'in anlamı ne 

aynı şekilde yildiz döngüsündede var

ve son olarak for (      ; k<7 ;  k+=2, n--, r++ )  buradaki her noktalı virül arasının anlamı nedir??

Şimdiden Teşekkürler...

#include <conio.h>
#include <iostream>
using namespace std;
int  ay ( int a, int& b );
double  yildiz ( double mak[ ], double y, double& x );

int i=2, j=1;

int main ( )
{
    int k=3, n=5, r=0, h=0;
    double mak[ ] = { 5,  3,   4,  0,  1,  4 },  y=3,  x=3;
    for (      ; k<7 ;  k+=2, n--, r++ )
    { 
        if (k == 5)
        {   h = yildiz ( mak, y, x );  }
        else
        {   cout<<"k "<<k<<" --h "<<h<<endl<<endl; }
        if ( r > 1 ) break;
        if ( mak[k–2] > mak[n] )
        {   h = mak[k–2] – 2 * mak[n];  cout<<" ++++ "<<h<<endl; }
        else if ( mak[k] > mak[n] )
        {   mak[k] = 2*mak[i]; cout<<"mak= "<<mak[k];  }
        if ( k < n–1 ) continue ;
        cout << "\n**** "<<x<<endl<<endl ;
        h = ay ( k, n );  
          cout<<"\nn h y x "<<n<<"  "<<h<<"  "<<y<<"  "<<x;
    }
    getch( ); return 0;
}

int ay ( int y,  int& x )
{   x += y;
     cout<<"ay = "<<j<<"  "<<x;
     return y;
}
double yildiz ( double mak[],  double y,  double& x )
{   int k(2);   
     j=2;      mak[j] *= 2;      x += k;      y *= k;
     cout<<"yildiz= "<<j<<" "<<mak[j]<<" "<<x<<" "<<y<<endl;
     return y;
}

 

110 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user programmer.kanguru
programmer.kanguru
15.05.2016 - 01:52

Selam;

Öncelikle fonksiyonların parametrelerinde kullanılan & (ampersand diye okunur), argümanların fonksiyona referans olarak atanmasını sağlar. Yani int foo(int a, int& b) dediğimiz zaman a parametresine geçirilen int argümanı değer olarak geçirilir, b parametresine geçirilen argüman referans olarak geçirilir. Diğer bir ifadeyle a parametresine geçirilen argüman a'ya kopyalanır, argümanın kendisi geçmez ama b parametresine geçirilen argüman kopyalanmaz, direk olarak kendisini kasteder, bir nevi b parametresi argüman için bir takma isimdir diyebiliriz.

void foo(int a, int& b)
{
  a += 5;
  b += 5;
}

int x = 0, y = 0;
foo(x, y);

cout << x << endl << y << endl; // Çıktı: 0 \n 5
// x değişmedi ama y değişti.

Diğer sorunda ise for kullanımı şu şekildedir: for (İstenirse değişkenlerin ilk değerleri burada verilebilir; Burada koşul yer alır; Burada ise değişkenlerin değerleri değiştirilebilir) {...}

for (int i = 0 /*İlk değer verildi*/; i < 10 /*Koşul*/; i++ /*Değişken 1 artırılıyor*/) {...}

int i = 0;
for ( ; i < 10; i++) { } // İlk değer kısmı boş bırakılabilir.
for (i = 0; ; i++) { } // Koşul kısmının boş bırakılması sonsuz döngüye sokar.
for (i = 0; i < 10; ) { } // Değişken üzerinde oynama yapılmayabilir. Eğer süslü parantezlerin de içinde i++, i+=1 vs. gibi bir ifade olmazsa bu da sonsuz döngüye girer.
// Koşul kısmı hariç birden fazla değer ataması yapılmak istendiğinde veya değişken artırılıp eksiltilmek istendiğinde virgül ile ayrılır.