pthread ile yapabilirsin. main içine yazdıklarını başka bir fonksiyon içine al. Fonksiyon başlığı şöyle olacak. void* fonk(void *arg) Sonra istediğin kadar thread oluşturup her thread e başlangış değerini geçirirsin. Herbir thread bu başlangıç değerinden başlayarak thread sayısı kadar arttırarak devam eder. Böylece herbiri farklı sayıları hesaplamış olur. Şurada bir tutorial var.http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html |
Arkadaşlar merhaba c++ 'da amiral battı oyunu yapıcam mantık satır ve sütün giriyosun ekranda gireceğin satır ve sütün un bulunduğu noktaya yıldız yerleştirmek.Kullanıcıdan 3 defa girmesini istedin.ilk 2 yıldızı doğru yerleştiriyor 3.yıldız ı yanlış koyuyor. Yardım edermisiniz #include<stdio.h> #include<time.h> #include<stdlib.h> int main() { int i,j,k; int gemi[100][100],a,satir[5],sutun[5]; for(a=1;a<=3;a++) { printf("satir gir"); scanf("%d",&satir[a]); printf("sutun gir"); scanf("%d",&sutun[a]); } for(i=1;i<=5;i++) { for(j=1;j<=5;j++) { if(i==satir[j]) { printf("*",gemi[i,sutun[j]]); } else printf("1",gemi[i,j]); } printf("\n"); } getchar(); getchar(); return 0; } Paylaş |
İyi geceler proje ödevim için yardım isteyecektim. Ödevin sonlarına geldim fakat 2 tane sorunu çözemedim yardımcı olursanız teşekkürler şimdiden. 2 sorumda fonksiyon olarak olacak ana fonksiyonda sadece işlemi çağıracağız cevap gelecek yani. 1- Çıkma olacak kullanıcıya soracağım ve çıkmak için Y basınız devam etmek için N basınız deyip y bastığında programı kapatacağım n basarsa tekrar ne yapmak istediğini soracağım. 2- Bunda ise kullanıcıdan bir kelime veya sayı isteyeceğim ve istediğim bu sayı veya kelimeyi tersten yazdıracağım (donanımhaber - rebahmınanod) gibi. Bunun içinde bir kod buldum netten fakat fonksiyon olarak ayarlayamadım normal yazdım mı çalışıyor ama dışarıda yazdırıp ana fonksiyonuma çağıramadım. Bu ikide ki bulduğum kodlarda şu şekilde #include<stdio.h> void main(void) { int karakter; if((karakter=getchar())!='\n') main(); printf("%s",&karakter); } |
Teşekkürler. Üzerinde uğraşıyorum şu an olacak gibi duruyor. |
48 tane mersenne asallari biliniyor. Zaten 10 taneden fazla 64 bitte gostericek kadar yazamazsiniz. Bunlarin disinda ders amacli oldugunu guduyorum ve C gibi bir dilde platform bagimsiz multi-threaded program yazilan bir kutuphane C ile gelmiyor. |
1-) do { printf("Cikmak istiyormusunuz ? (Y/N)"); scanf("%c", &ch); if (ch == 'y' || ch == 'Y') break; // diğer işlemler }while(1); 2-) ... printf("Yaziyi giriniz : "); gets(str); void disprev(const char *str) { int i; int len = strlen(str); for (i = len - 1; i >= 0; i--) printf("%c", str [ i ]); //forumda bi gariplik var [ i ] boşluksuz yazılmıyor. } |
Devv C grafik kutuphanesi ile yaziyoruz 2d olucak OpenGL Kusuruma bakmayin ilk kez bi soru soruyorum.. Tekrar tesekkurler |
Normalde dediğiniz doğru ama zaten bu sebepten dolayı gmp.h kütüphanesi kullandım ve ilk 22 mersenne sayısını tam olarak gösteriyor. Bu sayıları bulması 7 dakika civarı sürüyor. Pthread kullanarak daha kısa bir zamanda bu sayıları bulmaya çalıyorum bu gün bitirirsem paylaşırım kodu. |
Bir tane masa için form tasarla, ne aldığını artık listboxla mı gösterirsin ne yaparsan ayarla. Daha sonra bu forma bir tane masa değişkeni tanımla (umarım bu dediklerimi anlıyorsundur, forma tanımla derken, formun kod alanı içerisinde). Daha sonra bu bahsettiğin buttona tıklatıldğında şöyle birşey yapacaksın; MasaFormu masaFormu = new MasaFormu(); masaFormu.Masa = buttondanGelenMasa;//Buttonun hangi masayı temsil ettiğini ayarlamak sana kalmış onun için de birkaç yöntem var. *1 masaFormu.ShowDialog();//ShowDialog ve Show arasındaki fark, ShowDialog ile açtığın bir pencere kapatılmadan program devam etmez, yani mesela; //BURAYA BİR KOD YAZSAYDIM, masaFormunu kapatana kadar bu kod işlenmezdi. *1 -> Bir buttonun temsil ettiği masayı şu şekillerde bulabilirsin; -Buttonların bir array ise (Zaten array olmama şansı yok senin durumunda, çok zorlanırsın), bütün arrayi bir click metoduna gönder. Click metoduna sender parametre gelir, bu direk olarak senin butonundur. Array'inde bu sender'ın indexini bul. Şöyle; masaButtonlarim.IndexOf(sender); Bu indexe denk düşen masa ile formu aç; int index = masaButtonlarim.IndexOf(sender); MasaFormu masaFormu = new MasaFormu(); //Bu satır ve alttaki üç satır kodu yazmak yerine, masaformunda bir metod da oluşturabilirsin *2) masaFormu.Masa = masalar[index]; masaFormu.ShowDialog(); *2 -> MasaFormunda oluşturulacak metod; public static void Goster(Masa masa) { MasaFormu mf = new MasaFormu(); mf.masa = masa; mf.ShowDialog(); } Bu metodun kullanım şekli; (Ana formdan) MasaFormu.Goster(masalar[index]); Hatta bir başka ayrıntı da, masa formunda masa ile ilgili bir değişiklik yapılacaksak bunu bir metod değil bir fonksiyon da yapabilirsin. O halde Formdaki fonksiyon şu şekilde olurdu; public static Masa Goster_Duzenle(Masa masa) { MasaFormu mf = new MasaFormu(); mf.masa = masa; mf.ShowDialog(); return mf.masa; } ANA FORM'dan kullanımı; //indexlemeyi yaptığımızı varsayalım; masalar[index] = MasaFormu.Goster_Duzenle(masalar[index]); Masa Formunda Görüntüleme ve Düzenleme Masa Formunda masa değişkenini tanımladığımıza ve ShowDialog'dan önce bir değer atadığımıza göre, masa formunun load event'inde formumuzun içeriğini, (textbox, label vs.) masa değişkenimize göre düzenleyebiliriz. Düzenleme; Masa değişkeni üzerindeki değişiklikleri anı anına yapmak yerine (Örneğin yeni bir sipariş ekleme ye bastığında değil de), MasaFormunun close eventinde yapabilirsin. Ama burada da yine bir ayrıntı var, bunun nedeni ShowDialog kullanmamız. Show kullansaydık, Ana form ile masa formundaki masa değişkeni farklı olacaktı. Tüm kodum showdialog kullanman üzerine. Umarım açıklayıcı olmuştur, iyi çalışmalar. |
C de arraylere nasıl string atayabilirim ? Örneğin dizi[0]=asd gibi. Ancak ben gösterimi sayı dizisi üzerinden yapmak istiyorum. Yani dizi[0] yazdığımda "asd" çıktısı gözüksün. Asıl amacım sayı dizisini sıralamak ve bu sıralamaya göre stringleri göstermek. Mesela dizi[0] > dizi[2] > dizi[1] ise asd > bsd > csd gözüksün. C'de string de char dizisi olduğu için işin içinden çıkamadım sadece bubble sorting ile sayı dizisini sıralayabildim. Yardımcı olursanız sevinirim. |
Pthread bir POSIX standardi, Cygwin disindia windowsta calismaz. O yuzden dikkatli olun boyle akademik calismalarda. Eger yaptiginiz sey birisi tarafindan notlandirilcaksa o kiside unix tabanli bir sistem oldugundan emin olunuz. |
Ben MINGW ile çalıştırabildim bu kütüphaneleri. Cygwin de denedim ama yapamamıştım onunla. Uyarınız için teşekkürler. Yazdığım kod bir ödev için, ödevi de hocaya kendi bilgisayarımız üzerinde sunuyoruz. |
MiniGW pthread i desteklemiyor windowsta nasil calistirabildiniz anlamadim ben. Kendi bilgisayardan sunuluyorsa sorun yok o zaman. |
Yazmayı unutmuşum ikinci soruda array kullanılmayacak sadece recursion fonksiyonla olacak. |
Herkese iyi çalışmalar, satranc yapmaya çalışıyorum ve kodun başlarında bi sorunlar karşılaştım umarım yardımcı olabilirsiniz. İnitialize deyip *board[8]'ı fonksiyona soktuğumda fonksiyon işlevini yerine getiriyor fakat fonksiyon biter bitmez gönderme hatası alıyorm ve program kapanıyor. Codeblocks'da ve devc++ da denedim aynı sonucu aldım. Kodda bi yanlışlık var mı bi göz atabilirseniz sevinirim. #include <stdio.h> #include <stdlib.h> #include <string.h> void initialize(char *[]); void showmoves (char []); int main() { char move[5]; char initialize1[11]; char showmoves1[10]; char firstlocation[3]; char lastlocation[3]; char x1[24]={'R','1',' ','N','1',' ','B','1',' ','Q','U',' ','K','I',' ','B','2',' ','N','2',' ','R','2','\0'}; char x2[24]={'P','1',' ','P','2',' ','P','3',' ','P','4',' ','P','5',' ','P','6',' ','P','7',' ','P','8','\0'}; char x3[24]={' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','\0'}; char x4[24]={' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','\0'}; char x5[24]={' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','\0'}; char x6[24]={' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','\0'}; char x7[24]={'p','1',' ','p','2',' ','p','3',' ','p','4',' ','p','5',' ','p','6',' ','p','7',' ','p','8','\0'}; char x8[24]={'r','1',' ','n','1',' ','b','1',' ','q','u',' ','k','i',' ','b','2',' ','n','2',' ','r','2','\0'}; char *board[8]={x1,x2,x3,x4,x5,x6,x7,x8}; scanf("%s",initialize1); if(strcmp("initialize",initialize1)==0) initialize(board); else printf("Failed!\n"); scanf("%s%s",showmoves1,firstlocation); if(strcmp("showmoves",showmoves1)==0) showmoves(firstlocation); else printf("Failed!\n"); return 0; } void initialize(char *a[]){ int i; for(i=0; i<9; i++) printf("%s\n",*(a+i)); } void showmoves(char a[]){ if (strcmp("a2",a)==0) printf("\na3"); } |
Arraysiz veya pointersiz bu soruyu C de cozmek imkansiz. Cunku C de string denilen bir kavram yok. Pointerli cozum:
|
recursive fonksiyon ile
|
postfix ifadesinin klavyeden girileceğini ve her sayı ve işlem arasında en az 1 boşluk karakteri olacağını varsayınız. Yazacağınız program son-takı ifadesinin hesaplanabilmesi için yığın veri modelini kullanmalı ve 500 karakter’e kadar girilen ifadeleri doğru bir şeklide hesaplayabilmelidir. Eğer girilen ifadede hata varsa, uygun hata mesajını ekranda gösterebilmelidir. Örneğin, aşağıdaki postfix ifadesi 12 2 * 4 + 3 / ((12 * 2) + 4) / 3 şeklinde hesaplanmalıdır. Bu amaçla alınan her sayı yığına eklenmeli, bir işlem görüldüğünde yığından ilk 2 sayı alınıp, işlem hesaplanıp, sonuç tekrar yığına eklenmelidir. Eğer ekleme ve alma işlemlerinde hata olursa, uygun hata mesajları ekranda gösterilmelidir. 12 2 4 + * – şeklinde verilen bir son-takı ifadesi (12 * (2 + 4)) – şeklinde hesaplanacağından – işleminde gerekli olan ikinci sayı verilmediğinden hata mesajı verilmelidir. Yığın yapısı için dizi ya da bağlı liste kullanılabilir. Bu soruda kodu yazmaya çalıştım fakat pek başarılı olamadım.Yardımcı olursanız c kodu hakkında seviniirim. |
Mantik guzelde, ben genede bir satiri okumak icin fgets kullanmayi tercih ederim. |
Bu mesaja 1 cevap geldi. Cevapları Gizle