Kodu küçük fonksiyonlara ayırıp -pg opsiyonu ile derlersen gprof aracı hangi fonksiyonun ne kadar oyalandığını gösterebilir. Tabi bunlar derleyici gcc ise geçerli. Böylece programın tamamında iz sürmek yerine sadece şüpheli fonksiyonları takibe alabilirsin. http://www.network-theory.co.uk/docs/gccintro/gccintro_80.html Birde programın çalışma zamanını ölçmek için arka arkaya birkaç kez çalıştır ve ortalamasını al. Bir süre geçtikten sonra ilk çalıştırmayı buna dahil etme o yanıltıcı olur. Mesela işletim sistemi harddisk i uykuya aldıysa ilk erişim oldukça uzun sürer. Veya işlemciyi güç koruma moduna geçirdiyse normal frekansına geçene kadar yavaş çalışır. |
Olmazsa bir de gcc ile denerim, normalde Visual Studio kullanıyorum. Zaten kodlarda zaman ölçümü yapıyorum ve asıl zamanı diziyi tarattığım o iki satır alıyor. Durmadan deneme yaptığım için de uyku modu söz konusu değil, saatlerce farklı şeyler deneyince uyumasına fırsat kalmıyor. Aklımda farklı derleyiciyle deneyip sonucu görmek vardı, en kolay gcc ile denerim herhalde. |
#include <stdio.h> #include <stdlib.h> #include <string.h> void *ADDint(void *dataptr1,void *dataptr2){ void *sum=(int*)malloc(sizeof(int)); *sum=*(int*)dataptr1+*(int*)dataptr2; return sum; } void *ADDstr(void *dataptr1,void *dataptr2){ char *str=(char*)malloc(sizeof(char)*33); int i=0; int j=0; while (((char*)dataptr1)!='\0'){ str=((char*)dataptr1); i++; } while(((char*)dataptr2)[j]!='\0'){ str[j]=((char*)dataptr2)[j]; i++; j++; } str[i+1]='\0'; return (int*)i; } void* sumOp(void* dataptr1,void* dataptr2,void * (*ptrToAddFun)(void*, void*)){ return (*ptrToAddFun)(dataptr1, dataptr2); } int main(void) { char str1[99] = "kurtarin"; char str2[99] = "beniii"; char *string = NULL; int sum = 0; int i=33; int y=35; sum=*(int *)sumOp((void*)i, (void*)y,ADDint); string=(char*)sumOp(str1, str2,ADDstr); printf("Sum: %d\nString: %s\n",sum, string); return 0; } hatayı bulamadım yardımm lutfen ustalar.. |
Arkadaşlar lisede turbopascal, c, c++, c# görmüştüm şuan visual studio 2008 i yüklüyorum size bir sorum olacak bu program ile tekrar eden bir makro programı yapabilirmiyim örneğin 10 saniyede 1 klavyeden 1 tuşuna basacak vb. |
Notepad ile .cs dosyasını oluşturuyorum, sonra cmd ile açıyorum fakat .exe dosyasını oluşturmuyor, vista kullanıyorum, daha en baştan böyle saçma sapan birşey yüzünden soğumuş durumdayım. |
compiler kullanmanız lazım. önerin code:blocks gibi bir ide kullanmanız |
Öncelikle merabalar ben if else yapısını bi türlü kavrayamadımda acaba bu yapıyı kavrayabileceğim bir link veya bir yazı vb. birşey atabilirmisiniz teşekkür ederim saygılarımla:)![]() Birde aklıma gelmişken kütüphane konusunuyla ilgili bilgileriniz var ise paylaşmanızı isterim:).Ben dev c++ kullanıyorum ve hangi tür kütüphanelerin oldugunu hiç bilmiyorum daha yeni başladım anlmışsınızdır zaten:) |
Web sitenizin dünya ve ülke sıralamasını öğrenin!! http://www.koddunyasi.net/hbrayrinti.aspx?hbrID=530&hbrkategori=2 |
Merhaba arkadaşlar c#'ta girilen metinle ilgili bilgileri ekrana yazdırdım ama girilen metnin içindeki sesli harfleri çıkarıp yeni metni ekrana nasıl yazdırabilirim,onu yapamadım ![]()
|
C de önceden boyutu bilmeden(kullanııcı belirleyecek) nasıl boyutunu tanımlarız.
|
hangi işlemde hata yapıyorum sonuç yanlış çıkıyor çözemedim yarım saattir?
|
arkadaşlar proğram c ile yazılması lazım ve -2,-1,0,1,2 yani -2 ve 2 aralığının dışında girilen her sayı için tekrar deneyiz diye hata vermesi lazım kodu yazabilecek var mı? yardım lütfen |
Bir proje ödevim var 2 adet isim soy isim girilebilecek 2 adet cep telefon kaydı yapılabilecek 2 adet faks numarası eklenecek bu veriler veritabanında saklanabilecek istendiginde sonradan ekleme çıkarma düzeltme silme gibi işlemlere olanak tanıyacak şekilde c# veya .net ile fihrist yapmam gerekiyor ağ üzerine okudum hiç bişi bilmiyorum nasıl bir yol izlemeliyim ne yapmalıyım yardımcı olabilicek yol göstericek biri varsa ögrenmeye hazirim teşekkürler.![]() |
C dedigin icin malloc/free ama pek onerilmez. new/delete C++ kutuphanesinde bulunur ve daha cok tercih edilir. malloc/free :http://www.cplusplus.com/reference/cstdlib/malloc/ new/delete :http://www.cplusplus.com/reference/new/operator%20new[]/ |
Bir cok yerde yanlis var. Nerden baslasak nasil anlatsak durumu. Oncelikle array nedir bir daha bakmani oneririm. sonra bir fonksiyon oyle sak diye return a,b; donmez. reference pointer pair tuple struct tarzinda yontemler ile coklu donus yapabilirsin. En basitinden pointer ornegi koydum, uzunluga bakmiyor ve tehlikeli :)
referans tarzi: void sayilar(&a,&b) { ... } int main() { int x,y; sayilar(x,y); return 0; } pointer tarzi : void sayilar(*a,*b) { ... } int main() { int x,y; sayilar(&x,&y); return 0; } vs ... |
Arkadaşlar ben C dilinde yeniyim bir kodda randomize() kullanırken tanımlanmamıs hatası alıyorum acaba yeni bir kütüphane mi eklemem gerekiyor? kod aşağıdaki gibi ama n(i) ler dizi önizlemede orda köşeli parentezler çıkmıyor.. Yardımlarınız için teşekkürler... #include<stdio.h> #include<conio.h> #include<stdlib.h> main() { int n[10],i; randomize(); for(i=0;i<=9;i++){ n(i) =rand(); printf("%d\n"), n(i); } getch(); } |
randomize() ??? http://www.cplusplus.com/reference/cstdlib/rand/?kw=rand |
Usta sağolasın da bunun iki türlü kullanımı var benim koddaki gibi geçerli olmamasının sebebini biliyomusun ? |
kardeş önceden belirlediğim 2 sayinin ebobunu alabiliyorum bende önemli olan dışardan sayılari istemek,ben hocanın bana gösterdiği şekilde yazdım hocanın yazdığı zaten çalışmıyoduda en son benimkini şekline getirebildim,bir çok yanlış var demişsin bana onları yazman mümkünmüdür çözümlerini söylemesende olur biraz uğraşmak istiyorum nereler hatalı yada ne kullanımı,bi yerde ebob yazıp obeb çağırmışım yazım hataları var ama diğer hataları göremiyorum cevabın içinde ayrıca teşekkür ederim. |
Cevap için teşekkürler. Dizi gb'lara yaklaşabiliyor bazen, o yüzden mümkün değil. Normalde dosyadan satır satır okunuyor (ve öyle olması gerekiyor), onda sıkıntı yok. Asıl sorun kodların kararsız olması. Aynı işlem bazen 1 sn'de bazen 5 sn'de oluyor. Örnek olarak fprintf(ds,"\n\n%s\n\n",dizi); koduyla diziyi yazdırırsam (bu yazdırma kısmı hariç) 4-5 sn olurken o kodu iptal ettiğimde bazen 1 sn'de tamamlıyor. Yada aynı boyutta bellek ayrılmış 2. bir diziye *(dizi2+i)='C';*(dizi2+i+1)='G' şeklinde yaparsam veya oradaki *(dizi+i)='C';*(dizi+i+1)='G' kodunu tamamen iptal edersem yine 1 sn de tamamlıyor. Mantıklı bir açıklama getiremedim yani. Aynı işlem için 4-5 kat fark olması ? (Tabi bu sürelere dosyadan okuma, dosyaya yazma süreleri dahil değil, onlar ciddi bir zaman almıyorlar.) Sanki başka birşeyler programın çalışmasını etkiliyor gibime geliyor ya çözemedim işte!
Bu mesaja 1 cevap geldi. Cevapları Gizle