Arama butonu
Bu konudaki kullanıcılar: 2 misafir, 1 mobil kullanıcı
4171
Cevap
168074
Tıklama
3
Öne Çıkarma
Cevap: C/C++/C# Sorularınız Buraya. . .(GÜNCEL) (65. sayfa)
F
12 yıl
Er

#include <conio.h>
#include <string.h>
#include <stdio.h>

main()
{char cumle;
int b=0,i;
printf("cumleyi giriniz\n");
gets(cumle);
for(i=0;i<strlen(cumle);i++)
if(cumle=="A"||cumle=="a") b++;
printf("%u",b);
getch();
}

bu program niye çalışmıyor biri bana açıklayabilir mi?


Bu mesaja 1 cevap geldi.
F
12 yıl
Teğmen

random_shuffle fonksiyonu yerine daha basit ve ayni isi yapacak bisey var mi?



< Bu ileti mobil sürüm kullanılarak atıldı >

Z
12 yıl
Er

yeni başlayanllar için küçük program kodları ve kısa açıklammalar http://www.zeynelakcay.com


Bu mesaja 1 cevap geldi.
S
12 yıl
Yarbay

quote:

Orijinalden alıntı: zeynelak61

yeni başlayanllar için küçük program kodları ve kısa açıklammalar http://www.zeynelakcay.com

bence iyi olmuş, yeni mi burası ? daha da geliştirilebilirse çok iyi olur.


Bu mesaja 2 cevap geldi.
S
12 yıl
Binbaşı

quote:

Orijinalden alıntı: FutureEngineer

#include <conio.h>
#include <string.h>
#include <stdio.h>

main()
{char cumle;
int b=0,i;
printf("cumleyi giriniz\n");
gets(cumle);
for(i=0;i<strlen(cumle);i++)
if(cumle=="A"||cumle=="a") b++;
printf("%u",b);
getch();
}

bu program niye çalışmıyor biri bana açıklayabilir mi?

#include <conio.h>  
#include <string.h>
#include <stdio.h>

main()
{
char cumle[20]; //
int b=0,i;

printf("cumleyi giriniz\n");
gets(cumle);

for(i=0;i<strlen(cumle);i++)
{
if(cumle[i]=='A'||cumle[i]=='a') //
b++;
}

printf("%d",b);
getch();
}


Bu mesaja 1 cevap geldi.
F
12 yıl
Er

quote:

Orijinalden alıntı: strahd_von_zarovich

quote:

Orijinalden alıntı: FutureEngineer

#include <conio.h>
#include <string.h>
#include <stdio.h>

main()
{char cumle;
int b=0,i;
printf("cumleyi giriniz\n");
gets(cumle);
for(i=0;i<strlen(cumle);i++)
if(cumle=="A"||cumle=="a") b++;
printf("%u",b);
getch();
}

bu program niye çalışmıyor biri bana açıklayabilir mi?

#include <conio.h>  
#include <string.h>
#include <stdio.h>

main()
{
char cumle[20]; //
int b=0,i;

printf("cumleyi giriniz\n");
gets(cumle);

for(i=0;i<strlen(cumle);i++)
{
if(cumle[i]=='A'||cumle[i]=='a') //
b++;
}

printf("%d",b);
getch();
}


öncelikle teşekkürler.
char cumle yerine char *cumle yazsaydık nasıl olurdu peki.
pointerlar kafamı karıştırıyor ama hoca pointer kullanmamızı istiyor.



Z
12 yıl
Er

öncelikle teşekkürler, evet yeni yaklaşık bir iki aya yakın oluyor siteyi düzenleyeli fırsat buldukça yeni kodalar ve açıklamalar ekleyecegim...



Z
12 yıl
Er

quote:

Orijinalden alıntı: Seviyeli Yarbay

quote:

Orijinalden alıntı: zeynelak61

yeni başlayanllar için küçük program kodları ve kısa açıklammalar http://www.zeynelakcay.com

bence iyi olmuş, yeni mi burası ? daha da geliştirilebilirse çok iyi olur.

öncelikle teşekkürler, evet yeni yaklaşık bir iki aya yakın oluyor siteyi düzenleyeli fırsat buldukça yeni kodalar ve açıklamalar ekleyecegim...



S
12 yıl
Yarbay

quote:

Orijinalden alıntı: -Source-


quote:

