Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Super basic C# sorularim


Korax

Öne çıkan mesajlar

  • 2 hafta sonra ...
Yine bi sorum var aradim ama bulamadim

Simdi söyle bi kodum var:

public void test(long indata)
{
string test = indata.ToString();
int testnr = int.Parse(test.Substring(10, 1));

if (testnr % 2 == 0)
{
Console.WriteLine("x");
}
else
{
Console.WriteLine("y");

}

}

ID number ile alakali bi test mekanizmasi yapiyorum.

Simdi gelen indata long'undaki 10. sayiyi okumam lazim. Gelen long'ui string'e dönusturup 10. karakteri okuyup, daha sonra o karakteri int olarak geri aliyorum.

Arada string'e dönusturmeden long'un icindeki 10. karakteri basit bi sekilde almanin yolu varmi? Yoksa 10. siradaki sayiyi illa string'e dönusturupmu almam lazim bu sekilde?
Link to comment
Sosyal ağlarda paylaş

bi sorum daha var

Simdi class'lerle ugrasiyoruz.

Person adinda bi class'im var. Kullanicinin istedigi kadar object eklemesini saglamak istiyorum. Yalniz object'leri loop ile turetmeye calisiyorum tabiki isim konusuna gelince siciyorum.

Console.Write("Kisi sayisi: ");
int p = int.Parse(Console.ReadLine());

for (int i = 0; i < p; i++)
{
person kisi = new person();

}

diyorum daha sonrasinda eklenecek kisilerin isimlerini kisi1, kisi2 diye gitmesini istiyorum ama bulamadim birturlu nasil yapacagimi. Surekli list vs array mevzulari var, bunu basit bi sekilde cözebilirmiyim acep?
Link to comment
Sosyal ağlarda paylaş

Person classının içinde string name gibi bi alan tutmak lazım. Person constructorı da bu alanı dolduracak.


class Person {

//burası constructor, nesne yaratılırken çağırılıyor
Person(String newName) {
name = newName;
}

public String name;

}

Objeyi yaratırken loop içinde:

String name = "kişi" + i
Person kişi = new Person(name);



Burda da problem loop içinde yarattığın "kişi" isimli refaransa loop dışında erişemezsin. Zaten erişsen bile sürekli üstüne yazılır, looptan çıkmadan son yaratılan adamı işaret eder. Dışarda bi array olması lazım, içerde yarattığın Person nesnelerini o arraye eklemelisin ki erişebilesin.
Link to comment
Sosyal ağlarda paylaş

Cözemedim bi turlu deliricem yav dsfs

Isim olayini dusundum ama söyle bisey var; kullanici kac kisi(nesne) eklenecegini seciyor önce, daha sonra isim yas ve adres bilgilerini dolduruyor. Dolayisiyla bastan name ile yaratirsam siciyo mantik direk.

Id ile yaratiyim dedim buseferde id'sine göre objelere nasil erisecegimi isim adres vs girecegimi cözemiyorum
Link to comment
Sosyal ağlarda paylaş

seele nin mantıkla yapacan işte. class ın mevzusu şu sen istersen ilk başta bütün parametrelerle tanımlayabiliyorsun veya ilk başta sadece obje olarak yaratıp daha sonra parametrelerini tanımlayabiliyorsun.
Person a = new Person();
Burda yeni obje yaratıyorsun ama aslında person class ın bir parametresini çagırıyorsun. bu parametre almayan default constructor. Sen ilk başta tanımlamadıysan bunu hata verir.
public Person () { birşeyler yap } diye person class ı içine bu fonksiyonu yazabiliyorsun. mesela herkesin dogrusu yer istanbul olsun dersen city = "istanbul" koyarsın direkt herkesin dogdugu yer istanbul olur.
Person a = new Person("seele","istanbul");
bunun çalışması için 2 parametreli constructor tanımlanması gerekli böylece tak diye bu degerleri atıyor.

ilk başta oluşturup sonradan degerleri atayacagım dersen for döngüsünde objeleri oluşturursun.
array.add(new Person());
diye. hiçbir bilgi olmasın dersen böyle boş gönderirsin. sonradan ikinci bir döngü kurarsın

for(0 den array size i kadar)
Person temp = array.get[counter];
temp.setName = "korax";

