Arama butonu
Bu konudaki kullanıcılar: 2 misafir
4171
Cevap
169750
Tıklama
3
Öne Çıkarma
Cevap: C/C++/C# Sorularınız Buraya. . .(GÜNCEL) (56. sayfa)
-
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: Honey Badger

quote:

Orijinalden alıntı: koline

Arkadaşlar selamlar,

Öncelikle belirteyim ki C'de yeniyim. Herangi bir yazılım geçmişim olmadığından dolayı haliyle zorlanıyorum. Size bir sorum olacak, kaynaklarda da anlatılıyor ama anlayamıyorum bir türlü. Belki siz daha açıklayıcı ve anlayacağım gibi anlatabilirsiniz. Finalim var ona hazırlanıyorum, algoritma'da ve akış şeması çıkarmada oldukça kötüyüm. akış şemasını çıkarmada bana yardımcı olabilecek var mı acaba?

Sorularımı programda comment ( // ) olarak yazdım.

Aşağıdaki program üslü sayının sonucunu veriyor (taban ve üs girilerek):

#include <stdio.h>

int main (void)

{
int taban;
int us;
int product;
int counter = 1; // burada neden counter'a 1 verdik?

printf("Tabanı girin: ");
scanf("%d", &taban); // burada ve diğer scanf'lerde anlamadığım yer şu "%d" yi neden kullanıyoruz? sayıyı okuması sanırım ama neden %d ?

printf("Ussu girin: ");
scanf("%d", &us);

product = taban

while (counter < us) {
product = product * taban
counter = counter + 1
}

printf("Sonuc: " "%d\n", product);

system("PAUSE");
return 0;
}

Şimdiden zaman ayırdığınız için çok teşekkür ederim.

İlk sorunla başlayayım.

1-) Eğer counter değişkenine herhangi bir deger atamadan kullanmaya kalkışırsan hata alırsın, çünkü değişkeni oluşturduğun zaman bellekte bir bölüm açılır ve bu bölümün içi tamamen boştur yani null dur. Genelde buralarda yapılan hatalarda bilgisayarın tanımlanan değişkenin ilk değerini eğer hiç bir değer atanmamışsa 0 kabul edeceği yöndedir ancak bu yanlıştır.

Yani sen while(counter<us) yazıpta counter değişkenine bir değer atamamış olsaydın bilgisayar burada şöyle düşünürdü " 'hiçbirşey' us değişkeninden küçük olduğunda şu komutları çalıştır." Yani tamamen hatalı bir kullanım olurdu.

2-)%d kullanımını derste görmüş olman gerekiyordu. Kısaca değineyim %d, %lf, %c gibi ifadeler genellikle scanf ve printf fonksiyonlarıyla birlikte kullanılır. Amaçları alınacak veya yazılacak şeyin hangi tipte olduğunu belirtmektir. Sen %d dediğin zaman bir tamsayı okuyacağım veya tamsayı yazdıracağım demektir. Reel sayılar içinse %lf veya %f kullanılır bunlar böyle devam eder. Daha detaylı kullanımını buradan öğrenebilirsin.Link.


1. sorunun cevabı kısmen yanlış verilmiş.
"Eğer counter değişkenine herhangi bir deger atamadan kullanmaya kalkışırsan hata alırsın"
Bir değişkene değer vermeden yani ilklendirmeden tanımlarsan hata almazsın ve kullanabilirsin. Tabi derleyiciye göre farklılık gösterebilir.

"değişkeni oluşturduğun zaman bellekte bir bölüm açılır ve bu bölümün içi tamamen boştur yani null dur."
Değişkenin içinde çöp değer olur. Yani o an çalışan programların oluşturduğu değerlerden rastgele birini atar o bölüme.

int counter; şeklinde tanımlasaydın counter'ın içinde 3124123 de olabilirdi 1 de olabilirdi. Yani ne geleceğini bilemezsin o yüzden ilklendirilir.
Genelde değişkenler tanımlanırkan 0 atanarak ilklendirilir.
int taban = 0; // şeklinde


