Yardım edin arkadaşlar ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Driver
Üye
Mesajlar: 4
Kayıt: 11 Kas 2010 01:30

Yardım edin arkadaşlar ?

Mesaj gönderen Driver »

1-Dışardan girilen bir cümle’nin içindeki boşlukların sayısını bulan program

program bossayisi;
uses crt;
var
kelime tring;
uzunluk,i,bossayi:integer;
begin
clrscr;
write('Kelimeyi giriniz :');
readln(kelime);
uzunluk:=length(kelime);
for i:=1 to uzunluk do
if (kelime=' ')or(kelime=' ') then
bossayi:=bossayi+1;
write('Kelimedeki bos harfi adedi :',bossayi);
readkey;
end.


2-Dışardan girilen bir metnin içindeki kelimelerin ilk harflerini ekrana yazdıran programı yazınız ?

Uses crt;
Var
yazi:string;

Begin
clrscr;
write('Yazıyı girin = ');read(yazi);

Procedure ilkharf;
begin
clrscr;
writeln('Girilen yazının ilk harfi = ',copy(yazi,0,1));
end;

ilkharf;

readln(yazi);
end.

3-Dışardan girilen bir metni tersten büyüterek yazdıran programı yazınız ?

Uses crt;
Var
Ad:string; s,adet:byte;
Begin
Clrscr;
Write(‘adınızı giriniz’);
Readln(Ad);
Adet:=length(Ad);
For s:=adet downto 1 do
Write (Ad[s]);
Readln;
End.

4-Bilgisayarda bir tahmin oyunu yazılacaktır.Oyun şöyledir bilgisayar rastgele bir sayı üretecek kullanıcı bu üretilen sayıyı bilmeye çalışacak.Kullanıcı kendi tahminlerinin girdikçe bilgisayar kullanıcıyı ‘küçük sayı girdiniz’,’büyük sayı girdiniz’,’Bildiniz’ şeklinde uyaracak.Sonuçta kullanıcı sayıyı kaç tahminde bilmişse ekrana yazılacak.

uses crt;

hak,tah,max,t,x:integer;

x:integer;

begin

clrscr;

write^('hak sayısını giriniz:');readln(hak);

write('maximum sınırı giriniz:');readln(max);

randomize;

t:=random(max);

for x:=1 to hak do begin

write(x,'.sayıyı giriniz:');readln(tah);

if t=tah then begin write('kazandınız...');readln;halt;end;

if t>tah then write('daha büyük sayı giriniz:');

if t<tah then write('daha küçük sayı giriniz:');

end;

readln;

end.

Arkadaşlar programı yaptım ama test etmeye fırsatım olmadı çünkü delphi programı yok sizce doğrumu arkadaşlar ?
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Yardım edin arkadaşlar ?

Mesaj gönderen mkysoft »

lazarus kurup test edebilirsiniz.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Yardım edin arkadaşlar ?

Mesaj gönderen aslangeri »

s.a.
öncelikle sorunun başlığını düzenlersen sevinirim.
delphin olsada olmaz.bunlar delphi değil pascal kodları.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
The_aLiEn
Üye
Mesajlar: 28
Kayıt: 09 Kas 2010 02:35
Konum: Trabzon
İletişim:

Re: Yardım edin arkadaşlar ?

Mesaj gönderen The_aLiEn »

Delphi, pascalın üzerine kurulmuş bir dildir. Projeyi VCL Application değil de Console Application olarak açarsanız kodları çalıştırabilirsiniz... Benzer durum C kodlarını C++ Builder üzerinde koşmak için de geçerlidir...

Hızlıca göz gezdirdiğim kadarıyla:

* Boş sayısı bulma programı çalışacaktır. Yalnız "if (kelime=' ')or(kelime=' ') then" if içerisinde aynı durumu neden kontrol ettiriyorsunuz ki? "if kelime=' ' then yeterli olacaktır. Ve bir de sayicini sıfırlaman lazım başta ( bossayi:=0; ). Rastgele bir sonuç çıkabilir... Ayrıca Pos fonksiyonu ile daha hızlı çalışacak bir mantık kurulabilir. Pos içeriğini incelemedim ( şu an ona bakmak için ide yi açıyorum ) ama tüm string i teker teker gezmekten daha hızlı bir sonuç üreteceğini düşünüyorum.

* Kelimelerin ilk harflerini bulan programda bazı hatalarınız var, hem yazım olarak hem de mantık olarak. Öncelikle ilkharf prosedürünüzü ana programın begin-end bloğu içinden dışarı alın... İkincil olarak da ilk harf kodunuzu düzeltmeniz gerekli, cümlenin ilk harfini bulur sadece, cümle içindeki tüm kelimelerin ilk harflerini değil. Bunun için bir önceki programınızdaki boşluk bulma olayından faydalanabilirsiniz.

* Tersten yazdırma programınızda da ufak bir ekleme yapabilirsiniz. Evet tersten yazdırıyor ama karakterleri büyük harfe çevirmiyor. Write(Uppercase(Ad[s])); olarak düzenleyebilirsiniz ya da karakterlerin ASCII kodlarından faydalanabilirsiniz. a-z arası 97-122, A-Z arasının da 65-90 olduğundan faydalanabilirsiniz. Farkındaysanız bir karakterin küçük ile büyük hali arasında 32 kadar bir fark var ;) Bu durumu koda yansıtabilirsiniz.

if ((Ord(Ad[s]=>97) and (Ord(Ad[s]<=122)) then Ad[s]:=Chr(Ord(Ad[s])-32); gibi... Büyükten küçüğe çevirme durumunda ise şartları ters çevirip düzenleyin işte.. :)

* Son sorunuzda, sayı bulmaca, bir mantık hatası daha var. Siz hakları sınırlıyorsunuz, hakları sınırlamayın. İstenen kaç adet tahminde bulunulduğu zaten ;) Sonlanma şartınızı "hakkınız doldu" olarak değil "sayınız bulundu" olarak düzenleyin ;) Sade bir repeat-until ile bunu gerçekleyebilirsiniz...
Cevapla