İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Ödev konusunda acil yardımlarınıza ihtiyacım var arkadaşlar bir el atın

redline25

0
İyinet Üyesi
Katılım
10 Nisan 2012
Mesajlar
18
Reaction score
0
Merhaba arkadaşlar bizim hoca bir ödev verdi kaç gündür kafa patlatıyorum fakat hep bir yerde hata yapıyorum galiba bir türlü sonunu getiremedim yardımcı olursanız çok sevinirim ödev kısaca şöyle:

Bilgisayar rastgele 4 basamaklı bir sayı tutar ve bizden de bir sayı girmemizi ister girdiğimiz sayının doğru basamağını aynen yazar küçük olanlar için artır anlamında + ve büyük olanlar için azalt anlamında - yazar ve bizde bu sayıyı böylece bulmaya çalışırız

Örneğin bilgisayar 4538 sayısı tutsun ve bizde 2561 girelim ekrana +5-+ yazar ve yeni sayıyı bekler ve biz de bu şekilde
bilgisayarın tuttuğu sayıyı buluruz

Arkadaşlar yardımlarınız emin olun çok makbule geçecek bu performans ödevi gibi birşey önemi fazla şimdiden sağolun yardımlarınız için :) :)
 

Utip

0
İyinet Üyesi
Katılım
3 Nisan 2012
Mesajlar
94
Reaction score
0
Sanırım ödevin c# ile ilgili, c#'ın sahibi microsoft gibi piyasanın tek hakimi zanneder gibi sorulmuş çünkü. Yoksa Java, JSP ve C# aynı yazım kuralları ile mi işliyor ?
 

Utip

0
İyinet Üyesi
Katılım
3 Nisan 2012
Mesajlar
94
Reaction score
0
4 tane değişken tanımla tam sayı olarak. sayıyı önce bine bölüp tam sayı değerini al. ikinci için ana sayıyı ilk sayı*1000 den çıkararak bul. Önce 4 hanenin 4'ünü de değişkenlere ata.

kullanıcının verdiği sayıyı da bu şekilde basamak basamak 4 farklı değişkene ata.

her basamak için değerler aynı mı büyük mü küçük mü kontrol et.

Burada önemli konu tam sayı kısmını alan komut özellikle 4,999999 sayısını bile 4 olarak alan cinsten olmalı.
 

redline25

0
İyinet Üyesi
Katılım
10 Nisan 2012
Mesajlar
18
Reaction score
0
Sanırım ödevin c# ile ilgili, c#'ın sahibi microsoft gibi piyasanın tek hakimi zanneder gibi sorulmuş çünkü. Yoksa Java, JSP ve C# aynı yazım kuralları ile mi işliyor ?
öyle bir iddam yok bölümün sadece c# için olduğunu zannedip açmıştım konuyu sonradan farkettim kusura bakmayın
 

redline25

0
İyinet Üyesi
Katılım
10 Nisan 2012
Mesajlar
18
Reaction score
0
4 tane değişken tanımla tam sayı olarak. sayıyı önce bine bölüp tam sayı değerini al. ikinci için ana sayıyı ilk sayı*1000 den çıkararak bul. Önce 4 hanenin 4'ünü de değişkenlere ata.

kullanıcının verdiği sayıyı da bu şekilde basamak basamak 4 farklı değişkene ata.

her basamak için değerler aynı mı büyük mü küçük mü kontrol et.

Burada önemli konu tam sayı kısmını alan komut özellikle 4,999999 sayısını bile 4 olarak alan cinsten olmalı.

sağolun ben her basamağı 4 elemanlı bir diziye aktarmaya çalışıyordum birde böyle deneyeyim
 

Utip

0
İyinet Üyesi
Katılım
3 Nisan 2012
Mesajlar
94
Reaction score
0
Diziye atamak ile benim dediğim arasında herhangi bir fark olmaz aslında. Bu tarz programlarda, her aşamada değişkenlerin değerlerini ekrana bir açıklama ile yazdırırsan arada değişkenleri görerek hatalarını da kolaylıkla bulabilirsin. Sonuca ulaşamamışsan, programını buraya pastelersen, yardımcı olmaya çalışırım.
 

redline25