Bu mesaja 1 cevap geldi.
H
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: -Source-

quote:

Orijinalden alıntı: Honey Badger

quote:

Orijinalden alıntı: koline

Arkadaşlar selamlar,

Öncelikle belirteyim ki C'de yeniyim. Herangi bir yazılım geçmişim olmadığından dolayı haliyle zorlanıyorum. Size bir sorum olacak, kaynaklarda da anlatılıyor ama anlayamıyorum bir türlü. Belki siz daha açıklayıcı ve anlayacağım gibi anlatabilirsiniz. Finalim var ona hazırlanıyorum, algoritma'da ve akış şeması çıkarmada oldukça kötüyüm. akış şemasını çıkarmada bana yardımcı olabilecek var mı acaba?

Sorularımı programda comment ( // ) olarak yazdım.

Aşağıdaki program üslü sayının sonucunu veriyor (taban ve üs girilerek):

#include <stdio.h>

int main (void)

{
int taban;
int us;
int product;
int counter = 1; // burada neden counter'a 1 verdik?

printf("Tabanı girin: ");
scanf("%d", &taban); // burada ve diğer scanf'lerde anlamadığım yer şu "%d" yi neden kullanıyoruz? sayıyı okuması sanırım ama neden %d ?

printf("Ussu girin: ");
scanf("%d", &us);

product = taban

while (counter < us) {
product = product * taban
counter = counter + 1
}

printf("Sonuc: " "%d\n", product);

system("PAUSE");
return 0;
}

Şimdiden zaman ayırdığınız için çok teşekkür ederim.

İlk sorunla başlayayım.

1-) Eğer counter değişkenine herhangi bir deger atamadan kullanmaya kalkışırsan hata alırsın, çünkü değişkeni oluşturduğun zaman bellekte bir bölüm açılır ve bu bölümün içi tamamen boştur yani null dur. Genelde buralarda yapılan hatalarda bilgisayarın tanımlanan değişkenin ilk değerini eğer hiç bir değer atanmamışsa 0 kabul edeceği yöndedir ancak bu yanlıştır.

Yani sen while(counter<us) yazıpta counter değişkenine bir değer atamamış olsaydın bilgisayar burada şöyle düşünürdü " 'hiçbirşey' us değişkeninden küçük olduğunda şu komutları çalıştır." Yani tamamen hatalı bir kullanım olurdu.

2-)%d kullanımını derste görmüş olman gerekiyordu. Kısaca değineyim %d, %lf, %c gibi ifadeler genellikle scanf ve printf fonksiyonlarıyla birlikte kullanılır. Amaçları alınacak veya yazılacak şeyin hangi tipte olduğunu belirtmektir. Sen %d dediğin zaman bir tamsayı okuyacağım veya tamsayı yazdıracağım demektir. Reel sayılar içinse %lf veya %f kullanılır bunlar böyle devam eder. Daha detaylı kullanımını buradan öğrenebilirsin.Link.


1. sorunun cevabı kısmen yanlış verilmiş.
"Eğer counter değişkenine herhangi bir deger atamadan kullanmaya kalkışırsan hata alırsın"
Bir değişkene değer vermeden yani ilklendirmeden tanımlarsan hata almazsın ve kullanabilirsin. Tabi derleyiciye göre farklılık gösterebilir.

"değişkeni oluşturduğun zaman bellekte bir bölüm açılır ve bu bölümün içi tamamen boştur yani null dur."
Değişkenin içinde çöp değer olur. Yani o an çalışan programların oluşturduğu değerlerden rastgele birini atar o bölüme.

int counter; şeklinde tanımlasaydın counter'ın içinde 3124123 de olabilirdi 1 de olabilirdi. Yani ne geleceğini bilemezsin o yüzden ilklendirilir.
Genelde değişkenler tanımlanırkan 0 atanarak ilklendirilir.
int taban = 0; // şeklinde

Evet şimdi denedim null olarak değil de dediğiniz gibi tamamen rastgele bir değer çıkıyor.


Bu mesaja 1 cevap geldi.
E
13 yıl
Binbaşı