her objeyi alıp bir method çagırdık sonra yola devam ettik. class içinde setName diye bir method olması gerek tabi.
Link to comment
Sosyal ağlarda paylaş

Tesekkurler cevap icin, tamamini anladim yalniz tek takildigim kisim su;

Daha detayli bi sekilde anlatiyim.

Person class'inin icinde unik isimlerle loop icinde obje olusturmak istiyorum. Yani olusturdugum her kisinin adi, yasi ve adresi farkli olcak.

Yani array.add(new Person()); olarak yaparsam daha sonra tek tek bu kisilere nasil erisicem bunu tam bilmiyorum.

for(0 den array size i kadar)
Person temp = array.get[counter];
temp.setName = "korax";

ile hepsine ulasip ayni özelligi atayabiliyorum ama busefer hepsinin ismi ayni oluyo.

Soru su sekilde aslinda: "Person adinda bi class olustur, icinde name,age,adress olsun. Kullanici 3 adet person olustursun ve hepsinin ismini, adresini ve yasini girsin daha sonrada liste olarak göstersin"

Ben direk söyle bi mantikla gittim:


class Persons
{
//Person object id
public int id { get; set; }

//Persons name
public string name { get; set; }

//Persons adress
public string adress { get; set; }

//Persons age
public int age { get; set; }

}

class Program
{
static void Main(string[] args)
{
Console.Write("How many persons you want to add?: ");
int count = int.Parse(Console.ReadLine());

var newPersons = new List(count);

for (int i = 0; i < count; i++)
{
newPersons[i].id = i;

Console.Write("Write name for person " + i);
newPersons[i].name = Console.ReadLine();

Console.Write("Write age for person " + i);
newPersons[i].age = int.Parse(Console.ReadLine());

Console.Write("Write adress for person " + i );
newPersons[i].adress = Console.ReadLine();

}

Console.WriteLine("nPersons tName tAge tAdress");
for (int i = 0; i < count; i++)
{
Console.WriteLine("t" + newPersons[i].name + "t" + newPersons[i].age + "t" + newPersons[i].adress);
}

Console.ReadKey();
}
}


Sacmaladigim kisimlar olabilir buyuk ihtimalle, gece oturup yazmaya ugrastim baya hehe
Link to comment
Sosyal ağlarda paylaş


class Persons
{
//Person object id
public int id { get; set; }

//Persons name
public string name { get; set; }

//Persons adress
public string adress { get; set; }

//Persons age
public int age { get; set; }

public override string ToString() {
return "ID: " + id + " Name: " + name + "Age: " + age;
}

}

