Arama butonu
Bu konudaki kullanıcılar: 1 misafir
7
Cevap
486
Tıklama
0
Öne Çıkarma
Delphi Ödev
O
4 yıl
Onbaşı
Konu Sahibi

Merhaba iyi günler delphi için ödevim bir çok yerde araştırdım fakat bu kadar ayrıntılı bulamadım yardımcı olursanız çok sevinirim


Soru1: Form aşağıda görülen şekilde tasarlanmıştır.
ü< Resime gitmek için tıklayın >
a. Kişilerin Vücut kitle indeksini hesaplayıp, ilgili hücreye yazdıran kodu yazınız ve kodları açıklayınız. (Vücut kitle indeksi (VKİ), vücut ağırlığının (kg), boy uzunluğunun metre cinsinden karesine bölünmesiyle hesaplanır. Vücut Kitle İndeksi (VKİ) = Vücut Ağırlığı (kg) / (Boy Uzunluğunun Karesi)(10Puan)
b. Kişilerin ağırlıklarının Harmonik Ortalamasını bulan ve sonucu mesaj olarak veren kodu yazınız ve kodları açıklayınız.(10Puan)
c. Hesaplanan Vücut kitle indeksini göz önünde bulundurarak Sınıflandırma kısmını VKİ Sınıflandırma 20.0’den küçük Zayıf 20.0-24.9 Normal 25.0-29.9 Hafif şişman 30.0 ve üstü Şişman olacak şekilde, her kişi için ilgili hücreye yazdırınız ve kodları açıklayınız. (10Puan)
d. En butonuna basıldığında, En ağır (ağırlık değeri en büyük olan) olan kişiLERin isim, ağırlık, boy, vki ve sınıflandırma değerlerini aralarında noktalı virgül (;) olacak şekilde her kişi için ayrı satırlarda C:\Veri\En.txt’ye yazdıran kodu yazınız ve kodları açıklayınız. (10Puan)
e. Sınıflandırma Kaydet butonuna basıldığında, Sınıflandırma kısmına göre Zayıf kişilerin bilgilerini (isim, ağırlık, boy, vki ve sınıflandırma değerlerini) C:\Veri\Zayıf.Txt, Normal kişilerin bilgilerini C:\Veri\Normal.Txt, Hafif Şişman kişilerin bilgilerini C:\Veri\Hafifşişman.Txt, Şişman kişilerin bilgilerini C:\Veri\Şişman.Txt içerisine yazdıran kodu yazınız ve kodları açıklayınız. (10Puan)
f. Form üzerinde, içerisinde satırları sıralı şekilde (A’dan Z’ye) alfabedeki Büyük Harfler olan bir Combobox bileşeni bulunmaktadır. Comboboxtan bir harf seçilip İsim Kaydet butonuna basıldığında, İsim sütununda bulunan isimlerden baş (ilk) harfi Combobox’tan seçilen harf olan isimleri C:\Veri\İsim.txt dosyasına yazdıran kodu yazınız ve kodları açıklayınız. (10 Puan)
Soru2. Form aşağıda görülen şekilde tasarlanmıştır. Aşağıdaki butonlar ve/veya comboboxlardan 10 tanesini Wordpad Programında çalışacak şekilde yazınız ve kodları açıklayınız? (40 Puan)
< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi oguzdindar98 -- 26 Nisan 2020; 20:5:33 >

T
4 yıl
Yarbay

O ne be öyle karınca duası gibi :)

Bu arada Delphi TIOBE (programlama dilleri popülerlik) endeksinde ilk 20 den çıktı.



< Bu ileti mini sürüm kullanılarak atıldı >

O
4 yıl
Onbaşı
Konu Sahibi

Çıktı fakat ege sağolsun hala devam ediyor dersleri pascal dahil



T
4 yıl
Yarbay

Aslında Delphi iyi bir dil ve IDE'dir fakat derste zorunlu olarak kullanılması pek iyi değil. Ödev Delphi değil de Java Swing olsaydı o zaman belki bir kısmını yapardım.



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
O
4 yıl
Onbaşı
Konu Sahibi

Olsun yinede teşekkür ederim




Bu mesajda bahsedilenler: @vonderplanitz
G
4 yıl
Yarbay

ilk soru için wpf olsaydı aşağıda birtane yaptım ama delphiyi bırakalı çok zaman oldu


using System;
using System.Collections.ObjectModel;
using System.ComponentModel;