selamlar, c# ta yeni sayılırım. bir ödev var. ödev şu textbox'tan aldığımız bir sayının 11'e tam bölünüp böülenemdiğini bulacağız.

11'e bölünebilme kuralı, sayının son rakamından başlayarak bunları+,-,+,- olarak işaretlendirmek ve sonrasında bunları toplama..eğer sıfır ve 11 in katıs ise tam bölünür.

nasıl yapabiliriz. aldığım string uzunluguna göre dizi yaptım. ama sndan başlayıp nasıl bir for döngüsü ile +,- olarak alıancak bunlar.. şimdiden teşerkküler


Bu mesaja 2 cevap geldi.
-
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: espanolun

selamlar, c# ta yeni sayılırım. bir ödev var. ödev şu textbox'tan aldığımız bir sayının 11'e tam bölünüp böülenemdiğini bulacağız.

11'e bölünebilme kuralı, sayının son rakamından başlayarak bunları+,-,+,- olarak işaretlendirmek ve sonrasında bunları toplama..eğer sıfır ve 11 in katıs ise tam bölünür.

nasıl yapabiliriz. aldığım string uzunluguna göre dizi yaptım. ama sndan başlayıp nasıl bir for döngüsü ile +,- olarak alıancak bunlar.. şimdiden teşerkküler

Sayımız 152347 olsun. Ve senin bunu aşağıdaki gibi diziye attığını varsayıyorum.
Kod açık ama flag kısmını açıklayım.
Döngüye ilk girdiğinde flag = false bu yüzden else düşecek ve flag'ı true yapacak. Yani 7'e bir nevi + koymuş olduk. Şimdi sıra 4'e - koymada. 2. döngüde flag = true bu yüzden if'e girdik içindeki değeri -1 ile çarptık. Böylece bir onu da - ledik ve flag'ı false yaptık. Bir sonraki for'un dönüşünde else düşüp 3'ü + olarak işaretmesi için. Ve böyle devam ediyor.
Sonra foreach ile dizideki sayıları toplattım. Sen sonra bu toplamın 11 in katı olup olmadıgına bakacaksın.
int[] dizi = new int[6] {1,5,2,3,4,7 };
bool flag = false; // False ise + gelecek, True ise -

for(int i = dizi.Length - 1; i >= 0; i--)
{
if(flag)
{
dizi *= -1;
flag = false;
}
else
flag = true;
}

int toplam = 0;
foreach(int sayi in dizi)
toplam += sayi;


Bu mesaja 2 cevap geldi.
E
13 yıl
Binbaşı

teşekkürler, bir ikiz düzeltme ile işimi çözdüm...
bir soru daha var aslında..

soru: textbox'tan bir string alıyoruz...örneğin KELEBEK olsun..(listboxa bunun her karakterini sırayla atıyoruzz ama snucta bir kelebek şekl çıkacak biçimde..altta görüntü ekledim.
kelebegin sol kanadını yaptım ama sağ kanadını yapamadım.



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


Bu mesaja 2 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: espanolun

teşekkürler, bir ikiz düzeltme ile işimi çözdüm...
bir soru daha var aslında..

soru: textbox'tan bir string alıyoruz...örneğin KELEBEK olsun..(listboxa bunun her karakterini sırayla atıyoruzz ama snucta bir kelebek şekl çıkacak biçimde..altta görüntü ekledim.
kelebegin sol kanadını yaptım ama sağ kanadını yapamadım.



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

Sol kanadin nerede goster icine ekleniverir sag kanat :)


Bu mesaja 1 cevap geldi.
E
13 yıl
Binbaşı

quote:

Orijinalden alıntı: garui

quote:

Orijinalden alıntı: espanolun

teşekkürler, bir ikiz düzeltme ile işimi çözdüm...
bir soru daha var aslında..

soru: textbox'tan bir string alıyoruz...örneğin KELEBEK olsun..(listboxa bunun her karakterini sırayla atıyoruzz ama snucta bir kelebek şekl çıkacak biçimde..altta görüntü ekledim.
kelebegin sol kanadını yaptım ama sağ kanadını yapamadım.



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

