Arama butonu
Bu konudaki kullanıcılar: 4 misafir, 2 mobil kullanıcı
4171
Cevap
168413
Tıklama
3
Öne Çıkarma
Cevap: C/C++/C# Sorularınız Buraya. . .(GÜNCEL) (123. sayfa)
E
12 yıl
Binbaşı

recursive ile olan fonksiyonu netten bulmuştum yaptım fakat mantığını tam olarak bilmiyorum onuda yazar mısın ?


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Seikatsu
S
12 yıl
Teğmen

quote:

Orijinalden alıntı: El nino9

recursive ile olan fonksiyonu netten bulmuştum yaptım fakat mantığını tam olarak bilmiyorum onuda yazar mısın ?

fonksiyon kendini bosluk karakterini bulana kadar tekrar cagırıyor boylece harf harf karakterleri almıs oluyor(bufferdan)
daha sonra icten dışa doğru yazdırıyor



M
12 yıl
Er

kullanıcı pozitif tamsayı girecek, program bu sayının bütün asal çarpanlarını bulup, diziye atayacak
SORUMA YARDIMCI OLABİLİR MİSİNİZ? :((


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

quote:

Orijinalden alıntı: mntkrstknt

kullanıcı pozitif tamsayı girecek, program bu sayının bütün asal çarpanlarını bulup, diziye atayacak
SORUMA YARDIMCI OLABİLİR MİSİNİZ? :((

Merhaba,

Yapamadığınız kısım neresi, orayı yazarsanız o şekilde yardımcı olalım. Yoksa direkt bizim yapıp size kod vermemiz size bi'şey kazandırmaz.


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

Kardeşim burada senin sorunun python ile gerçeklemesi var. Fikir edinmek için bakabilirsin.

 
class Stack():
def __init__(self):
self.items=[]

def isEmpty(self):
return self.items==[]

def push(self,item):
self.items.append(item)

def pop(self,n=None):
if self.isEmpty():
return None
if n==None:
return self.items.pop()
else:
return self.items.pop(n)

def peek(self,n=None):
if self.isEmpty():
return None
if n==None:
return self.items[len(self.items)-1]
else:
return self.items[n]

def size(self):
return len(self.items)

def show(self, title=""):
print title,
for i in self.items:
print i,
print


def postfixEval(postfixExpr):

operandStack = Stack()

tokenList = postfixExpr.split()

for token in tokenList:
if token in "0123456789":
operandStack.push(int(token))
else:
operand2 = operandStack.pop()
operand1 = operandStack.pop()
result = doMath(token,operand1,operand2)
operandStack.push(result)

return operandStack.pop()

def doMath(op, op1, op2):
if op == "*":
return op1 * op2
else:
if op == "/":
return op1 / op2
else:
if op == "+":
return op1 + op2
else:
return op1 - op2




Bu mesajda bahsedilenler: @ca123ner
H
12 yıl
Binbaşı

integera atadığımız sayıyı geçersiz kılıp tekrar scanf ile değer almak için ne önerirsiniz ?

bir menü yazıyorum c ile 0 1 2 3 4 den birini girecek kullanıcı switch case kullanıyorum. default içine goto ile döndürme yapıyorum ama sürekli yazıyor çünkü en başta girilen değeri silmeden o satıra geliyor ne önerirsiniz?


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

quote:

Orijinalden alıntı: hayvan arkadas

integera atadığımız sayıyı geçersiz kılıp tekrar scanf ile değer almak için ne önerirsiniz ?

bir menü yazıyorum c ile 0 1 2 3 4 den birini girecek kullanıcı switch case kullanıyorum. default içine goto ile döndürme yapıyorum ama sürekli yazıyor çünkü en başta girilen değeri silmeden o satıra geliyor ne önerirsiniz?

Oncelikle goto kullanmayin, 1970 yilindan once kullanilan birsey o.

Onun yerine while kullan.

Atiyorum
char girdi;
while(1) {
girdi = getchar();
//Switch burda

if (girdi == CIKIS) { break;}
}

CIKIS ile bahsettigim cikis yapilcak girdi yani atiyorum 0 ile cikis yapiyorsan '0' yazmalisin.


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

quote:

Orijinalden alıntı: ThisisaNightmare

quote:

Orijinalden alıntı: hayvan arkadas

integera atadığımız sayıyı geçersiz kılıp tekrar scanf ile değer almak için ne önerirsiniz ?

bir menü yazıyorum c ile 0 1 2 3 4 den birini girecek kullanıcı switch case kullanıyorum. default içine goto ile döndürme yapıyorum ama sürekli yazıyor çünkü en başta girilen değeri silmeden o satıra geliyor ne önerirsiniz?

Oncelikle goto kullanmayin, 1970 yilindan once kullanilan birsey o.

Onun yerine while kullan.

Atiyorum
char girdi;
while(1) {
girdi = getchar();
//Switch burda

if (girdi == CIKIS) { break;}
}

CIKIS ile bahsettigim cikis yapilcak girdi yani atiyorum 0 ile cikis yapiyorsan '0' yazmalisin.

fflush() ile yaptim orayi ama su anda vaska bir sorunum var

case icinde case yazarak yes or no y/n ile cikis veya devam etme yapmam lazim yes dersem cikacak no dersem goto ile donecek, goto yerine naparim burda

case icinde case surekli hata veriyor


mobilim yarin detaylica sorucam sagolun



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

quote:

Orijinalden alıntı: hayvan arkadas


quote:

Orijinalden alıntı: ThisisaNightmare

quote:

Orijinalden alıntı: hayvan arkadas

integera atadığımız sayıyı geçersiz kılıp tekrar scanf ile değer almak için ne önerirsiniz ?

bir menü yazıyorum c ile 0 1 2 3 4 den birini girecek kullanıcı switch case kullanıyorum. default içine goto ile döndürme yapıyorum ama sürekli yazıyor çünkü en başta girilen değeri silmeden o satıra geliyor ne önerirsiniz?

Oncelikle goto kullanmayin, 1970 yilindan once kullanilan birsey o.

Onun yerine while kullan.

Atiyorum
char girdi;
while(1) {
girdi = getchar();
//Switch burda

if (girdi == CIKIS) { break;}
}

CIKIS ile bahsettigim cikis yapilcak girdi yani atiyorum 0 ile cikis yapiyorsan '0' yazmalisin.

fflush() ile yaptim orayi ama su anda vaska bir sorunum var

case icinde case yazarak yes or no y/n ile cikis veya devam etme yapmam lazim yes dersem cikacak no dersem goto ile donecek, goto yerine naparim burda

case icinde case surekli hata veriyor


mobilim yarin detaylica sorucam sagolun

Ilk mesajimda yazdigim gibi, goto yerine while loop kullanabilirsin.

case icinde case yazilmaz. Switch kullaniyorsan caseler sade birsey olmali. Eger sade degilse, if else vs kullanmalisin.



4
12 yıl
Teğmen

goto hala kullanılıyor, ve kullanılması gereken yerde sırf kulaktan doğma "goto kullanmayın" dendiği için kullanmamak saçma.
Tamam mümkün olduğunca kullanmamak gerekir ama "goto kullanmayin, 1970 lerden önce kullanılan birşey" demek de yanlış.

for (;;)
for (;;)
for(;;)
if (....)
break; // Bütün döngülerden çıkmak istiyorum. Bir sürü flag mi tutacağım?


if (p1 = malloc...) {
...
if (p2 = malloc...)
goto BIR;
if (p3 = malloc...)
goto IKI;
if (p4 = malloc...)
goto UC;
.
.
.
//en son yer tahsisi başarısız olursa öncekileri free etmek gerekir. Tipik go to nun kullanıldığı durumlardan bir başkası.

UC:
free p3;
IKI:
free p2;
BIR:
free p1;





< Bu mesaj bu kişi tarafından değiştirildi 4kalan -- 11 Aralık 2013; 13:26:07 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @ThisisaNightmare
M
12 yıl
Er

quote:

Orijinalden alıntı: m3RsiN´´

quote:

Orijinalden alıntı: -Source-

quote:

Orijinalden alıntı: m3RsiN´´

Arkadaslar ben su anda yurd disinda okuyorum ve grafik programlama dersinden donem odevi aldim. Benden istenilen

C++ ta basit bir kus cizip bu kus u ekranda capraz sekilde sag ust koseden sol atl koseye dogru gidip gelmesi..

Yardimci olabilcek arkadaslar bi yonlendirme yaparsa sevinirm cunku anlayamiyorum dersleri ve nasil yapicagim konusunda bi fikrim yok...

Grafik programlama için hangi api kullanıyorsunuz OpenGL mi? Direct3D mi?
Kuş 2d sprite mı olacak yoksa 3d model mi?

Soru sorarken lütfen tüm ayrıntıları yazın tekrar sormak zorunda kalmayalım. Burada soru soranların çoğu aynı şeyi yapıyor yarım yamalak soru sorup cevap bekliyorlar.

Dev C grafik kutuphanesi ile yaziyoruz 2d olucak OpenGL Kusuruma bakmayin ilk kez bi soru soruyorum.. Tekrar tesekkurler

Yardim edebilcek yol gosterebilicek kimse yok mu arkadaslar ?


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @-Source-
V
12 yıl
Onbaşı

goto hala kullanılıyor olabilir ama bu hatalı olduğu gerçeğini değiştirmez. Çok ilkel kodlarda kullanılmış ve günümüze kadar gelmiş ama şu anda tam bir acemi işi goto.

O içiçe for örneğinde o kısmın ayrı bir işlem olduğu ve başka bir fonksiyona taşınması gerektiği anlaşılıyor. Yani çıkma işini return ile yapacaksın.
Bellek tahsisi olayında da eminim daha iyi yöntemler bulunur. Tabi isteyen kullansın ama ben her zaman alternatif yöntemlerden yanayım.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @4kalan
4
12 yıl
Teğmen

goto kullanmanın hata olduğunu düşünmüyorum. Yeni yazılan kodlarda da gördüm eskilerde de. Başka örnekler verilebilir ama yazdığım örneklere cevap verdiğiniz için bana da söz hakkı doğdu
Döngülerde ayrı bir işlem olsa bile döngü çıkışında başka işlemler yapılabilir, ayrı fonksiyona taşınmayabilir... gibi gibi

Tekrar söylemek gerekir örneklerden de anlaşılacağı gibi kullanımı kısıtlı ama kullanılmasının tavsiye edildiği ya da okunabilirlik açısından yanlış kabul edilmediği yerler de var.
Kullanmamak gerekir ama kullanılmasının gerektiği yerlerde de kullanmamak bana göre yanlış.





< Bu mesaj bu kişi tarafından değiştirildi 4kalan -- 11 Aralık 2013; 14:21:20 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Vandenesse
T
12 yıl
Yarbay

quote:

Orijinalden alıntı: 4kalan

goto hala kullanılıyor, ve kullanılması gereken yerde sırf kulaktan doğma "goto kullanmayın" dendiği için kullanmamak saçma.
Tamam mümkün olduğunca kullanmamak gerekir ama "goto kullanmayin, 1970 lerden önce kullanılan birşey" demek de yanlış.

for (;;)
for (;;)
for(;;)
if (....)
break; // Bütün döngülerden çıkmak istiyorum. Bir sürü flag mi tutacağım?


if (p1 = malloc...) {
...
if (p2 = malloc...)
goto BIR;
if (p3 = malloc...)
goto IKI;
if (p4 = malloc...)
goto UC;
.
.
.
//en son yer tahsisi başarısız olursa öncekileri free etmek gerekir. Tipik go to nun kullanıldığı durumlardan bir başkası.

UC:
free p3;
IKI:
free p2;
BIR:
free p1;



for (;;) 
for (;;)
for(;;)
if (....)
break; // Bütün döngülerden çıkmak istiyorum. Bir sürü flag mi tutacağım?


Hayir, hatta bazi kod style larinda break bile yasak olabilir. Ben her zaman sunu yaparim:

for (i=0;i<5;i++) 
for (j=0;j<10;j++)
for(k=10;k>0;k--)
if (....)
i=5;j=10;k=0


gordugun gibi flaga falan gerek yok, e kodun geri kalaninin calismasini istemiyorum dersen ardina bir tane else koyarsin olur biter.

Ikinci ornegini tam anlamadim, if in icindeki malloc hata donerse, geriden mi free ederiz mantigi var? Eger durum boyleyse bunlari en basitinden bir arrayde tutup en son eklenenden geriye free ederiz(aklima ilk gelen bu)


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

Yazdıklarınız doğru ama zaten bildiğiniz gibi birşey in programlama da tek yöntemi yok, birden fazla seçenekle yapılabilir, benim de demek istediğim özel bir neden (mesela bazı code stillerinde yasak demişsiniz, burda kullanmazsınız) yoksa goto okunabilirliği bozar ama "kodumda hiç goto kullanmayacağım" diye düşünmekte biraz yanlış geliyor bana. Belirli yerlerde kullanılır.





< Bu mesaj bu kişi tarafından değiştirildi 4kalan -- 11 Aralık 2013; 17:36:35 >
Bu mesaja 3 cevap geldi.

Bu mesajda bahsedilenler: @ThisisaNightmare
A
12 yıl
Teğmen

Arkadaşlar aşağıdaki ufak eurodan tlye tlden euroya dönüştüren program çalışıyor tek bir sorunla oda işlemleri yaptıktan sonra en son siyah ekranda değerler çıkar çıkarmaz kapanıyor direk kapanmaması için kullanılan kod cin.get(); değilmiydi teşekkürler şimdiden

#include <iostream>
#include <iomanip>
#include "locale.h"

using namespace std;

int main()
{
double a=0,b=0;
setlocale(LC_ALL,"turkish");
cout<<"liradan Euroya dönüştürülecek sayıyı girin";
cin>>a;
double c=a/2.79;
cout<<a<<' '<<"lira"<<' '<<c<<' '<<"Euro eder"<<endl<<endl;
cout<<"Eurodan Liraya dönüştürülecek sayıyı girin : ";
cin>>b;
double d=b*2.79;
cout<<b<<' '<<"Euro"<<' '<<d<<' '<<"Lira eder";
cin.get();
return 0;
}


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

programlama konusunda acemiyim. yaptığım bazı programlarda switch döngüsünün seçim değişkenine, kullanıcı birden fazla kez aynı karakteri girse dahi çalışsın istiyorum. bu bir hata mesajı da olabilir. fakat beceremedim bir türlü.
yani aslında 5+5 yazınca =10 yazan program 5+++5 yazınca sonsuz döngüye girmesin, hatalı girdin arkadaşım desin ve olayı tekrar başa alsın istiyorum. Bu şekilde bir taşma durumunda ne yapabilirim? veya bir reset komutu verebilir miyim? birçok şey denedim çözemedim.
//örnek kod: 
#include<iostream>
using namespace std;
int main(){
cout << "isleminizi yaziniz:\n";
for(;;)//ana döngü
{
double x,z;
char y;
cout<<endl;
cin >> x;//1. sayı
cin >> y;//işlem
cin >> z;//2. sayı

switch(y){
case'+': cout << "=" << x+z; break;
case'-': cout << "=" << x-z; break;
case'x':
case'*': cout << "=" << x*z; break;
case'/': cout << "=" << x/z; break;
default: cout<<"hata."; break;
}//end switch
}//end for
}//end main


program üzerinden açıklarsanız daha iyi anlarım. teşekküreler


Bu mesaja 2 cevap geldi.
M
12 yıl
Er

İyi günler. Goto komutu ile ilgili ödevim var ama pek bilgim yok. Goto işlevini gören farklı yöntemler oldugu için pek kaynakta edinemedim. Acaba kullanımı hakkında bilgi verir misiniz?
Ödevim şu:
1- Klavyeden girilen 10 sayının toplamını ve ortalamasını bulan program + akış diyagramı…
2- 1-50 arasındaki tek sayıları ekrana listeleyen ve toplamını bulan program + akış diyagramı…
Ödevin çözümünü istemiyorum. Sadece çözümünde katkısı olacak goto komutu hakkında bilgi. Goto komutunu kullnarak belirli sayıda sayı girmeyi beceremiyorum. Hep sonsuz oluyor. Yardımcı olursanız çok iyi olur. Şimdiden teşekkürler.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @4kalan
4
12 yıl
Teğmen

Yanlış anlaşılma volume 1

goto kullanmayacaksınız döngülerden yararlanacaksınız.
1 - 50 arasındaki tek sayılar.

for (i = 1; i < 50; i += 2)
printf("%d ", i);

gibi


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @madiba072
4
12 yıl
Teğmen

switch i döngü içine alırsınız. Gerekli koşullara bakarsınız ona göre çıkmak istediğinizde break; dersiniz.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @mhk_mhk