Orijinalden alıntı: strahd_von_zarovich


arkadaşlar 3x3 matriste 1i boşluklu 8 sayı atamayı sormuştum biraz önce.
şimdi bi sey daha sormak istiyorum, o boşluğa ben değer girecegim eger saginda, solunda, yukarisinda, asagisinda varsa onla yer degistirecek.
soruyu yanlis anlayip satir sutun sirasina gore ayarlamisim ben yani 4e basinca 4.terim bosluktaysa o yer degistirsin yapmisim
yani olmasi gereken su :

1 5 6
4 8
2 7 3

eger burda 6ya basarsam şöyle olacak
1 5
4 8 6
2 7 3

boyle boyle ilerlesin istiyorum. nasil ilerleyebilirim ?

boşluğu buldurup sonra eger aradaki mesafe >1 degilse yer degistirsin demek istiyorum aslinda mantigi da az cok anliyor ama koda dokemiyorum karistiriyorum


düzeltme :

arkadaşlar epey yazdım ilerledim bi şekilde sağdan, soldan ve üstten alıyorum değeri fakat aşağıdaki rakamı almaya tıklayınca farklı bi şeyler yapıyor. neresi hatalı anlamadım yardımcı olur musunuz ?

kod :

#include <iostream> 
#include <algorithm>
#include <conio.h>
#include <ctime>
#include <cstdlib>
#include <stdlib.h>
using namespace std;

void yazdir(char dizi[][3])
{
int i, j;

for(i = 0; i < 3; ++i) {
for(j = 0; j < 3; ++j) {
char sayi = dizi[i][j];
if(sayi)
cout << sayi<<' ';

}
cout << endl;
}
}

int main()
{
char arr[3][3] = {' ', '1', '2','3', '4', '5', '6', '7', '8'};

srand(time(NULL));
random_shuffle((char *) arr, ((char *) arr) + 9);
int i=0;
yazdir(arr);


char temp;



int x,y;

char ch=getchar();



for(x=0;x<3;x++){
for(y=0;y<3;y++){

if( arr[x][y] ==' ' ){
if( ch == arr[x][y-1]){
temp = arr[x][y-1];
arr[x][y-1] = arr[x][y];
arr[x][y] = temp ;}

if( ch == arr[x][y+1]){
temp = arr[x][y+1];
arr[x][y+1] = arr[x][y];
arr[x][y] = temp ;}
if( ch == arr[x-1][y]){
temp = arr[x-1][y];
arr[x-1][y] = arr[x][y];
arr[x][y] = temp ;}
if (ch == arr[x+1][y]){
temp = arr[x+1][y];
arr[x][y+1] = arr[x][y];
arr[x][y] = temp ;}


}
}
}

system("cls");

yazdir(arr);

system("pause");
return 0;
}


not : evet biliyorum epey uzattım ama anca böyle yapabildim





< Bu mesaj bu kişi tarafından değiştirildi Seviyeli Yarbay -- 28 Şubat 2013; 22:34:51 >

< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
S
12 yıl
Binbaşı

quote:

Orijinalden alıntı: Seviyeli Yarbay

C de yazılmayacak hale gelinceye kadar C de devam edicem .

#include <stdio.h> 
#include <stdlib.h>
#include <time.h>

int main()
{

int dizi[9],asilDizi[3][3];
int sayac=0,kontrolcu=-1,sayac2=-1,i,j,degistirilecek,x1,y1,x2,y2,A,B,m,n;

srand(time(NULL));

dizi[0]=rand()%9;

while(sayac<8)
{
sayac++;

dizi[sayac]=rand()%9;

while(kontrolcu<sayac-1)
{
kontrolcu++;
if(dizi[kontrolcu]==dizi[sayac])
{
kontrolcu=-1;
dizi[sayac]=rand()%9;
}
}
kontrolcu=-1;
}
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
sayac2++;
asilDizi[i][j]=dizi[sayac2];

if(asilDizi[i][j]==0)
printf(" ");

else
printf("%d ",asilDizi[i][j]);
}
printf("\n");
}