Sol kanadin nerede goster icine ekleniverir sag kanat :)

alttaki kod ile sol kanadı oldu ama sağ olmadı

  
private void btnKelebek_Click(object sender, EventArgs e)
{
string yazi = txtYazi.Text;
string c = "";

for (int i = 0; i < yazi.Length; i++)
{
for (int j = 0; j <= i; j++)
{
c = yazi.Substring(0, j + 1).ToString();
}

lsbListe.Items.Add(c);

string[] ters1 = new string[yazi.Length];
for (int k = 0; k < yazi.Length; k++)
{
ters1[k] = c;
}
c = "";
}


for (int i = 0; i < yazi.Length; i++)
{
for (int j = 0; j < yazi.Length-i; j++)
{
c = yazi.Substring(0, j).ToString();
}
lsbListe.Items.Add(c);
c = "";
}
}


Bu mesaja 1 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: espanolun
  
private void btnKelebek_Click(object sender, EventArgs e)
{
string yazi = txtYazi.Text;
string c = "";

for (int i = 0; i < yazi.Length; i++)
{
for (int j = 0; j <= i; j++)
{
c = yazi.Substring(0, j + 1).ToString();
}

lsbListe.Items.Add(c);

string[] ters1 = new string[yazi.Length];
for (int k = 0; k < yazi.Length; k++)
{
ters1[k] = c;
}
c = "";
}


for (int i = 0; i < yazi.Length; i++)
{
for (int j = 0; j < yazi.Length-i; j++)
{
c = yazi.Substring(0, j).ToString();
}
lsbListe.Items.Add(c);
c = "";
}
}

Ne yazikki C# bilgim yoktur.

Ama boyle bir sekilde olmuyor mu bu is ?

 
private void btnKelebek_Click(object sender, EventArgs e)
{
string yazi = txtYazi.Text;
string c = "";

for (int i = 0; i < yazi.Length; i++)
{
c = yazi.Substring(0, i+1).ToString();
c += new string (' ', yazi.Length-(i+1))*2);
c += yazi.Substring(yazi.Length-(i+1),(i+1)).ToString();
lsbListe.Items.Add(c);
}

//ALT tarafi unutmusum.
for (int i = yazi.Length-2; i >= 0; i--)
{
c = yazi.Substring(0, i+1).ToString();
c += new string (' ', yazi.Length-(i+1))*2);
c += yazi.Substring(yazi.Length-(i+1),(i+1)).ToString();
lsbListe.Items.Add(c);
}
}





< Bu mesaj bu kişi tarafından değiştirildi garui -- 16 Ocak 2013; 16:30:04 >

-
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: espanolun

teşekkürler, bir ikiz düzeltme ile işimi çözdüm...
bir soru daha var aslında..

soru: textbox'tan bir string alıyoruz...örneğin KELEBEK olsun..(listboxa bunun her karakterini sırayla atıyoruzz ama snucta bir kelebek şekl çıkacak biçimde..altta görüntü ekledim.
kelebegin sol kanadını yaptım ama sağ kanadını yapamadım.



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

Ben konsol uygulaması olarak yaptım sen form uygulamasına göre uyarlarsın.
Burada yaparkan ilk K'yı yaparkan karşısındakini de yapman gerekir.

 
string yazi = "KELEBEK";

// KELEBEK'in üst tarafı
for(int i = 0; i < yazi.Length; i++)
{
// Sol taraf
for(int j = 0; j <= i; j++)
{
Console.Write(yazi[j]);
}
// Karsisini yapmak icin gerekli bosluklar
for(int k = 0; k < (yazi.Length - 1) * 2 - 2 * i; k++)
Console.Write(" ");

// Karsi taraf(sag)
for(int j = i; j >= 0; j--)
{
Console.Write(yazi[j]);
}
Console.WriteLine();
}
// KELEBEK'in alt tarafı
for(int i = yazi.Length - 2; i >= 0; i--)
{
for(int j = 0; j <= i; j++)
{
Console.Write(yazi[j]);
}
for(int k = 0; k < (yazi.Length - 1) * 2 - 2 * i; k++)
Console.Write(" ");

for(int j = i; j >= 0; j--)
{
Console.Write(yazi[j]);
}
Console.WriteLine();
}



