Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
4171
Cevap
169489
Tıklama
3
Öne Çıkarma
Cevap: C/C++/C# Sorularınız Buraya. . .(GÜNCEL) (135. sayfa)
R
11 yıl
Yarbay

quote:

Orijinalden alıntı: LittleBigGame

hocam galiba 1byte in 8 bit e esit olmasindan dolayi benimde aklima cok takiliyor bu goruyorum ornek uygulamalarda genellik le 8.

http://answers.yahoo.com/question/index?qid=1006050807364

Yok hocam onunla bir alakası olduğunu sanmıyorum. Character vector içinde tutuyorum ben binary kodu. 1 char = 1 byte , 8 tane o "/00" karakteri olduğundan 8 byte ekstra geliyor.


Bu mesaja 2 cevap geldi.
E
11 yıl
Yarbay

#include<stdio.h>
int main( void )
{
int i = 0;
for( i; i < 12; i++ ) {
if( ( i++ + 1 ) == 5 )
printf( "%d\n",i );
else
if( i % 2 == 0 ) break;
else if( i % 3 == 0)
continue;
else
printf("%d\n", i );
}
return 0;
}


Burada döngü neden ekrana 1-5-7-11 basıyor anlayamadım,izah edebilir misiniz?



L
11 yıl
Yarbay

C++ için en azından


int* ptr;
int * ptr;
int *ptr;

bunlardan hangisi doğrudur? yani hiç biri derleme de hata vermiyor fakat yazım kuralları ve okunabilirlik açısından hangisi daha çok kullanılır?


Bu mesaja 2 cevap geldi.
-
11 yıl
Yüzbaşı

quote:

Orijinalden alıntı: GhilleintheMist

C++ için en azından


int* ptr;
int * ptr;
int *ptr;

bunlardan hangisi doğrudur? yani hiç biri derleme de hata vermiyor fakat yazım kuralları ve okunabilirlik açısından hangisi daha çok kullanılır?

Üçüde doğru. Ben int *ptr; olanı kullanıyorum.



R
11 yıl
Yarbay

quote:

Orijinalden alıntı: GhilleintheMist

C++ için en azından


int* ptr;
int * ptr;
int *ptr;

bunlardan hangisi doğrudur? yani hiç biri derleme de hata vermiyor fakat yazım kuralları ve okunabilirlik açısından hangisi daha çok kullanılır?

Üçü de doğru.

int* p1,p2; -> ikisi de pointer
int *p1,p2; -> sadece p1 pointer


Bu mesaja 1 cevap geldi.
4
11 yıl
Teğmen

quote:

Orijinalden alıntı: Thør
int* p1,p2; -> ikisi de pointer

İkisi de pointer değildir. tür bilgisi int dir, *p1 deklaratördür. * tür bilgisine dahil olmadığı için p2 int türdendir. p1 in türü int *'dır.


Bu mesaja 1 cevap geldi.
R
11 yıl
Yarbay

quote:

Orijinalden alıntı: 4kalan

quote:

Orijinalden alıntı: Thør
int* p1,p2; -> ikisi de pointer

İkisi de pointer değildir. tür bilgisi int dir, *p1 deklaratördür. * tür bilgisine dahil olmadığı için p2 int türdendir. p1 in türü int *'dır.

Yanlış hatırlamışım, iyi ki düzeltmişsin.


Bu mesaja 1 cevap geldi.
L
11 yıl
Yarbay

peki bir sorum daha var, her array bi pointer. yani
array[2] yerine *array+2 diyebiliriz. peki iki boyutlu yada diğer çok boyutlu diziler de nasıl oluyor onu anlamadım?


Bu mesaja 1 cevap geldi.
-
11 yıl
Yüzbaşı

quote:

Orijinalden alıntı: GhilleintheMist

peki bir sorum daha var, her array bi pointer. yani
array[2] yerine *array+2 diyebiliriz. peki iki boyutlu yada diğer çok boyutlu diziler de nasıl oluyor onu anlamadım?

*array + 2 dersen yanlış olur. Bu ilk elemana 2 ekler. Eğer ikinci indise ulaşmak istiyorsan parantez kullanmalısın. *(array + 2) bu şekilde olmalı.
2 Boyutlu diziler içinde aşağıdaki örnek işine yarar.
 
// Burada dizimiz şu şekilde:
// 10 12
// 14 16
// Yani 2x2 matris şeklinde

int arr[2][2] = {{10, 12}, {14, 16}};
int satir = 0, sutun = 1;
cout << *(*(arr + satir) + sutun) << endl;
cout << arr[satir][sutun] << endl;


Bu mesaja 1 cevap geldi.
B
11 yıl
Çavuş