while(1)
{

scanf("%d",&degistirilecek);

for(i=0;i<=2;i++) //soru isaretinin ve girilen sayinin kordinatlari bulunuyor
{
for(j=0;j<=2;j++)
{
if(asilDizi[i][j]==degistirilecek){
x1=i;
y1=j;
}

if(asilDizi[i][j]==0){
x2=i;
y2=j;
}
}
}
A=(((x1==x2+1)||(x1==x2-1))&&(y1==y2)); //1 birimlk uzaklıkta olup olmadığı kontrol ediliyor
B=(((y1==y2+1)||(y1==y2-1))&&(x1==x2));

if(A||B) //kordinatların uyumlulugu kontrol ediliyor
{
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
if(asilDizi[i][j]==degistirilecek){
asilDizi[i][j]=0;
m=i;
n=j;
i=3;
break;
}
}
}

for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
if(asilDizi[i][j]==0&&!(i==m&&j==n)){
asilDizi[i][j]=degistirilecek;
i=3;
break;
}
}
}
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
if(asilDizi[i][j]==0)
printf(" ");

else
printf("%d ",asilDizi[i][j]);
}
printf("\n");
}

}
}


system("PAUSE");
return 0;
}



E
12 yıl
Çavuş

Derleyici hata veriyor. Lütfen yardım edermisiniz?

 
#define N 5
#include<stdio.h>
#include<conio.h>
int bul( int [N] );
main()
{
int not[N] = { 25, 40, 80, 75, 96 };
int enk;
enk=bul(not);
getch();
return 0;
}
int bul(int not[5])
{
int i, ek;
ek=not[0];
for(i=1; i<=N; i++)
if(not[i]<ek)
ek=not[i];
return ek;
}


Bu mesaja 1 cevap geldi.
S
12 yıl
Binbaşı

quote:

Orijinalden alıntı: ebubekir.s

for(i=1; i<=N; i++) , dizinin not[5] diye bir adresi yok en son not[4] var . Bunu bir düzelt tekrar bakalım.


Bu mesaja 1 cevap geldi.
E
12 yıl
Çavuş

dediğini yaptım i<N şeklinde yaptım ama yine hata verdi. ben resim yükledim belki resimden daha iyi görünebilir hata.

< Resime gitmek için tıklayın >


Bu mesaja 1 cevap geldi.
S
12 yıl
Binbaşı

quote:

Orijinalden alıntı: ebubekir.s

dediğini yaptım i<N şeklinde yaptım ama yine hata verdi. ben resim yükledim belki resimden daha iyi görünebilir hata.

< Resime gitmek için tıklayın >

Resim açılmıyor.


Bu mesaja 1 cevap geldi.
E
12 yıl
Çavuş

E
12 yıl
Çavuş

G
12 yıl
Yüzbaşı

quote:

Orijinalden alıntı: ebubekir.s

Yada bu link dede var resim
http://a1303.hizliresim.com/17/1/kmmvr.gif

Kelime secimi yanlis. not yerine baska bir degisken adi kullanmak ile basla. notArr gibi. Sonra diger hatalara bir daha bakarsin. Hata not in reserve olmasi.

Edit: Baska hata yokmus...

#define N 5 
#include<stdio.h>

int bul(int [N]);

int main()
{
int notArr[N] = { 25, 40, 80, 75, 96 };
int enk;
enk=bul(notArr);
printf("Hop : %d\n",enk);
return 0;
}
int bul(int notArr[N])
{
int i, ek;
ek=notArr[0];
for(i=1; i<=N; i++)
if(notArr[i]<ek)
ek=notArr[i];
return ek;
}





< Bu mesaj bu kişi tarafından değiştirildi garui -- 1 Mart 2013; 17:56:48 >
Bu mesaja 1 cevap geldi.
E
12 yıl
Çavuş

Tamam şimdi oldu. İnsanın ingilizcesinin olmaması çok kötü birşey :) Çok teşekkürler.


Bu mesaja 1 cevap geldi.
V
12 yıl
Yüzbaşı

Aşağıda verdiğim kodlar normalde bir programın parçası. Ancak bu bölüm programı çok yavaşlatınca, ayırıp tek program yapıp sorunu anlamaya çalışıyorum. Ancak programı bu kadar yavaşlatan şeyin ne olduğunu bir türlü bulamadım. Program 200000 den daha uzun bir karakter dizisinde c ve g karakterlerini arıyor bulduğunda bunların yerini yerler değişkenine atıyor, c ve g karakterlerini de büyük yapıyor. Aslında son derece basit bir kod ama bana kafayı yedirecek. Eğer dizi değişkeni ile ilgili farklı bir işlem yaparsam (yazdırmak gibi) çalışma süresi değişiyor. Bazen 1 sn daha az sürede tamamlarken basit bir değişiklik ile 4-5 sn civarına çıkıyor. Bu konuda bir fikri olan varsa duymak isterim.

 