class Program
{
static void Main(string[] args)
{
Console.Write("How many persons you want to add?: ");
int cnt= int.Parse(Console.ReadLine());

List<person> cokperson = new List<person>();

for (int i = 0; i < cnt; i++)
{
Person temp = new Person()
temp.id = i;

Console.Write("Write name for person " + i);
temp.name = Console.ReadLine();

Console.Write("Write age for person " + i);
temp.age = int.Parse(Console.ReadLine());

Console.Write("Write adress for person " + i );
temp.adress = Console.ReadLine();
cokperson.add(temp);
}
foreach (Person goster in cokperson) {
Console.WriteLine(goster);
}



foreach ve list daha iyidir. burdan yürü derim.
cokperson[3].name = "Seele"; dersen ücüncüyü degistirirsin.
Link to comment
Sosyal ağlarda paylaş

Anladim suan galiba. Yani list yaratip, listin icine gecici isimler atayip, daha sonra list array seklinde ulasiyorum?

Peki

public override string ToString() {
return "ID: " + id + " Name: " + name + "Age: " + age;
}

bu ne icin?


edik 3-4 saate eve gecicem deneyim takilirsam yaziim tekrar

Edik2:


for (int i = 0; i < cnt; i++)
{
Person temp = new Person()
temp.id = i;

su kisimda simdi person class'inda temp adinda bitane nesne yaratiyoruz bunuda anladim.

Loop her gelisinde temp adinda bi nesne yaratiliyo id numarasi ile. Eger id numarasini burda atamazsak 3 kere ayni isimde sadece tek bir nesnemi olusturmus oluyoruz?
Yoksa id numarasini da atadigimiz icin 3 nesnemi olusturmus oluyoruz?

Takildigim kisim nesne ismi hep ayni oldugu icin sanki sadece tek bir nesne yaratmisiz gibi algiliyorum bunu, farkini tam anlayabilmis degilim
Link to comment
Sosyal ağlarda paylaş

Anladim, her bilgi gecici nesneye kaydediliyo o vakit, daha sonra önceden yarattigimiz arrayin icine atip kolayca kullanicinin degistirmesine izin verebiliyoruz yani. Cok sagolasin, okuyum dediklerini de tek tek, anlatmaya calisirken zirvaliyo olabilirim terimlerle mazur görun ögreniyorum yavas yavas :P

edit: bide hala sunu anlayamadim

public override string ToString() {
return "ID: " + id + " Name: " + name + "Age: " + age;
}

bu ne icin?
Link to comment
Sosyal ağlarda paylaş

Baska bi kafayi yeme seansiyla karsinizdayim sdf



namespace MelodiFestivalen
{
public class Artist : MusikBidrag
{

public string namn { get; set; }
public int fodelseAr { get; set; }
public string fodelseOrt { get; set; }


public override string ToString()
{
return "Namn: " + namn + " Födelse år: " + fodelseAr + " Födelse ort: " + fodelseOrt + "nBidrag: " + bidragTitel + " Bidrag längd: " + bidragLangd + " Poäng: " + bidragPoang + "nn";
}

}
public class MusikBidrag
{
public string bidragTitel { get; set; }
public double bidragLangd { get; set; }
public int bidragPoang { get; set; }

}

public class sortOnPoints : IComparer
{
public int Compare(MusikBidrag a, MusikBidrag b)
{
if (a.bidragPoang > b.bidragPoang) return 1;
else if (a.bidragPoang < b.bidragPoang) return -1;
else return 0;
}
}


class Program
{
static void Main(string[] args)
{
Console.WriteLine("Melodi Festivalennn");


int count = int.Parse(Interaction.InputBox("Hur många Artister och Bidrag vill du ha?"));

while (count != 2 && count < 2)
{
MessageBox.Show("Du kan inte ha mindre än 2 Artister/Bidrag");
count = int.Parse(Interaction.InputBox("Hur många Artister och Bidrag vill du ha?"));
}


List artister = new List();

for (int i = 0; i < count; i++)
{
Artist temp = new Artist();
temp.namn = Interaction.InputBox("Skriv in Artist nr " + (i + 1));
temp.fodelseAr = int.Parse(Interaction.InputBox("Skriv in födelse år för Artist nr " + (i + 1)));
temp.fodelseOrt = Interaction.InputBox("Skriv in adress för Artist nr " + (i + 1));
temp.bidragTitel = Interaction.InputBox("Skriv in bidrag titel för Artist nr " + (i + 1));
temp.bidragLangd = double.Parse(Interaction.InputBox("Hur långt är bidraget? (t.ex. 2,44)"));
artister.Add(temp);
}

MessageBox.Show("Tack! Nu är det dags att Rösta!");

for (int i = 0; i < count; i++)
{
artister[i].bidragPoang += int.Parse(Interaction.InputBox("Röstning tur 1nnHur många poäng vill du ge för Bidrag nr " + (i + 1) + " ?nn" + artister[i].namn + " - " + artister[i].bidragTitel));
}

for (int i = 0; i < count; i++)
{
artister[i].bidragPoang += int.Parse(Interaction.InputBox("Röstning tur 2nnHur många poäng vill du ge för Bidrag nr " + (i + 1) + " ?nn" + artister[i].namn + " - " + artister[i].bidragTitel));
}

for (int i = 0; i < count; i++)
{
artister[i].bidragPoang += int.Parse(Interaction.InputBox("Röstning tur 3nnHur många poäng vill du ge för Bidrag nr " + (i + 1) + " ?nn" + artister[i].namn + " - " + artister[i].bidragTitel));
}

sortOnPoints soa = new sortOnPoints();
artister.Sort(soa);

//How to write out visa method with all instances??


Console.ReadKey();
}
}
}


visa metodunu kullanarak yarattigim butun instanslari sonuc olarak messagebox'ta göstermek istiyorum, beceeremedim bi. Foreach ile command'de hepsini gösterebiliyorum ama messagebox'a ekleyemedim hepsini bi turlu. Tek bi string yaratip butun dönusleri alip tek stringi messageboxta yazdirmaya calistim ise yaramadi oda. Nasil bi yol izlemeliyim?
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...