Aşağıdaki değişken tanımlardan hangisi C dilinde hata verir ?
a)char w_w;
b)float a1b2c3;
c)int print;
d)int switch;
e)char x12345;


Bu mesaja 1 cevap geldi.
A
11 yıl
Binbaşı

c++
quote:

#include <iostream>
#include <conio.h>
using namespace std;

main(){


int i,j;
char a[][80]={"Pazar","Pazartesi","Sali"};

for(i=0;i<=a[ i ][ 0 ];i++){
cout << "\n";
for(j=0;j<=a[j];j++)
cout << a[j] << "\n";
}

getch();
return 0;

}



for(i=0;i<=a[ i ][ 0 ];i++){
cout << "\n";
for(j=0;j<=a[j];j++)

şu kısmı tam anlayamadım. i bir sayı, dizinin içindeki de harf. nasıl küçük eşit sağlayabiliyoruz? i<=a[0] hangi durumda sağlanıyor, a[0]ın tam sayı değeri mi var?

bir de j<=a[j] diyor. 2 boyutlu bir dizi değil mi, neden tek bölüm var? a[1] deseydi neyi belirtmiş olurdu


Bu mesaja 4 cevap geldi.
B
11 yıl
Çavuş

Aşağıdaki C programının çıktısı ne olur?
main()
{
int dizi[15]={3, 2, 8, -4, 6};
int i, s=0;
for(i=1;i<15;i++) {
if (dizi >= 0)
s ++;
}
printf("%d",s);
getche();
}


Bu mesaja 1 cevap geldi.
R
11 yıl
Yarbay

quote:

Orijinalden alıntı: Burak Khrmn

Aşağıdaki C programının çıktısı ne olur?
main()
{
int dizi[15]={3, 2, 8, -4, 6};
int i, s=0;
for(i=1;i<15;i++) {
if (dizi >= 0)
s ++;
}
printf("%d",s);
getche();
}

Arrayın tanımlamadığın değerleri 0 oluyordu galiba ona göre bakarsak s=13 oluyor

dizi[1] den başladığından ilk elemanı almıyoruz, toplamda sadece -4 artırmıyor.


Bu mesaja 1 cevap geldi.
B
11 yıl
Çavuş

quote:

Orijinalden alıntı: Thør

quote:

Orijinalden alıntı: Burak Khrmn

Aşağıdaki C programının çıktısı ne olur?
main()
{
int dizi[15]={3, 2, 8, -4, 6};
int i, s=0;
for(i=1;i<15;i++) {
if (dizi >= 0)
s ++;
}
printf("%d",s);
getche();
}

Arrayın tanımlamadığın değerleri 0 oluyordu galiba ona göre bakarsak s=13 oluyor

dizi[1] den başladığından ilk elemanı almıyoruz, toplamda sadece -4 artırmıyor.

aynen hocam cevap 13 ama biraz daha açıklayacı yazar mısnız ilk defa görüyorum da bu dersi pek anlayamadım o yüzden


Bu mesaja 1 cevap geldi.
R
11 yıl
Yarbay

quote:

Orijinalden alıntı: Burak Khrmn

quote:

Orijinalden alıntı: Thør

quote:

Orijinalden alıntı: Burak Khrmn

Aşağıdaki C programının çıktısı ne olur?
main()
{
int dizi[15]={3, 2, 8, -4, 6};
int i, s=0;
for(i=1;i<15;i++) {
if (dizi >= 0)
s ++;
}
printf("%d",s);
getche();
}

Arrayın tanımlamadığın değerleri 0 oluyordu galiba ona göre bakarsak s=13 oluyor

dizi[1] den başladığından ilk elemanı almıyoruz, toplamda sadece -4 artırmıyor.

aynen hocam cevap 13 ama biraz daha açıklayacı yazar mısnız ilk defa görüyorum da bu dersi pek anlayamadım o yüzden

dizi yaratmışsın ama sadece ilk beş elemanına değer vermişsin. Değer vermediğin elemanların değeri otomatik olarak 0 atanır.
dizi[0]=3
dizi[1]=2
dizi[2]=8
dizi[3]=-4
dizi[4]=6

dizi 0. indexten başlar.

for döngüsü de 1 ile 14 arasındaki sayılar arasında. Bu yüzden senin döngünün içinde 0. indexi görmüyorsun.
0 dan büyük veya eşit olan her değer için s yi 1 artırmakta.

getche diye bir şey var mı bilmiyorum da DevC++'da ekran çıktısını görmek için getch->get character kullanırdık.


Bu mesaja 1 cevap geldi.
B
11 yıl
Çavuş

quote:

Orijinalden alıntı: Thør

quote:

Orijinalden alıntı: Burak Khrmn

quote:

Orijinalden alıntı: Thør

quote:

Orijinalden alıntı: Burak Khrmn

Aşağıdaki C programının çıktısı ne olur?
main()
{
int dizi[15]={3, 2, 8, -4, 6};
int i, s=0;
for(i=1;i<15;i++) {
if (dizi >= 0)
s ++;
}
printf("%d",s);
getche();
}

Arrayın tanımlamadığın değerleri 0 oluyordu galiba ona göre bakarsak s=13 oluyor

dizi[1] den başladığından ilk elemanı almıyoruz, toplamda sadece -4 artırmıyor.

aynen hocam cevap 13 ama biraz daha açıklayacı yazar mısnız ilk defa görüyorum da bu dersi pek anlayamadım o yüzden

dizi yaratmışsın ama sadece ilk beş elemanına değer vermişsin. Değer vermediğin elemanların değeri otomatik olarak 0 atanır.
dizi[0]=3
dizi[1]=2
dizi[2]=8
dizi[3]=-4
dizi[4]=6

dizi 0. indexten başlar.

for döngüsü de 1 ile 14 arasındaki sayılar arasında. Bu yüzden senin döngünün içinde 0. indexi görmüyorsun.
0 dan büyük veya eşit olan her değer için s yi 1 artırmakta.

getche diye bir şey var mı bilmiyorum da DevC++'da ekran çıktısını görmek için getch->get character kullanırdık.

eyvallah hocam



4
11 yıl
Teğmen

quote:

Orijinalden alıntı: elektro_gadget
C' de stringler read-only değildir. "DonanimHaber" gibi bir stringin değiştirilemez olmasının sebebi derleyicinin bellekten kazanmak için stringi program koduna gömmesi. Bu stringi değiştirmeye çalışmak program kodunu değiştirmeye çalışmak anlamına gelir ve seg-fault yersiniz.

(Yıllar sonra gelen edit)
Hocam demin birşey okuyordum da, tartıştığımız konu aklıma geldi, yazmak istedim. Seg-fault korumalı modun bir mekanizması, C ile bir alakası yok. Benim açıklamaya çalıştığım dilin kurallarıydı ki, DOS korumalı mod u kullanmadığı için DOS da stringi değiştirmeye çalışmak undefined behaviour olur ve seg-fault yemezsiniz. Haksız mıyım?


Bu mesaja 1 cevap geldi.
L
11 yıl
Yarbay

Bu std::swap fonksiyonu nasil calisiyor? Yani ben swap fonksiyonu yazsam parametre olarak 2 pointer alip degerleri takas ederdim. Boylece degiskenler direk degisirdi. Ama bunda parametreler integer ama yine de degiskenler direk degisiyor. Nasil olutor bu?



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
G
11 yıl
Yarbay

quote:

Orijinalden alıntı: 4kalan

(Yıllar sonra gelen edit)
Hocam demin birşey okuyordum da, tartıştığımız konu aklıma geldi, yazmak istedim. Seg-fault korumalı modun bir mekanizması, C ile bir alakası yok. Benim açıklamaya çalıştığım dilin kurallarıydı ki, DOS korumalı mod u kullanmadığı için DOS da stringi değiştirmeye çalışmak undefined behaviour olur ve seg-fault yemezsiniz. Haksız mıyım?

Doğrudur teknik olarak bir engel yok. Fakat korumalı mod olmasa bile sistem uygulamayı kendisinden koruyacaktır. Öyle olmasa hatalı bir adresi gösteren bir işaretçi rahatlıkla programı bozar. İşletim sisteminin olmadığı 8 bitlik gömülü işlemcilerde bile programı koruyan mekanizmalar var. Tabi yine de emin değilim. Dos konusunda ahkam kesecek kadar dinozor değilim çok şükür.



G
11 yıl
Yarbay

quote:

Orijinalden alıntı: GhilleintheMist

Bu std::swap fonksiyonu nasil calisiyor? Yani ben swap fonksiyonu yazsam parametre olarak 2 pointer alip degerleri takas ederdim. Boylece degiskenler direk degisirdi. Ama bunda parametreler integer ama yine de degiskenler direk degisiyor. Nasil olutor bu?

C++ ta bir nesneye referans vermenin 2 yolu var. Birincisi senin dediğin C usülü işaretçi-adres olayı. İkincisi çoğu dilde olmayan direkt referans olayı. Bu yöntemde & operatörü ile bir referans tanımlanır ve ona atanan nesne gibi davranır. Yani aynı nesnenin 2. ismi olur.

int a = 0;
int &b = a;
b = 1;

a 1 oldu.

Link vereyim.http://www.learncpp.com/cpp-tutorial/611-references/





< Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 31 Ocak 2014; 8:39:39 >
Bu mesaja 1 cevap geldi.