Daha iyi ve kısa bir yöntemi olabilir şimdilik benim aklıma gelen bu.





< Bu mesaj bu kişi tarafından değiştirildi -Source- -- 16 Ocak 2013; 16:13:23 >
Bu mesaja 1 cevap geldi.
E
13 yıl
Binbaşı

çok teşekkür ederim....consloda tam istediğim gibi....forma çevireyim hemen...



S
12 yıl
Çavuş

quote:

Orijinalden alıntı: Seviyeli Yarbay

#include <iostream>
using namespace std;
int main()
{
cout << “Merhaba Bu Ilk Programimiz” << endl;
return 0;
}

bunun neresi hatalı

Hatan yok, sonuna programi durduracak bir fonksiyon eklememissin program calisiyor ama senin goremeyecegin bir hizda kapaniyodur. cstdlib kutuphanesini include edip system("pause") fonksiyonunu cagir, sen entere basana kadar uygulama bekler. Veya conio.h kutuphanesini ekleyip getch() fonksiyonunu cagir program sen herhangibir tusa basana kadar beklesin



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

S
12 yıl
Yarbay

@serkat çok teşekkür ederim.

bir de genel bi şey sormak istiyorum, arkadaşlar bizim bi hesap makinesi ödevi vardı program istenilen şekilde çalışıyor fakat ödevde istenilen class oluşturma, prototip, kaynak kodu gibi ifadeler var ve ben bilmiyorum.

ben bu class mantığını en iyi şekilde nasıl öğrenebilirim ve class eklerken programda ciddi değişiklikler yapmam gerekecek mi?





< Bu mesaj bu kişi tarafından değiştirildi Seviyeli Yarbay -- 17 Ocak 2013; 21:46:15 >

< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 2 cevap geldi.
R
12 yıl
Yüzbaşı

arkadaşlar bazı merak ettiğim şeyler var daha yeni sayılırım C'de.

Birincisi return ile değişkeni döndürmenin tam olarak manası ne? Döndürme derken nasıl döndürüyor yani? Bir de Pointerlarla ilgili aklıma bir şey takıldı. int *ptr şeklinde pointerı tanımlıyoruz örneğin daha sonra ptr = &x diyoruz x'in adresini tutması için bunun yerine direk &x i kullansak programda ne farkı var?


Bu mesaja 1 cevap geldi.
C
12 yıl
Onbaşı

quote:

Orijinalden alıntı: -Source-

quote:

Orijinalden alıntı: espanolun

selamlar, c# ta yeni sayılırım. bir ödev var. ödev şu textbox'tan aldığımız bir sayının 11'e tam bölünüp böülenemdiğini bulacağız.

11'e bölünebilme kuralı, sayının son rakamından başlayarak bunları+,-,+,- olarak işaretlendirmek ve sonrasında bunları toplama..eğer sıfır ve 11 in katıs ise tam bölünür.

nasıl yapabiliriz. aldığım string uzunluguna göre dizi yaptım. ama sndan başlayıp nasıl bir for döngüsü ile +,- olarak alıancak bunlar.. şimdiden teşerkküler

Sayımız 152347 olsun. Ve senin bunu aşağıdaki gibi diziye attığını varsayıyorum.
Kod açık ama flag kısmını açıklayım.
Döngüye ilk girdiğinde flag = false bu yüzden else düşecek ve flag'ı true yapacak. Yani 7'e bir nevi + koymuş olduk. Şimdi sıra 4'e - koymada. 2. döngüde flag = true bu yüzden if'e girdik içindeki değeri -1 ile çarptık. Böylece bir onu da - ledik ve flag'ı false yaptık. Bir sonraki for'un dönüşünde else düşüp 3'ü + olarak işaretmesi için. Ve böyle devam ediyor.
Sonra foreach ile dizideki sayıları toplattım. Sen sonra bu toplamın 11 in katı olup olmadıgına bakacaksın.
int[] dizi = new int[6] {1,5,2,3,4,7 };
bool flag = false; // False ise + gelecek, True ise -

