merhabalar
bir string cümle düşünecek olursak ve bunun içerisinde kaç tane @ işareti olduğunu nasıl buluruz?
örnek : Kazim@ATES burada 1 adet @ işareti buldum diyebilmeli veya
Kazim@ATES@HAsan@ vs. burada ise 3 adet @ işareti buldum diyebilmeli.
tsk ederim.[/i]
bir string cümlede kaç tane @ işareti var?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Kolay:
'@'i de parametreye bağlamak lazım ama o zaman büyük-küçük harf durumu filan olacak, bu problem için boşuna çözümü yavaşlatacak...
Kolay gelsin.
Kod: Tümünü seç
function KacTane(Str: String): Integer;
var
i: Integer;
begin
Result := 0;
for i := 1 to length(Str) do //1'den String'in uzunluğuna kadar
if Str[i] = '@' then //i'ninci karakter '@' mi?
Result := Result + 1;
//İlginç, saymaya normalde hep 0'dan başlarız
//String'in karakterlerine bakarken böyle değil..
end;//KacTane
Kolay gelsin.
Selamlar,
ulucoder'in yazdığında ilgniç dediği konuya açıklık getireyim.
Pascal'dan gelen bir özelliktir bu, stringlerde ilk byte stringin size'ını verir.
Yani strDegisken[0] daime o stringin boyutunu verir.
Bu sebeple stringler 1'den başlar.
ulucoder'in yazdığında ilgniç dediği konuya açıklık getireyim.
Pascal'dan gelen bir özelliktir bu, stringlerde ilk byte stringin size'ını verir.
Yani strDegisken[0] daime o stringin boyutunu verir.

Bu sebeple stringler 1'den başlar.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Evet, String tiplerin Pascal'dan kalan özelliğidir ilk elemana 1'le erişmek. Sanırım buna uyum sağlamak için aynı gelenek sürdürülmüş. Bu noktada bir kaç ayrıntıya dikkat çekmek istiyorum.Kuri_YJ yazdı:Selamlar,
ulucoder'in yazdığında ilgniç dediği konuya açıklık getireyim.
Pascal'dan gelen bir özelliktir bu, stringlerde ilk byte stringin size'ını verir.
Yani strDegisken[0] daime o stringin boyutunu verir.![]()
Bu sebeple stringler 1'den başlar.
-Pascal'daki string tipine karşılık Delphide ShortString tipi bulunmaktadır ve [0]. indisi o değerin uzunluğunu verir.
-Delphinin String tipinin her ne kadar ilk indis numarası 1 olsa da bilginin bittiği yerde 0 bilgisi vardır ve uzunluk hesaplamada bu değere kadar sayım yapılmalıdır. Zaten maksimum uzunluk sınırı da teorik olarak 255 Byte değil 2 GB'tır.
-Varsayılan değeri {$H+} veya {$LONGSTRINGS ON} olan bildirimi tersine yaparsak yaptığımız string tipli tanımların hepsi ShortString (yani Pascal String'i

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
sürüm 2
Kod: Tümünü seç
function KacTane(Str: String;ch:char): Integer;
var
i: Integer;
begin
Result := 0;
for i := 1 to length(Str) do //1'den String'in uzunluğuna kadar
if Str[i] = ch then //i'ninci karakter '@' mi?
Result := Result + 1;
end;//KacTane
Kod: Tümünü seç
a:=kactane('bu bir deneme metnidir','a');
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
@Kuri_YJ ve @sabanakman, bilgiler için teşekkürler, hoş oldu : )
@ikutluay, '@'i de parametreye bağlamak lazım ama o zaman büyük-küçük harf durumu filan olacak, bu problem için boşuna çözümü yavaşlatacak... demiştim zaten ama aklıma case sensitive özelliği ekleyebileceğim ve bu çözümü yavaşlatmayacak bi fonksiyon geldi, onu da yazalım tam olsun di mi =)
Yok mu arttıran
Kolay gelsin...
@ikutluay, '@'i de parametreye bağlamak lazım ama o zaman büyük-küçük harf durumu filan olacak, bu problem için boşuna çözümü yavaşlatacak... demiştim zaten ama aklıma case sensitive özelliği ekleyebileceğim ve bu çözümü yavaşlatmayacak bi fonksiyon geldi, onu da yazalım tam olsun di mi =)
Kod: Tümünü seç
function KacTane(Str: String; Ch: Char; CaseSensitive: Boolean);
var
i: Integer;
begin
if not CaseSensitive then
begin
Str = AnsiUpperCase(Str);
Ch = AnsiUpperCase(Ch);
end;
//Bilgisayara göre A, a farklı şeyler ama
//ama biz aynı olsun isteyebiliriz
Result := 0;
for i := 1 to length(Str) do //1'den String'in uzunluğuna kadar
if Str[i] = Ch then //i'ninci karakter '@' mi?
Result := Result + 1;
end;//KacTane

Kolay gelsin...