FILE *ds,*gr;
errno_t err;
err=fopen_s(&gr,"xxx.txt","rb+"); if(err){AfxMessageBox(_T("xxx.txt dosyasi acilamiyor."),0);return;}
err=fopen_s(&ds,"deneme.txt","w"); if(err){AfxMessageBox(_T("deneme.txt dosyasi acilamiyor."),0);return;}

char *dizi;
unsigned *yerler;
char c;
unsigned i,x,n=0;

clock_t t;

dizi=(char *)malloc(300000); if(!dizi){AfxMessageBox(_T("dizi"),0);return;}
yerler =(unsigned int *)malloc(120000); if(!yerler){AfxMessageBox(_T("yerler"),0);return;}

for(i=0;;i++){ if(c=getc(gr)==EOF)break; *(dizi+i)=getc(gr);}
*(dizi+i)=0;

t = clock();


for(i=0,n=0;i<strlen(dizi);i++)
if(*(dizi+i)=='c' && *(dizi+i+1)=='g')
{ *(yerler+n)=i; *(dizi+i)='C';*(dizi+i+1)='G'; i++; n++; }
// { *(yerler+n)=i; i++; n++; }

// for(i=0,n=0;i<strlen(dizi);i++)*(dizi+i)='C';

t = clock() - t;
fprintf(ds,"%d Gecen sure : %d clicks (%f saniye).\n",strlen(dizi),t,((float)t)/CLOCKS_PER_SEC);

// fprintf(ds,"\n\n%s\n\n",dizi);

free(dizi);free(yerler);
fclose(ds); fclose(gr);
return;


Bu mesaja 1 cevap geldi.
G
12 yıl
Yarbay

quote:

Orijinalden alıntı: vitex

Aşağıda verdiğim kodlar normalde bir programın parçası. Ancak bu bölüm programı çok yavaşlatınca, ayırıp tek program yapıp sorunu anlamaya çalışıyorum. Ancak programı bu kadar yavaşlatan şeyin ne olduğunu bir türlü bulamadım. Program 200000 den daha uzun bir karakter dizisinde c ve g karakterlerini arıyor bulduğunda bunların yerini yerler değişkenine atıyor, c ve g karakterlerini de büyük yapıyor. Aslında son derece basit bir kod ama bana kafayı yedirecek. Eğer dizi değişkeni ile ilgili farklı bir işlem yaparsam (yazdırmak gibi) çalışma süresi değişiyor. Bazen 1 sn daha az sürede tamamlarken basit bir değişiklik ile 4-5 sn civarına çıkıyor. Bu konuda bir fikri olan varsa duymak isterim.


Normal o kadar çıkması. Ama süreyi kısaltacak birkaç ipucu verebilirim.

Dizi boyutu 1-2 mb ı geçmediği sürece yerel olarak ayırmak. Bu, malloc ile alınmış olandan biraz daha hızlı çalışır. Yani;
dizi=(char *)malloc(300000); yerine
char dizi[300000];

Dosyayı açtıktan sonra büyükçe bir tampon bellek vermek.
FILE *gr = fopen(...);
char buffer[32 * 1024];
setvbuf(gr, buffer, _IOFBF, 32 * 1024);

Dosyayı byte byte okumak yerine tek seferde alıp diziye atmak.
fread((void *) dizi, 1, 300000, gr);

c ve g karakterlerini ayrı ayrı kontrol etmek yerine tek sefere indirmek. Yani if(*(dizi+i)=='c' && *(dizi+i+1)=='g') yerine
const short cg = 25447; // Bu sayının ilk byte ı 'c', ikinci byte ı 'g'.

if(*((short *) dizi + i) == cg)
...

Aklıma gelenler bunlar. Şimdi bunlar içinde süre alacak olan sadece cg kontrolü. Ortalama 150000 karşılaştırma yapıyor. Eğer diziyi dosya yapısını bozmadan sıralayacak bir yöntem bulunursa ikili arama ile bu son tıkanıklıkta giderilebilir.


Bu mesaja 1 cevap geldi.