for(int i = dizi.Length - 1; i >= 0; i--)
{
if(flag)
{
dizi *= -1;
flag = false;
}
else
flag = true;
}

int toplam = 0;
foreach(int sayi in dizi)
toplam += sayi;

Zorunluluk mu var 11'e bölünebilme kuralını uygulama ile :D

 
if (sayi%11==0)
{
sayı tam bölünür
}
else
{
bölünmez
}


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

quote:

Orijinalden alıntı: Conqueror42

arkadaşlar bazı merak ettiğim şeyler var daha yeni sayılırım C'de.

Birincisi return ile değişkeni döndürmenin tam olarak manası ne? Döndürme derken nasıl döndürüyor yani? Bir de Pointerlarla ilgili aklıma bir şey takıldı. int *ptr şeklinde pointerı tanımlıyoruz örneğin daha sonra ptr = &x diyoruz x'in adresini tutması için bunun yerine direk &x i kullansak programda ne farkı var?

return geri dönüş değeri olarak tanımlanır. Örneğin siz bir fonksiyon tanımladığınızda, misal:


x sayısının faktöriyelini belirleyen bir fonksiyon olsun.

Fonksiyon x değerini parametre olarak alır, içerisinde işlemler yapar, ve x! değerini geri döndürür. main fonksiyonu içerisinde bu fonksiyonu çağırdığımızda gerekli işlemi yaptıktan sonra istediğimiz değeri bize yollar.

C#'ta referans ve değer tipleri için konuşuyorum. Değer tipleri belleğin stack bölgesi dediğimiz alanda tutulurlar, değeri taşır. Hızlıca erişmek mümkündür. Referans türleri ise veri yerine adresi bellekte tutar ve o adresin gösterildiği yerde de veri tutulur.



M
12 yıl
Yüzbaşı

quote:

Orijinalden alıntı: Seviyeli Yarbay

@serkat çok teşekkür ederim.

bir de genel bi şey sormak istiyorum, arkadaşlar bizim bi hesap makinesi ödevi vardı program istenilen şekilde çalışıyor fakat ödevde istenilen class oluşturma, prototip, kaynak kodu gibi ifadeler var ve ben bilmiyorum.

ben bu class mantığını en iyi şekilde nasıl öğrenebilirim ve class eklerken programda ciddi değişiklikler yapmam gerekecek mi?

class'lar sınıflardır. Bunlar programı daha kolay kılmak için programı parçacıklara ayırmaktır. Aksine işi daha da kolaylaştırır. Belirli işlemleri yapacak classlar tanımlarsınız, programı dallandırırsınız yani. Karmaşık programları bir bütün olarak yapmak yerine, parçalar halinde yaparak birleştirirsiniz.



-
12 yıl
Yüzbaşı

quote:

Orijinalden alıntı: celalettin1286

quote:

Orijinalden alıntı: -Source-

quote:

Orijinalden alıntı: espanolun

selamlar, c# ta yeni sayılırım. bir ödev var. ödev şu textbox'tan aldığımız bir sayının 11'e tam bölünüp böülenemdiğini bulacağız.

11'e bölünebilme kuralı, sayının son rakamından başlayarak bunları+,-,+,- olarak işaretlendirmek ve sonrasında bunları toplama..eğer sıfır ve 11 in katıs ise tam bölünür.

nasıl yapabiliriz. aldığım string uzunluguna göre dizi yaptım. ama sndan başlayıp nasıl bir for döngüsü ile +,- olarak alıancak bunlar.. şimdiden teşerkküler