namespace VucutKitle
{
public class Veriler : INotifyPropertyChanged
{
private string isim;
private double ağırılık;
private double boy;
private double vki;
private string sınıflandırma;

public string İsim
{
get { return isim; }

set
{
if (isim != value)
{
isim = value;
OnPropertyChanged(nameof(İsim));
}
}
}
public double Ağırılık
{
get { return ağırılık; }
set
{
if (ağırılık != value)
{
ağırılık = value;
OnPropertyChanged(nameof(Ağırılık));
OnPropertyChanged(nameof(Vki));
OnPropertyChanged(nameof(Sınıflandırma));

}
}
}
public double Boy
{
get { return boy; }
set
{
if (boy != value)
{
boy = value;
OnPropertyChanged(nameof(Boy));
OnPropertyChanged(nameof(Vki));
OnPropertyChanged(nameof(Sınıflandırma));

}
}
}
public double Vki
{
get
{
vki = Ağırılık / (Math.Pow(Boy / 100, 2));
return vki;
}

set
{
if (vki != value)
{
vki = value;

OnPropertyChanged(nameof(Vki));

}
}
}
public string Sınıflandırma
{
get
{
if (Vki < 20)
{
sınıflandırma = "Zayıf";
}
if (Vki >= 20 && Vki < 24.9)
{
sınıflandırma = "Normal";
}
if (Vki >= 25 && Vki < 29.9)
{
sınıflandırma = "Hafif Şişman";
}
if (Vki > 30)
{
sınıflandırma = "Şişman";
}
return sınıflandırma;
}
set
{
if (sınıflandırma != value)
{
sınıflandırma = value;

OnPropertyChanged(nameof(Sınıflandırma));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}


public class VerilerViewModel
{
public ObservableCollection<Veriler> Veriler { get; set; }

public VerilerViewModel()
{
Veriler = new ObservableCollection<Veriler>
{
new Veriler() { İsim = "Ali", Ağırılık = 60, Boy = 150 },
new Veriler() { İsim = "Veli", Ağırılık = 80, Boy = 140 },
new Veriler() { İsim = "Deli", Ağırılık = 50, Boy = 170 }
};
}


}
}




using System.Linq;
using System.Windows;

namespace VucutKitle
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new VerilerViewModel();
}

private void Button_Click(object sender, RoutedEventArgs e)
{
string metin = "";
(DataContext as VerilerViewModel)?.Veriler.OrderByDescending(z => z.Boy).ToList().ForEach(z => metin = ${metin}={$"{z.İsim};{z.Boy};{z.Ağırılık};{z.Sınıflandırma}"}");
MessageBox.Show(metin);
}
}
}




<Window x:Class="VucutKitle.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:VucutKitle"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="MainWindow"
Width="400" Height="400"
mc:Ignorable="d">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<DataGrid Grid.Column="0"
d:DataContext="{d:DesignInstance Type=local:VerilerViewModel}"
AutoGenerateColumns="False"
ItemsSource="{Binding Veriler}">
<DataGrid.Columns>
<DataGridTextColumn Header="Ad" Binding="{Binding İsim}" />
<DataGridTextColumn Header="Ağırlık" Binding="{Binding Ağırılık, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn Header="Boy" Binding="{Binding Boy, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn Header="Vki"
Binding="{Binding Vki, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="True" />
<DataGridTextColumn Header="Sınıflandırma"
Binding="{Binding Sınıflandırma, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
<Button Grid.Column="1"
Content="Hesapla"
Click="Button_Click" />
</Grid>
</Window>

https://www.dosyaupload.com/o1dz





< Bu mesaj bu kişi tarafından değiştirildi Gökşen PASLI -- 26 Nisan 2020; 22:17:33 >
Bu mesaja 1 cevap geldi.
O
4 yıl
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Gökşen PASLI

ilk soru için wpf olsaydı aşağıda birtane yaptım ama delphiyi bırakalı çok zaman oldu


using System;
using System.Collections.ObjectModel;
using System.ComponentModel;

namespace VucutKitle
{
public class Veriler : INotifyPropertyChanged
{
private string isim;
private double ağırılık;
private double boy;
private double vki;
private string sınıflandırma;

public string İsim
{
get { return isim; }

set
{
if (isim != value)
{
isim = value;
OnPropertyChanged(nameof(İsim));
}
}
}
public double Ağırılık
{
get { return ağırılık; }
set
{
if (ağırılık != value)
{
ağırılık = value;
OnPropertyChanged(nameof(Ağırılık));
OnPropertyChanged(nameof(Vki));
OnPropertyChanged(nameof(Sınıflandırma));

}
}
}
public double Boy
{
get { return boy; }
set
{
if (boy != value)
{
boy = value;
OnPropertyChanged(nameof(Boy));
OnPropertyChanged(nameof(Vki));
OnPropertyChanged(nameof(Sınıflandırma));

}
}
}
public double Vki
{
get
{
vki = Ağırılık / (Math.Pow(Boy / 100, 2));
return vki;
}

set
{
if (vki != value)
{
vki = value;

OnPropertyChanged(nameof(Vki));

}
}
}
public string Sınıflandırma
{
get
{
if (Vki < 20)
{
sınıflandırma = "Zayıf";
}
if (Vki >= 20 && Vki < 24.9)
{
sınıflandırma = "Normal";
}
if (Vki >= 25 && Vki < 29.9)
{
sınıflandırma = "Hafif Şişman";
}
if (Vki > 30)
{
sınıflandırma = "Şişman";
}
return sınıflandırma;
}
set
{
if (sınıflandırma != value)
{
sınıflandırma = value;

OnPropertyChanged(nameof(Sınıflandırma));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}


public class VerilerViewModel
{
public ObservableCollection<Veriler> Veriler { get; set; }

public VerilerViewModel()
{
Veriler = new ObservableCollection<Veriler>
{
new Veriler() { İsim = "Ali", Ağırılık = 60, Boy = 150 },
new Veriler() { İsim = "Veli", Ağırılık = 80, Boy = 140 },
new Veriler() { İsim = "Deli", Ağırılık = 50, Boy = 170 }
};
}


}
}




using System.Linq;
using System.Windows;

namespace VucutKitle
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new VerilerViewModel();
}

private void Button_Click(object sender, RoutedEventArgs e)
{
string metin = "";
(DataContext as VerilerViewModel)?.Veriler.OrderByDescending(z => z.Boy).ToList().ForEach(z => metin = ${metin}={$"{z.İsim};{z.Boy};{z.Ağırılık};{z.Sınıflandırma}"}");
MessageBox.Show(metin);
}
}
}




<Window x:Class="VucutKitle.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:VucutKitle"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="MainWindow"
Width="400" Height="400"
mc:Ignorable="d">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<DataGrid Grid.Column="0"
d:DataContext="{d:DesignInstance Type=local:VerilerViewModel}"
AutoGenerateColumns="False"
ItemsSource="{Binding Veriler}">
<DataGrid.Columns>
<DataGridTextColumn Header="Ad" Binding="{Binding İsim}" />
<DataGridTextColumn Header="Ağırlık" Binding="{Binding Ağırılık, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn Header="Boy" Binding="{Binding Boy, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn Header="Vki"
Binding="{Binding Vki, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="True" />
<DataGridTextColumn Header="Sınıflandırma"
Binding="{Binding Sınıflandırma, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
<Button Grid.Column="1"
Content="Hesapla"
Click="Button_Click" />
</Grid>
</Window>

https://www.dosyaupload.com/o1dz
Teşekkür ederim hocam delphide tstringgrid ile yapılcak büyük ihtimalle ama internette'de hiç bir kaynak bulamadım çok eski program



O
4 yıl
Onbaşı
Konu Sahibi

var
agirlik,boy,vki:Double;
siniflandirma:string;
begin
agirlik:=StringGrid1.RowCount;
boy:=StringGrid1.ColCount;
vki:=agirlik / (boy * boy);
StringGrid1.Cells[0,0]:='İsim';
StringGrid1.Cells[0,1]:='Can';
StringGrid1.Cells[0,2]:='Efe';
StringGrid1.Cells[0,3]:='Ali';
StringGrid1.Cells[0,4]:='Deniz';
StringGrid1.Cells[1,0]:='Ağırlık';
StringGrid1.Cells[1,1]:='50';
StringGrid1.Cells[1,2]:='70';
StringGrid1.Cells[1,3]:='80';
StringGrid1.Cells[1,4]:='90';
StringGrid1.Cells[2,0]:='Boy';
StringGrid1.Cells[2,1]:='160';
StringGrid1.Cells[2,2]:='150';
StringGrid1.Cells[2,3]:='190';
StringGrid1.Cells[2,4]:='180';
StringGrid1.Cells[3,0]:='VKİ';
StringGrid1.Cells[4,0]:='Sınıflandırma';
StringGrid1.Cells[3,1]:=FloatToStr(vki);
StringGrid1.Cells[3,2]:=FloatToStr(vki);
StringGrid1.Cells[3,3]:=FloatToStr(vki);
StringGrid1.Cells[3,4]:=FloatToStr(vki);
end;
end.



Acaba nerde hatam var bmi yapmaya çalışıyorum vücüt kitle indeksi düzenlerken bu boyları bide kilolaları nasıl alıcam kod olarak yani sütünlardan ona göre bide if koşuluyla sınıflandırmaya yazdırıcam



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.