C De Küçük Bir Programcık Daha
-
zar 1000 kere atıldığında sonuçların toplamının 1000 olması gerekiyo ama sonuçların toplamı 1000 den eksik çıkıyor yardımcı olursanız sevinirim
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int i,zar;
int dizi[6]={0};
srand(time(NULL));
for(i=0;i<1000;i++) {//zar 1000 kere atılıyor
zar=rand()%6+1;//zar için 1-6 arası rast gele değerler üretiliyor
++dizi[zar];}// zarın rastgele üretilen değeri bir arttırılıyor
for (i=1;i<=6;i++){
printf("%d\n",dizi[i]);//sonuçlar ekrana bastırılıyor
}
}
-
int dizi[6]={0};
6. indisi kullanamıyorsun
dizi boyutunu 7 yaptığında çözülecektir. Ayrıca dizinin tüm elemanları int dizi[6]={0} yaptığında 0 a atanmaz
döngü ile tüm indisleri 0 a atamalısın
-
AsDayGoesBy bunu yazdı:
-----------------------------Ayrıca dizinin tüm elemanları int dizi[6]={0} yaptığında 0 a atanmaz
döngü ile tüm indisleri 0 a atamalısın
-----------------------------Atanır hocam, çok kullanılan bir yöntemdir. Aslında direkt bir kural değil biraz dolaylı bir kullanım. Asıl kural şu, bir diziye int dizi[6] = {5, 6, 3} vb şeklinde atama yaparsan, atanmamış elemanların yerine 0 doldurulur. Doğal olarak int dizi[6] = {0} dersen de, ilk elemana 0, diğer 5 elemana da yine 0 atanır.
-
Evet şu anda hepsi 0 a atanıyor ancak ={0} olduğundan değil. Sadece 0. indise 0 atıyor, diğer elemanlarada default olarak 0 atıyor. ={1} yapsa hepsi 1 olmayacağını söyledim.
-
AsDayGoesBy bunu yazdı:
-----------------------------int dizi[6]={0};
6. indisi kullanamıyorsun
dizi boyutunu 7 yaptığında çözülecektir. Ayrıca dizinin tüm elemanları int dizi[6]={0} yaptığında 0 a atanmaz
döngü ile tüm indisleri 0 a atamalısın
-----------------------------anladım hocam çok teşekkürler .
-
yeni konu açmıyım dedim aşagıdaki yazılmış olan kodda nerde hata yapıyorum aydınlatınız beni lütfen
//dizide tanımlanmış olan 4*4 lük matrisi saat yönünde 90 derece çeviren kod
#include<stdio.h>
void derece (int *[4]);
int main( void )
{
int tablo[4][4] = {
{4, 3, 2, 1},
{1, 2, 3, 4},
{5, 6, 7, 8},
{2, 5, 7, 9}};
derece(tablo);
return 0;
}
void derece (int *x[4]){
int i,y;
for(i=0;i<4;i++){
for (y=3;y<=0;y--){
printf("%d",x[y][i]);
}
printf("\n");
}
}
edit:fonksiyonu tanımlarken pointer dizisi deilde normal 2 boyutlu bir dizi tanımlayarak sorunsuz bi şekilde çalıştırıyorum ama böle yazınca kodu ekrana hiç bişey basmıyo hatada vermiyo ayrıca -
"y<=0" değil >=0
void derece (int *[4]); yerine void derece (int *[4][4]);
olmalı.
-
AsDayGoesBy bunu yazdı:
-----------------------------"y=0
void derece (int *[4]); yerine void derece (int *[4][4]);
olmalı.
-----------------------------hocam düzenledim tekrardan ama ekrana görüntü basmıyo gene hata da vermiyo ayrıca
-
AsDayGoesBy bunu yazdı:
-----------------------------void derece (int *[4]); yerine void derece (int *[4][4]);
olmalı.
-----------------------------
O iki boyutlu dizinin türü int (*)[4] dir. senin verdiğin örnekteki tür ise int* (*)[4].
@frt , prototipi "void derece (int (*)[4]);" yap, fonksiyonu da "void derece (int (*x)[4])"
-
Tugberk bunu yazdı:
-----------------------------AsDayGoesBy bunu yazdı:
-----------------------------void derece (int *[4]); yerine void derece (int *[4][4]);
olmalı.
-----------------------------
O iki boyutlu dizinin türü int (*)[4] dir. senin verdiğin örnekteki tür ise int* (*)[4].
@frt , prototipi "void derece (int (*)[4]);" yap, fonksiyonu da "void derece (int (*x)[4])"
-----------------------------hocam benim derleyicidemi bi sıkıntı var acaba çıktı olarak sonucu ekrana basmıyo hata da vermiyo ama siyah ekran çıkıyo sonucun kaplıyacağı yer kadarda boş alan bırıkıllıyo ama bişey yazmıo bu arada derleyici olarak codeblocks kullanıyorum
-
Derleyicide sorun olduğunu sanmam. söylenenlerden birini yapmamışsındır. bende sıkıntısız çalıştı.
#include<stdio.h> void derece (int (*)[4]); int main( void ) { int tablo[4][4] = { {4, 3, 2, 1}, {1, 2, 3, 4}, {5, 6, 7, 8}, {2, 5, 7, 9}}; derece(tablo); return 0; } void derece (int (*x)[4]) { int i,y; for(i=0;i<4;i++) { for (y=3;y>=0;y--) { printf("%d\t",x[y][i]); } printf("\n"); } }