Sayımız 152347 olsun. Ve senin bunu aşağıdaki gibi diziye attığını varsayıyorum.
Kod açık ama flag kısmını açıklayım.
Döngüye ilk girdiğinde flag = false bu yüzden else düşecek ve flag'ı true yapacak. Yani 7'e bir nevi + koymuş olduk. Şimdi sıra 4'e - koymada. 2. döngüde flag = true bu yüzden if'e girdik içindeki değeri -1 ile çarptık. Böylece bir onu da - ledik ve flag'ı false yaptık. Bir sonraki for'un dönüşünde else düşüp 3'ü + olarak işaretmesi için. Ve böyle devam ediyor.
Sonra foreach ile dizideki sayıları toplattım. Sen sonra bu toplamın 11 in katı olup olmadıgına bakacaksın.
int[] dizi = new int[6] {1,5,2,3,4,7 };
bool flag = false; // False ise + gelecek, True ise -

for(int i = dizi.Length - 1; i >= 0; i--)
{
if(flag)
{
dizi *= -1;
flag = false;
}
else
flag = true;
}

int toplam = 0;
foreach(int sayi in dizi)
toplam += sayi;

Zorunluluk mu var 11'e bölünebilme kuralını uygulama ile :D

 
if (sayi%11==0)
{
sayı tam bölünür
}
else
{
bölünmez
}




Arkadaşım sana desem bilmiyorum. Sence öyle bir zorunluluk olsa neden kuralı uygulamayalım?


Bu mesaja 1 cevap geldi.
C
12 yıl
Onbaşı

quote:

Orijinalden alıntı: -Source-

quote:

Orijinalden alıntı: celalettin1286

quote:

Orijinalden alıntı: -Source-

quote:

Orijinalden alıntı: espanolun

selamlar, c# ta yeni sayılırım. bir ödev var. ödev şu textbox'tan aldığımız bir sayının 11'e tam bölünüp böülenemdiğini bulacağız.

11'e bölünebilme kuralı, sayının son rakamından başlayarak bunları+,-,+,- olarak işaretlendirmek ve sonrasında bunları toplama..eğer sıfır ve 11 in katıs ise tam bölünür.

nasıl yapabiliriz. aldığım string uzunluguna göre dizi yaptım. ama sndan başlayıp nasıl bir for döngüsü ile +,- olarak alıancak bunlar.. şimdiden teşerkküler

Sayımız 152347 olsun. Ve senin bunu aşağıdaki gibi diziye attığını varsayıyorum.
Kod açık ama flag kısmını açıklayım.
Döngüye ilk girdiğinde flag = false bu yüzden else düşecek ve flag'ı true yapacak. Yani 7'e bir nevi + koymuş olduk. Şimdi sıra 4'e - koymada. 2. döngüde flag = true bu yüzden if'e girdik içindeki değeri -1 ile çarptık. Böylece bir onu da - ledik ve flag'ı false yaptık. Bir sonraki for'un dönüşünde else düşüp 3'ü + olarak işaretmesi için. Ve böyle devam ediyor.
Sonra foreach ile dizideki sayıları toplattım. Sen sonra bu toplamın 11 in katı olup olmadıgına bakacaksın.
int[] dizi = new int[6] {1,5,2,3,4,7 };
bool flag = false; // False ise + gelecek, True ise -

for(int i = dizi.Length - 1; i >= 0; i--)
{
if(flag)
{
dizi *= -1;
flag = false;
}
else
flag = true;
}

int toplam = 0;
foreach(int sayi in dizi)
toplam += sayi;

Zorunluluk mu var 11'e bölünebilme kuralını uygulama ile :D

 
if (sayi%11==0)
{
sayı tam bölünür
}
else
{
bölünmez
}




Arkadaşım sana desem bilmiyorum. Sence öyle bir zorunluluk olsa neden kuralı uygulamayalım?

aslinda burda oop 'un boyle ogretilemeyecegi ile ilgili gonderme yapmistim ama neyse bosver.


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

quote:

Orijinalden alıntı: celalettin1286

quote:

Orijinalden alıntı: -Source-

quote:

Orijinalden alıntı: celalettin1286

quote:

Orijinalden alıntı: -Source-

quote:

Orijinalden alıntı: espanolun

selamlar, c# ta yeni sayılırım. bir ödev var. ödev şu textbox'tan aldığımız bir sayının 11'e tam bölünüp böülenemdiğini bulacağız.

11'e bölünebilme kuralı, sayının son rakamından başlayarak bunları+,-,+,- olarak işaretlendirmek ve sonrasında bunları toplama..eğer sıfır ve 11 in katıs ise tam bölünür.

nasıl yapabiliriz. aldığım string uzunluguna göre dizi yaptım. ama sndan başlayıp nasıl bir for döngüsü ile +,- olarak alıancak bunlar.. şimdiden teşerkküler

Sayımız 152347 olsun. Ve senin bunu aşağıdaki gibi diziye attığını varsayıyorum.
Kod açık ama flag kısmını açıklayım.
Döngüye ilk girdiğinde flag = false bu yüzden else düşecek ve flag'ı true yapacak. Yani 7'e bir nevi + koymuş olduk. Şimdi sıra 4'e - koymada. 2. döngüde flag = true bu yüzden if'e girdik içindeki değeri -1 ile çarptık. Böylece bir onu da - ledik ve flag'ı false yaptık. Bir sonraki for'un dönüşünde else düşüp 3'ü + olarak işaretmesi için. Ve böyle devam ediyor.
Sonra foreach ile dizideki sayıları toplattım. Sen sonra bu toplamın 11 in katı olup olmadıgına bakacaksın.
int[] dizi = new int[6] {1,5,2,3,4,7 };
bool flag = false; // False ise + gelecek, True ise -

for(int i = dizi.Length - 1; i >= 0; i--)
{
if(flag)
{
dizi *= -1;
flag = false;
}
else
flag = true;
}

int toplam = 0;
foreach(int sayi in dizi)
toplam += sayi;

Zorunluluk mu var 11'e bölünebilme kuralını uygulama ile :D

 
if (sayi%11==0)
{
sayı tam bölünür
}
else
{
bölünmez
}




Arkadaşım sana desem bilmiyorum. Sence öyle bir zorunluluk olsa neden kuralı uygulamayalım?

aslinda burda oop 'un boyle ogretilemeyecegi ile ilgili gonderme yapmistim ama neyse bosver.

Amaç algoritma mantığını geliştirmek olabilir. Bence güzel bir soru. Bir sonuca varılabilir, fakat çözüm mantığı bilinmeden benzer bir soru çözülemeyebilir. Olabildiğince zoru her zaman iyidir.


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

arkadaşlar c++ ödevim var hesap makinesi yapma.
ödevi aslında yaptım fakat class oluşturmam gerekiyormuş, en az 30 puan kırılacak ve ben nasıl oluşturulduğunu bilmiyorum. 2-3 saattir çalışıyorum fakat mantığını oturtamadım bi türlü uygulamaya koyamıyorum.

pazartesiye teslim etmem lazım, gerekirse internetten kopyala yapıştır yapacağım 0 almaktan iyidir.

tavsiye verebilecek, yardımcı olabilecek varsa çok memnun olurum.
aslında şu şekilde yazdım ama çeviremiyorum class'lı şekline.

 
#include <iostream>
using namespace std;
int main() {
float x,y,z;
cout<<"1. Sayi Degerini Giriniz : ";
cin>>x;
cout<<"2. Sayi Degerini Giriniz : ";
cin>>y;
cout<< "1-Toplama" << endl;
cout<< "2-Cikarma" << endl;
cout<< "3-Carpma" << endl;
cout<< "4-Bolme" << endl;
cout<<"Islem Turunu Giriniz : ";
cin>>z;
if (z<1 || z>4){
cout<<"Hata : 1-4 Arasi Bir Deger Giriniz";
}
if (z==1){
cout<<x+y;
}
if (z==2){
cout<<x-y;
}
if (z==3){
cout<<x*y;
}
if (z==4){
if(y==0){
cout<<"Tanimsiz";
}
else{
cout<<x/y;}
}
system( "PAUSE");
return 0;
}





< Bu mesaj bu kişi tarafından değiştirildi Seviyeli Yarbay -- 19 Ocak 2013; 16:29:45 >
Bu mesaja 1 cevap geldi.