PDA

Tam Sürümünü Görmek İçin : C++ yardım bekliyorum =)


portalturks
02/04/2008, 23:14
:utangac:Merhaba arkadaşlar öyle eğlence olsun diye c++ la uğraşayım dedim. Kendime birşey buldum, amacım rastgele 50 farklı sayı üretip bunlar arasında tek ve çift olanları sınıflandırıp(dizi kullanarak) ekrana yazmak istedim. Aşağıdaki kodları yazdım, else komutu olan kısımda hata veriyor. Sanırım cok ufak bir hata yaptım :utangac:
LÜTFEN yardımcı olurmusunuz ?

#include <iostream.h>
#include <ctime>
int fonksiyon(int uretilen_sayi)
{
int n=0,dizim[n],diger_dizi[n];
for (int m=0;m<50;m++)
{
if(uretilen_sayi%2==0)
{
dizim[n]=uretilen_sayi;
n++;
}
}
else if (uretilen_sayi%2==1)
{
diger_dizi[n]=uretilen_sayi;
n++;
}
return dizim[n],diger_dizi[n];
}
//----------------------------------MAİN FONKSİYON BASLIYOR-------------------
int main()
{
int uretilen_sayi=0,n=0,dizim[n],diger_dizi[n];
srand((unsigned)time(0));
for (int A = 0; A < 50; A++)
{
uretilen_sayi =(1+rand()%1000);
cout<<uretilen_sayi<<endl;
}
cout<<"Cift sayilar="<<dizim[n]<<endl;
cout<<"Tek sayilar="<<diger_dizi[n]<<endl;
system ("Pause");
return 0;
}


BarisGURENC
02/04/2008, 23:29
tam olarak c++ blmıyorum

Ama biz asp de Else if

i birleşik olarak
ELSEIF olarak kullanıyoruz birleşik mi kullanman grekıyor acaba seninde ?

portalturks
02/04/2008, 23:42
yok yaw else if doğru :( ya verdiği hataya bakar mısın? kısacık...
http://img380.imageshack.us/img380/1016/adszbb7.jpg

quasimodo
02/04/2008, 23:50
C de veya C++ ta fonksiyon geriye sadece 1 adet deger dondurebilir.

acehreli
03/04/2008, 00:04
else'ten once bir if blogu olmasi gerekir; seninkinde yok. :) (Ipucu: o kapama parantezi for'u kapatiyor.)

Ondan onceki uyaridan kurtulmak icin de <iostream.h> yerine standart karsiligi olan <iostream>'i kullan.

Ali

portalturks
03/04/2008, 00:06
ups :( dogru...
Şimdi 2 fonksiyon yazdım. Program çalışıyor ama yanlış :D
O da dizileri yanlış kullandığımdan kaynaklanıyor sanırım biraz çaylağımda ...
#include <iostream.h>
#include <ctime>
//------------------------------1.FONKSİYON------------------------------
int fonksiyon(int uretilen_sayi)
{
int n=0,dizim[n],diger_dizi[n];
for (int m=0;m<50;m++)
{
if(uretilen_sayi%2==0)
{
dizim[n]=uretilen_sayi;
n++;
}
}
return dizim[n];
}
//-----------------------------------2. FONKSİYON--------------------------
int fonksiyon2(int uretilen_sayi)
{
int n=0,diger_dizi[n];
for (int z=0;z<50;z++)
{
if(uretilen_sayi%2==1)
{
diger_dizi[n]=uretilen_sayi;
n++;
}
}
return diger_dizi[n];
}
//----------------------------------MAİN FONKSİYON BASLIYOR-------------------
int main()
{
int uretilen_sayi=0,n=0,dizim[n],diger_dizi[n];
srand((unsigned)time(0));
for (int A = 0; A < 50; A++)
{
uretilen_sayi =(1+rand()%1000);
cout<<uretilen_sayi<<endl;
}
cout<<"Cift sayilar="<<fonksiyon<<endl;
cout<<"Tek sayilar="<<fonksiyon2<<endl;
system ("Pause");
return 0;
}

portalturks
03/04/2008, 00:18
1 sey soracağım, dizinin elemanları(tüm elemanları) yan yana ekrana nasıl yazdırılır ?? Döngü mü kullanmam lazım ?Burada döngü kullanamam çünkü kaç sayının tek veya çift çıkacağını(srand dan dolayı)dolaylı olarak döngünün sınırını bilemem.
Yardım edin lütfenn aklım karıştı :( :'(

acehreli
03/04/2008, 00:46
Bir kac oneri:

1) Fonksiyonlarin basladigini bildiren aciklama satirlarina hic gerek yok. Ornegin main'in orada basladigini zaten herkes biliyor.

2) Iki fonksiyonun adlarina bakarak ne yapmaya calistiklarini anlayabilmek cok yardimci olurdu. Benim hicbir fikrim yok.

3) Nesnelerin yasam surecleri konusunu dusunmen ve gerekiyorsa ogrenmen gerekiyor. Ornegin 'fonksiyon' icindeki 'dizim'in yasami 'fonksiyon'dan cikildigi an biter. Oyle olunca, orada bir dongu icinde neden 'dizim'in bir suru ogesinde degisiklik yapildigi anlamsiz oluyor.

Ali

acehreli
03/04/2008, 00:47
Ekrana yazdirma konusunda bir kac yontem izleyebilirsin:

1) Hic onemsemeden ayni satirda art arda yazdirirsin; ciktiklari ortamda satir bolunur

2) Her satira belirli sayida yazdirirsin; o sayiya gelince bir de '\n' yazdirir ve bir sonraki satira gecersin

Ali

Sabahi
04/04/2008, 04:02
@portalturks

int uretilen_sayi=0,n=0,dizim[n],diger_dizi[n]; gibi bir deklarasyonun normalde derleme hatasi vermesi gerekirdi ama gorunen o ki derleyiciye gore degisiyor. Ancak derleme hatasi
almamis olsaniz bile C++'ta dizilerin boyutu ancak sabit olabilir ve bu boyut calisma anindan once belirlenir. Yani int n=0, dizim[n]; dediginizde dizim'in boyutu 0. Ayni hata fonksiyon, ve fonksiyon2 icinde de tekrarlaniyor. Dogrusu yanlis bile olsa bu programin calisiyor olabilmesi ilginc.
dizim[50],diger_dizi[50]; gibi duzeltmeyi bir deneyin.

rookie_coder
05/04/2008, 21:47
Yazdığın kodlar syntax hatalarıyla dolu onları kendin halledersin umarım. Fonksiyonarının içinde ürettiğin dizileri olduğu gibi return ile döndüremezsin. Fonksiyonun dışında bir dizi tanımlayıp , onun referansını parametre olarak almanı öneririm.

HoLyZone
10/04/2008, 16:34
yok yaw else if doğru :( ya verdiği hataya bakar mısın? kısacık...
http://img380.imageshack.us/img380/1016/adszbb7.jpg


else ile if yan yana olmaz

if (xxxxx)
else

dizin budur .. tek satırda 2 dizin olmaz

acehreli
10/04/2008, 20:36
HoLyZone, if-else if-...-else zincirini ogrenmeni oneririm. Cok kullanilir.

Ali