arkadaşlar biraz c# bırakma bunalımını atlatıp tekrar devam ediyorum..
sorunum şu bir int dizim var içinda sayılar var bu sayıları bir metodla toplatıp sonucu almam lazım
aşağıda bir çalışma yaptım ama ancak static int değişken tanımlayarak alabildim....
dizinin toplamını return ile nasıl alırız
saygılarımla
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace dizi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int[] puanlar = new int[5];
private void button1_Click(object sender, EventArgs e)
{
//önce diziyi rakamlarla dolduralım
for (int i = 0; i < puanlar.Length; i++)
{
puanlar[i] = i;
}
//sonra diziyi komple metoda gönderelim
diziElemanlariniTopla(puanlar);
label1.Text = toplam.ToString();
}
static int toplam;
public void diziElemanlariniTopla(params int[] glnDizi)
{
toplam = glnDizi[0]+ glnDizi[1] + glnDizi[2] + glnDizi[3]+ glnDizi[4];
//return toplam;
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace dizi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int[] puanlar = new int[5];
private void button1_Click(object sender, EventArgs e)
{
//önce diziyi rakamlarla dolduralım
for (int i = 0; i < puanlar.Length; i++)
{
puanlar[i] = i;
}
//sonra diziyi komple metoda gönderelim
label1.Text =diziElemanlariniTopla(puanlar).tostring;
}
public void diziElemanlariniTopla(params int[] glnDizi)
{
int deger;
deger = glnDizi[0]+ glnDizi[1] + glnDizi[2] + glnDizi[3]+ glnDizi[4];
return deger;
}
}
}
denermisin olması gerek. ben deneyemedim
Alıntı Yappublic void diziElemanlariniTopla(params int[] glnDizi)
{
int deger;
deger = glnDizi[0]+ glnDizi[1] + glnDizi[2] + glnDizi[3]+ glnDizi[4];
return deger;
}
public void diye tanimli method nasil deger dondurur hocam, esyanin tabiyatina aykiri. Hata olmadan derliyebiliyormusun?
tam olarak yapmak istediğim bu
ama çalışmadı
mesaj birleştirme:: 03 Ekim 2012, 16:02:12
int diziElemanlariniTopla(params int[] glnDizi)
bu şekilde düzeltince çalıştı
çok teşekkürler
Hocam iyi yakalamışsın. Döndürülen değer ne olacak ? tabiki int.
public int diziElemanlariniTopla(params int[] glnDizi)
{
int deger;
deger = glnDizi[0]+ glnDizi[1] + glnDizi[2] + glnDizi[3]+ glnDizi[4];
return deger;
}
mesaj birleştirme:: 03 Ekim 2012, 16:04:24
Hacam Şu an makinada IDE olarak not defteri, Derleyici olarak BEN varım.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace dizi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int[] puanlar = new int[5];
private void button1_Click(object sender, EventArgs e)
{
//önce diziyi rakamlarla dolduralım
for (int i = 0; i < puanlar.Length; i++)
{
puanlar[i] = i;
}
//sonra diziyi komple metoda gönderelim
label1.Text = diziElemanlariniTopla(puanlar).ToString();
}
public int diziElemanlariniTopla(params int[] glnDizi)
{
int deger;
deger = glnDizi[0] + glnDizi[1] + glnDizi[2] + glnDizi[3] + glnDizi[4];
return deger;
}
}
}
çalışan hali çok teşekkürler devamına bir sorum daha var
dizi elemanlarını döngü ile toplattığımda hata alıyorum
public int diziElemanlariniTopla(params int[] glnDizi)
{
int deger;
for (int i = 0; i < glnDizi.Length; i++)
{
deger += (int)glnDizi[i]; //deger hata veriyor
}
//deger = glnDizi[0] + glnDizi[1] + glnDizi[2] + glnDizi[3] + glnDizi[4];
return deger;
}
saygılarımla
Forumsad Peki sana soru ? Maden Fonksiyonlar üzerinde çalışıyorsun.
a b c Adında kendine parametre olarak verilen bir fonksiyon a+1,b+2 ve c+4 olarak geri döndüren fonksiyonu yazabilirmisin.
sözde kod
BenimFonksiyon (int a,int b, int c)
{
return a+1
return b+2
retunn c+4
}
a=benimfonksiyon (2,4,8).a
b=benimfonksiyon (2,4,8).b
c=benimfonksiyon (2,4,8).c
gibi
mesaj birleştirme:: 03 Ekim 2012, 16:12:19
hata olarak ne veriyor. Bir fazla hatası gibi birşey mi ?
hocam verdiği hata
Use of unassigned local variable 'deger'
istediğiniz şekilde bir örnek yapıp koyacağım
saygılar
deger degiskeniz sifirlanmamis!
Tanimlandigi anda icinde herhangi bir deger olabilir.
Zaten aldiginiz mesajda onu soyluyor
Toplama yapmadan once (donguden once) deger'i sifirlamaniz lazim
muhittin_kaplan hocam
ancak bu şekilde bir şey yapabildim
private void button2_Click(object sender, EventArgs e)
{
int a=topla(2,3,4);
MessageBox.Show(a.ToString());
}
public int topla(int a, int b, int c)
{
int a1=a+1;
int b1=b+2;
int c1=c+4;
return a1;
}
mesaj birleştirme:: 03 Ekim 2012, 16:31:33
döngü içinde toplama sorunuda çözüldü
int deger = 0; olarak değiştirince hata vermeden çalıştı
çok teşekkürler
muhittin hocam sorunuzun cevabını yazarsanız öğrenmiş oluruz....
saygılarımla
Aslında soruyu sorarken C# ile VB.Net in yakın cevaplar olacağından yola çıkarak başlamıştım. Ama Anlamsız şekilde farklı çıktı. Aşağıdaki linkte C ile
#include<stdio.h>
typedef struct{
int integer;
float decimal;
char letter;
char string[100];
double bigDecimal;
}Composite;
typedef union{
int num;
char letter;
}Zip;
Composite example()
{
Composite C = {1,2.3,'a',"Hello World",45.678};
return C;
}
Zip example2()
{
Zip r;
r.num = 99;
r.letter = 'C';
return r;
}
int main()
{
Composite C = example();
Zip rar = example2();
printf("Values from a function returning a structure : { %d, %f, %c, %s, %f}",C.integer, C.decimal,C.letter,C.string,C.bigDecimal);
printf("\n\nValues from a function returning a union : { %d, %c}",rar.num,rar.letter);
return 0;
}
ile vb.net arasındaki benzerlik
Public Structure Student
Public Name As String
Public Age As Integer
Public GradePointAverage As Decimal
End Structure
Public Function GetStudent() as Student
Dim udtNew As Student
udtNew.Name = "Johny"
udtNew.Age = 12
udtNew.GradePointAverage = 3.5
Return udtNew
End Funtion
buda c# ama ben yapıdan birşey anlamadım
using System;
using System.Collections.Generic;
using System.Linq;
namespace ReturnMultipleValues
{
internal class Program
{
static void Main()
{
var minMax = MinMaxNum(new[] {4, 51, 1, -3, 3, 6, 8, 26, 2, 4});
int min = minMax.Item1;
int max = minMax.Item2;
Console.WriteLine("Min: {0}\nMax: {1}", min, max);
}
static Tuple<int,int> MinMaxNum(IEnumerable<int> nums)
{
var sortedNums = nums.OrderBy(num => num).ToArray();
return new Tuple<int, int>(sortedNums.First(), sortedNums.Last());
}
}
}
Kodların bir bölümü
http://rosettacode.org/wiki/Return_multiple_values#C (http://rosettacode.org/wiki/Return_multiple_values#C) alıntıdır.
@muhittin bey kodun C# da kısa olması LINQ den kaynaklanıyor. LINQ ile C# çok değişti, profesyonel programlama çok kolay hale geldi. Verdiğiniz örnekte Tuple<int, int> IEnumerable<int> gibi olaylar LINQ oluyor. Dizi işlemleri tek satırlık kod haline geliyor. Bildiğiniz ingilizce cümlecikler... Mesela:
int[] klasik_dizi = IEnumerable.Range(0, 100).ToArray<int>(); // 0 dan yüze bir dizi, ToArray ile geçiliyor
List<int> kareleri = (from sayi in klasik_dizi
where sayi < 50
select sayi * sayi).ToList<int>();
Burada farklı dizi türlerini kullandım. Bu kod önce 0 dan 100 e kadar tüm sayıları diziye alıyor, sonra 50 den küçük olan sayıların karelerini bir diziye yerleştiriliyor...
For ile yapılmış hali:
int[] klasik_dizi = new int[100];
for(int i = 0; i < 100; i++)
klasik_dizi = i;
int[] kareleri = new int[50];
for(int i = 0; i < 50; i++)
kareleri = klasik_dizi * klasik_dizi;
Not : burada kareler ilk aşamada oluşabilir, iyileştirilebilir, ama dizi farklı yerden gelmişte olabilir. O kısmı düşünmeyelim lütfen :)
Özetle verdiğiniz kod, C# içinde, aynen C deki gibi oluşturulabilir, ama kodu yazan programcılar yeni teknoloji LINQ den ve Lambda Expression lardan faydalanmışlar...
Hocam Genelde Algı (en azından bende öyle) .net dilleri arasında bariz farkların olmamasıdır. Örneği bu şekilde yazmaları kafamı karıştırmış araştırdığımda linq ya ulaşmıştım.
teşekkür ederim açıklama için.
Haklısınız hocam, netice de .Net dilleri ama bu aralar C# ın yapımcısı Microsoft, VB yi bırakmış ve C# üzerine yoğunlaşmış durumda. VB ve Basic temelli diller ( özelleşmiş türevler hariç ), C ( ve türevleri ) kadar yetenekli değiller. < Bilgim dahilinde konuşuyorum, yanlışsam düzeltin >. C# ın C yeteneklerini de kapsaması bir avantaj. Bu yetenek çatı özellikleriyle birleşince güzel bir dil ortaya çıkıyor. ( Bence ) Ve bana kalırsa VB.Net iyi bir çalışma değil. VB.Net; VB den çok C ye benziyor.
Haksız mıyım? VB yazarları beni yanlış anlamasın, sadece bilgim dahilinde yorum yapıyorum :)
İyi çalışmalar...
Hocam Aslında (Bu olaya Kadar ) c# c ye benzer, vb biraz daha ayrılır diyordum.