0
İyinet Üyesi
Katılım
10 Nisan 2012
Mesajlar
18
Reaction score
0
Diziye atamak ile benim dediğim arasında herhangi bir fark olmaz aslında. Bu tarz programlarda, her aşamada değişkenlerin değerlerini ekrana bir açıklama ile yazdırırsan arada değişkenleri görerek hatalarını da kolaylıkla bulabilirsin. Sonuca ulaşamamışsan, programını buraya pastelersen, yardımcı olmaya çalışırım.
Benim sorunum çıktıyı bir kez aldıktan sonra döngüyü devam ettirememem yani tekrardan sayı girilmesini istemek ve tekrardan ekrana benzer şeyleri basmak burada mantık hatası yapıyorum galiba kodlar şu şekilde bu arada consol application ile yapıyorum:
 

Utip

0
İyinet Üyesi
Katılım
3 Nisan 2012
Mesajlar
94
Reaction score
0
int sayi2 = Convert.ToInt16(Console.ReadLine());

Sanırım sayıyı buradaki komut ile klavyeden çekiyorsun. Bu sayıyı en üstte değil de. Bir koşullu döngü aç koşul oluşana kadar dönsün. Bir karmaşa yaratarak çözüme ulaşayım, sen düzgün bir hale getirirsin istersen.


Random r = new Random();
int sayi1 = r.Next(1000, 10000);

int[] gecici1 = new int[4]; int[] gecici2 = new int[4];
string deger1 = sayi1.ToString();


for (int k =0; k <1; k++)
{
k--;

int sayi2 = Convert.ToInt16(Console.ReadLine());
string deger2 = sayi2.ToString();

for (int a = 0; a < 4; a++)
{

gecici1[a] = Convert.ToInt16(deger1[a].ToString());
gecici2[a] = Convert.ToInt16(deger2[a].ToString());
}

for (int a = 0; a < 4; a++)
{
if ((gecici1[0] != gecici2[0]) || (gecici1[1] != gecici2[1]) || (gecici1[2] != gecici2[2]) || (gecici1[3] != gecici2[3]))
{

if (gecici1[a] > gecici2[a])
{
gecici2[a] = Convert.ToChar('+');
Console.Write(Convert.ToChar(gecici2[a]));
}
else if (gecici1[a] < gecici2[a])
{
gecici2[a] = Convert.ToChar('-');
Console.Write(Convert.ToChar(gecici2[a]));
}
else
{
k=7;
Console.Write(Convert.ToString(gecici2[a]));
}

}

}
}
Console.ReadLine();


................................
Şayet tek sorun tekrar tekrar sordurmak ise bu bile çözüm olur sanırım. her seferinde a değişkenini "int" diye tanımayıp durmak sorun çıkarabilir, "k--;" ve "k=7" diye yazdıklarım c# için uyumlu değilse onu da düzeltirsin.
 

Utip

0
İyinet Üyesi
Katılım
3 Nisan 2012
Mesajlar
94
Reaction score
0
tabi

gecici1[a] = Convert.ToInt16(deger1[a].ToString());

Bunu en başta bir döngüye bağlayıp tanımlayarak, her seferinde tekrar tekrar tanımlamazsan cpu sevinir :) (benim k döngüsünden önce) gecici2 için yapılan işlem k döngüsünün içinde olsun.
 

redline25

0
İyinet Üyesi
Katılım
10 Nisan 2012
Mesajlar
18
Reaction score
0
int sayi2 = Convert.ToInt16(Console.ReadLine());

Sanırım sayıyı buradaki komut ile klavyeden çekiyorsun. Bu sayıyı en üstte değil de. Bir koşullu döngü aç koşul oluşana kadar dönsün. Bir karmaşa yaratarak çözüme ulaşayım, sen düzgün bir hale getirirsin istersen.


Random r = new Random();
int sayi1 = r.Next(1000, 10000);

int[] gecici1 = new int[4]; int[] gecici2 = new int[4];
string deger1 = sayi1.ToString();


for (int k =0; k <1; k++)
{
k--;

int sayi2 = Convert.ToInt16(Console.ReadLine());
string deger2 = sayi2.ToString();

for (int a = 0; a < 4; a++)
{

gecici1[a] = Convert.ToInt16(deger1[a].ToString());
gecici2[a] = Convert.ToInt16(deger2[a].ToString());
}

for (int a = 0; a < 4; a++)
{
if ((gecici1[0] != gecici2[0]) || (gecici1[1] != gecici2[1]) || (gecici1[2] != gecici2[2]) || (gecici1[3] != gecici2[3]))
{

if (gecici1[a] > gecici2[a])
{
gecici2[a] = Convert.ToChar('+');
Console.Write(Convert.ToChar(gecici2[a]));
}
else if (gecici1[a] < gecici2[a])
{
gecici2[a] = Convert.ToChar('-');
Console.Write(Convert.ToChar(gecici2[a]));
}
else
{
k=7;
Console.Write(Convert.ToString(gecici2[a]));
}

}

}
}
Console.ReadLine();


................................
Şayet tek sorun tekrar tekrar sordurmak ise bu bile çözüm olur sanırım. her seferinde a değişkenini "int" diye tanımayıp durmak sorun çıkarabilir, "k--;" ve "k=7" diye yazdıklarım c# için uyumlu değilse onu da düzeltirsin.

burada acaba neden k=7 dediniz program çalışıyor ama sanırım 7 tane sayı girildikten sonra kapanıp hata veriyor ben bilgisayarın tuttuğu sayıyı bulana kadar devam etmesini istiyorum böylece deneme sayısınıda bulmam lazım acaba while döngüsümü kullanmalıyım daha önce kullandım fakat döngü bittiğinde tekrar sayi2 yi girdiriyorum ama program sonlanıyor biraz karışık oldu ama kusura bakmayın olmazsa yazıp öyle vereyim :):)
 

Utip

0
İyinet Üyesi
Katılım
3 Nisan 2012
Mesajlar
94
Reaction score
0
Orada sayıyı salladım sadece while komutu nasıl işler bilmediğimden, for döngüsünü bitirmek için oradaki değer olan k<1 değerine uygun sallama bir sayı oldu. Başka bir amacı yoktu. while döngüsü ile gönderirsen, oradan daha net bir sonuca ulaşabiliriz.

Programı yanlış anlamışım.

if ((gecici1[0] != gecici2[0]) || (gecici1[1] != gecici2[1]) || (gecici1[2] != gecici2[2]) || (gecici1[3] != gecici2[3]))

Ben bunun else'sine k=7 demek istemiştim. While döngüsü gibi çalışsın diye. bu hali ile rakamlardan sadece birini bulduğunda döngü bitiyor. :(

Sanırım alttan iki tane } yukarı çıkıp else k=7 dersen sorunsuz çalışır. while ile tabiki daha sağlıklı olur. while döngüsünü de oradan koparabilirsin.
}
else {K=7;}
}
}
Console.ReadLine();
 

redline25

0
İyinet Üyesi
Katılım
10 Nisan 2012
Mesajlar
18
Reaction score
0
Orada sayıyı salladım sadece while komutu nasıl işler bilmediğimden, for döngüsünü bitirmek için oradaki değer olan k<1 değerine uygun sallama bir sayı oldu. Başka bir amacı yoktu. while döngüsü ile gönderirsen, oradan daha net bir sonuca ulaşabiliriz.

Programı yanlış anlamışım.

if ((gecici1[0] != gecici2[0]) || (gecici1[1] != gecici2[1]) || (gecici1[2] != gecici2[2]) || (gecici1[3] != gecici2[3]))

Ben bunun else'sine k=7 demek istemiştim. While döngüsü gibi çalışsın diye. bu hali ile rakamlardan sadece birini bulduğunda döngü bitiyor. :(

Sanırım alttan iki tane } yukarı çıkıp else k=7 dersen sorunsuz çalışır. while ile tabiki daha sağlıklı olur. while döngüsünü de oradan koparabilirsin.
}
else {K=7;}
}
}
Console.ReadLine();
peki ilginiz için çok sağolun :)
 

Utip

0
İyinet Üyesi
Katılım
3 Nisan 2012
Mesajlar
94
Reaction score
0
Java olsa yazar kontrol de eder gönderirdim. Yardımcı olabilseydim keşke :)
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst