Garip Gamerr
Hectopat
- Katılım
- 28 Haziran 2020
- Mesajlar
- 224
- Çözümler
- 1
List<T>,
Dictionary<TKey, TValue>
, bir kac tane de proje icin kendi yazdigin sinif ile butun projeyi yaparsin.class Malzeme {
string adi;
DateTime sonKullanmaTarihi;
uint adet;
}
#include <stdio.h>Ornege ihtiyaciniz oldugunu dusunmuyorum. Daha basit bir sey veremezmis istesede.
Bilmen gereken yapilar bile oldukca basit.List<T>,
Dictionary<TKey, TValue>
, bir kac tane de proje icin kendi yazdigin sinif ile butun projeyi yaparsin.
Malzeme Ekle/Cikar dedigi basit liste operasyonlari. "Malzeme" diye bir sinif olusturmalisin ki nesneleri takip etmek kolay olsun.
Mesela;
C#:class Malzeme { string adi; DateTime sonKullanmaTarihi; uint adet; }
Su tarz seyleri kendi kendinize kesfedebiliyor olmaniz lazim ornege ihtiyac duymadan. Donem sonuna gelmissin, hocan anlatmis belli ki bu konseptleri.
şöyle bir kod yazdık lakin malzeme ekledikten sonra malzeme görüntüle dediğinde atıyor ve sorunu çözemiyoruz#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char isimler[30]; // Malzeme isimleri
int sayaclar[50]; // Malzeme adetleri
int son_kullanma_tarihi[50]; // Son kullanma tarihleri
int malzeme_sayac ; // Malzeme sayısı
// Malzeme ekleme fonksiyonu
void malzeme_ekle() {
char isim; // Malzeme ismi
int sayac, sonkullanmatarihi;
printf("Malzeme Adi: ");
scanf(" %s", &isim); // Malzeme ismini al
printf("Adet: ");
scanf("%d", &sayac); // Adet bilgisini al
printf("Son Kullanma Tarihi: ");
scanf("%d", &sonkullanmatarihi);
int i; // Son kullanma tarihini al
// Daha önce eklenmiş bir malzeme varsa, adet bilgisini arttır
for ( i = 0; i < malzeme_sayac; i++) {
if (isimler == isim) {
sayaclar += sayac; // Adet arttırılır
if (son_kullanma_tarihi < sonkullanmatarihi) {
son_kullanma_tarihi = sonkullanmatarihi; // Son kullanma tarihi güncellenir
}
printf("Malzeme sayisi degistirildi.\n");
return;
}
}
// Yeni malzeme ekleme
isimler[malzeme_sayac] = isim; // Yeni malzeme ismini kaydederiz
sayaclar[malzeme_sayac] = sayac; // Adet eklenir
son_kullanma_tarihi[malzeme_sayac] = sonkullanmatarihi; // Son kullanma tarihi eklenir
malzeme_sayac++; // Malzeme sayacını arttırır
printf("Malzeme eklendi.\n");
}
// Malzeme çıkarma fonksiyonu
void malzeme_cikar() {
char isim; // Malzeme ismini tutacak değişken
int sayac;
printf("Cikarilacak Malzeme: ");
scanf(" %s", &isim); // Malzeme ismini al
printf("Cikarilacak Malzeme Sayisi: ");
scanf("%d", &sayac);
int i; // Çıkarılacak adet
for ( i = 0; i < malzeme_sayac; i++) {
if (isimler == isim) {
if (sayaclar >= sayac) {
sayaclar -= sayac; // Adet çıkarılır
printf("Malzeme sayisi degistirildi.\n");
int i,j;
if (sayaclar == 0) {
// Malzeme bitmişse, onu listeden çıkar
for ( j = i; j < malzeme_sayac - 1; j++) {
isimler[j] = isimler[j + 1]; // İsim kaydırılır
sayaclar[j] = sayaclar[j + 1]; // Adet kaydırılır
son_kullanma_tarihi[j] = son_kullanma_tarihi[j + 1]; // Son kullanma tarihi kaydırılır
}
malzeme_sayac--; // Malzeme sayacı azaltılır
}
} else {
printf("Malzeme yeterli degil.\n");
}
return;
}
}
printf("Malzeme bulunamadi.\n");
}
// Malzemeleri listeleme fonksiyonu
void malzemeleri_listele() {
int i;
for ( i = 0; i < malzeme_sayac; i++) {
printf("Malzeme İsmi: %s, Adedi: %d, Son Kullanma Tarihi: %d\n",
isimler, sayaclar, son_kullanma_tarihi);
}
}
int main() {
int sec;
do {
printf("MALZEME YONETIMI\n");
printf("1. Malzeme Ekle\n2. Malzeme Cikar\n3. Malzeme Listele\n4. Cikis\nSeciminizi yapiniz (1-4): ");
scanf("%d", &sec);
switch (sec) {
case 1:
malzeme_ekle();
break;
case 2:
malzeme_cikar();
break;
case 3:
malzemeleri_listele();
break;
case 4:
printf("Cikis\n");
break;
default:
printf("Gecersiz secim.\n");
}
} while (sec != 4);
return 0;
}
using System.Security.Cryptography;
var productManager = new ProductManager();
productManager.AddProduct(new TProduct { Id = 1, Name = "Apple", Price = 10, Description = "Just an apple." });
var menu = new ConsoleMenu();
menu.AddCommand(new ClearCommand());
menu.AddCommand(new AddProductCommand(productManager));
menu.AddCommand(new ListProductsCommand(productManager));
menu.AddCommand(new RemoveProductCommand(productManager));
menu.AddCommand(new ExitCommand());
Console.WriteLine("Please enter command to continue.");
Console.WriteLine();
menu.ShowMenu();
Console.WriteLine();
while (true)
{
var input = Console.ReadLine();
menu.Run(input);
Console.WriteLine();
}
interface IConsoleMenu
{
void ShowMenu();
void Run(string input);
void AddCommand(IConsoleCommand command);
void SetCommandList(List<IConsoleCommand> commands);
}
interface IConsoleCommand
{
string Name { get; }
string HelpText { get; }
void Execute(params string[] parameters);
}
class ConsoleMenu : IConsoleMenu
{
private List<IConsoleCommand> _commands = new List<IConsoleCommand>();
public void ShowMenu()
{
foreach (var command in _commands)
{
Console.WriteLine($"[{command.Name}] {command.HelpText}");
}
}
public void Run(string input)
{
var inputArgs = input.Split(' ');
var commandName = inputArgs[0];
var arguments = inputArgs.Skip(1).ToArray();
var command = _commands.FirstOrDefault(x=>x.Name.ToLower() == commandName.ToLower());
if (command == null)
{
Console.WriteLine("No such command found!");
return;
}
command.Execute(arguments);
}
public void AddCommand(IConsoleCommand command)
{
_commands.Add(command);
}
public void SetCommandList(List<IConsoleCommand> commands)
{
_commands = commands;
}
}
class TProduct
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public uint Price { get; set; }
}
class ProductManager
{
public List<TProduct> Products { get; set; } = new List<TProduct>();
public void AddProduct(TProduct product)
{
Products.Add(product);
}
public void DeleteProduct(TProduct product)
{
Products.Remove(product);
}
public IEnumerable<TProduct> GetProducts()
{
return Products;
}
public TProduct? GetProductById(int id)
{
return Products.FirstOrDefault(x => x.Id == id);
}
public void UpdateProduct(TProduct product)
{
var productOld = Products.FirstOrDefault(x => x.Id == product.Id);
Products.Remove(productOld);
Products.Add(product);
}
}
class ListProductsCommand(ProductManager productManager) : IConsoleCommand
{
public string Name { get; } = "list-products";
public string HelpText { get; } = "Lists all products.";
private readonly ProductManager _productManager = productManager;
public void Execute(params string[] parameters)
{
foreach (var product in _productManager.GetProducts())
{
Console.WriteLine($"-> [Id: {product.Id}] {product.Name}, {product.Price}, {product.Description}");
}
}
}
class AddProductCommand(ProductManager productManager) : IConsoleCommand
{
public string Name { get; } = "add-product";
public string HelpText { get; } = "Usage: add-product <name> <price> <description>";
public void Execute(params string[] parameters)
{
var arguments = parameters;
productManager.AddProduct(new TProduct { Id = RandomNumberGenerator.GetInt32(1,59124), Name = arguments[0], Price = Convert.ToUInt32(arguments[1]), Description = string.Join(" ", arguments.Skip(2)) });
Console.WriteLine("Product added successfully!");
}
}
class ClearCommand : IConsoleCommand
{
public string Name { get; } = "clear";
public string HelpText { get; } = "Clears the console.";
public void Execute(params string[] parameters)
{
Console.Clear();
}
}
class ExitCommand : IConsoleCommand
{
public string Name { get; } = "exit";
public string HelpText { get; } = "Exit the program.";
public void Execute(params string[] parameters)
{
Console.WriteLine("Bye!");
Environment.Exit(0);
}
}
class RemoveProductCommand(ProductManager productManager) : IConsoleCommand
{
public string Name { get; } = "remove-product";
public string HelpText { get; } = "Usage : remove-product <id>";
public void Execute(params string[] parameters)
{
try
{
var id = int.Parse(parameters[0]);
var productToDelete = productManager.GetProductById(id);
if (productToDelete == null)
{
Console.WriteLine("Product with specified id does not exist!");
return;
}
productManager.DeleteProduct(productToDelete);
Console.WriteLine("Product removed successfully!");
}
catch
{
Console.WriteLine("Failed!");
}
}
}
Kod paylasmak icin ozel bir tus var bak. Onu kullanarak paylas. Bu sekilde attiginda ortaya cikan problemlerden dolayi hem kodu okuyamiyorum, hem kopyala yapistir yapamiyorum. Ugrasmam gerekiyor ekstra. Sosyal'de nasıl kod paylaşılır?#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char isimler[30]; // Malzeme isimleri
int sayaclar[50]; // Malzeme adetleri
int son_kullanma_tarihi[50]; // Son kullanma tarihleri
int malzeme_sayac ; // Malzeme sayısı
// Malzeme ekleme fonksiyonu
void malzeme_ekle() {
char isim; // Malzeme ismi
int sayac, sonkullanmatarihi;
printf("Malzeme Adi: ");
scanf(" %s", &isim); // Malzeme ismini al
printf("Adet: ");
scanf("%d", &sayac); // Adet bilgisini al
printf("Son Kullanma Tarihi: ");
scanf("%d", &sonkullanmatarihi);
int i; // Son kullanma tarihini al
// Daha önce eklenmiş bir malzeme varsa, adet bilgisini arttır
for ( i = 0; i < malzeme_sayac; i++) {
if (isimler == isim) {
sayaclar += sayac; // Adet arttırılır
if (son_kullanma_tarihi < sonkullanmatarihi) {
son_kullanma_tarihi = sonkullanmatarihi; // Son kullanma tarihi güncellenir
}
printf("Malzeme sayisi degistirildi.\n");
return;
}
}
// Yeni malzeme ekleme
isimler[malzeme_sayac] = isim; // Yeni malzeme ismini kaydederiz
sayaclar[malzeme_sayac] = sayac; // Adet eklenir
son_kullanma_tarihi[malzeme_sayac] = sonkullanmatarihi; // Son kullanma tarihi eklenir
malzeme_sayac++; // Malzeme sayacını arttırır
printf("Malzeme eklendi.\n");
}
// Malzeme çıkarma fonksiyonu
void malzeme_cikar() {
char isim; // Malzeme ismini tutacak değişken
int sayac;
printf("Cikarilacak Malzeme: ");
scanf(" %s", &isim); // Malzeme ismini al
printf("Cikarilacak Malzeme Sayisi: ");
scanf("%d", &sayac);
int i; // Çıkarılacak adet
for ( i = 0; i < malzeme_sayac; i++) {
if (isimler == isim) {
if (sayaclar >= sayac) {
sayaclar -= sayac; // Adet çıkarılır
printf("Malzeme sayisi degistirildi.\n");
int i,j;
if (sayaclar == 0) {
// Malzeme bitmişse, onu listeden çıkar
for ( j = i; j < malzeme_sayac - 1; j++) {
isimler[j] = isimler[j + 1]; // İsim kaydırılır
sayaclar[j] = sayaclar[j + 1]; // Adet kaydırılır
son_kullanma_tarihi[j] = son_kullanma_tarihi[j + 1]; // Son kullanma tarihi kaydırılır
}
malzeme_sayac--; // Malzeme sayacı azaltılır
}
} else {
printf("Malzeme yeterli degil.\n");
}
return;
}
}
printf("Malzeme bulunamadi.\n");
}
// Malzemeleri listeleme fonksiyonu
void malzemeleri_listele() {
int i;
for ( i = 0; i < malzeme_sayac; i++) {
printf("Malzeme İsmi: %s, Adedi: %d, Son Kullanma Tarihi: %d\n",
isimler, sayaclar, son_kullanma_tarihi);
}
}
int main() {
int sec;
do {
printf("MALZEME YONETIMI\n");
printf("1. Malzeme Ekle\n2. Malzeme Cikar\n3. Malzeme Listele\n4. Cikis\nSeciminizi yapiniz (1-4): ");
scanf("%d", &sec);
switch (sec) {
case 1:
malzeme_ekle();
break;
case 2:
malzeme_cikar();
break;
case 3:
malzemeleri_listele();
break;
case 4:
printf("Cikis\n");
break;
default:
printf("Gecersiz secim.\n");
}
} while (sec != 4);
return 0;
}
şöyle bir kod yazdık lakin malzeme ekledikten sonra malzeme görüntüle dediğinde atıyor ve sorunu çözemiyoruz
Vs code kullanmamız yasak Dev c++ da var mı öyle bir tuşKod paylasmak icin ozel bir tus var bak. Onu kullanarak paylas. Bu sekilde attiginda ortaya cikan problemlerden dolayi hem kodu okuyamiyorum, hem kopyala yapistir yapamiyorum. Ugrasmam gerekiyor ekstra. Sosyal'de nasıl kod paylaşılır?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char isimler[30]; // Malzeme isimleri
int sayaclar[50]; // Malzeme adetleri
int son_kullanma_tarihi[50]; // Son kullanma tarihleri
int malzeme_sayac ; // Malzeme sayısı
// Malzeme ekleme fonksiyonu
void malzeme_ekle() {
char isim; // Malzeme ismi
int sayac, sonkullanmatarihi;
printf("Malzeme Adi: ");
scanf(" %s", &isim); // Malzeme ismini al
printf("Adet: ");
scanf("%d", &sayac); // Adet bilgisini al
printf("Son Kullanma Tarihi: ");
scanf("%d", &sonkullanmatarihi);
int i; // Son kullanma tarihini al
// Daha önce eklenmiş bir malzeme varsa, adet bilgisini arttır
for ( i = 0; i < malzeme_sayac; i++) {
if (isimler[i] == isim) {
sayaclar[i] += sayac; // Adet arttırılır
if (son_kullanma_tarihi[i] < sonkullanmatarihi) {
son_kullanma_tarihi[i] = sonkullanmatarihi; // Son kullanma tarihi güncellenir
}
printf("Malzeme sayisi degistirildi.\n");
return;
}
}
// Yeni malzeme ekleme
isimler[malzeme_sayac] = isim; // Yeni malzeme ismini kaydederiz
sayaclar[malzeme_sayac] = sayac; // Adet eklenir
son_kullanma_tarihi[malzeme_sayac] = sonkullanmatarihi; // Son kullanma tarihi eklenir
malzeme_sayac++; // Malzeme sayacını arttırır
printf("Malzeme eklendi.\n");
}
// Malzeme çıkarma fonksiyonu
void malzeme_cikar() {
char isim; // Malzeme ismini tutacak değişken
int sayac;
printf("Cikarilacak Malzeme: ");
scanf(" %s", &isim); // Malzeme ismini al
printf("Cikarilacak Malzeme Sayisi: ");
scanf("%d", &sayac);
int i; // Çıkarılacak adet
for ( i = 0; i < malzeme_sayac; i++) {
if (isimler[i] == isim) {
if (sayaclar[i] >= sayac) {
sayaclar[i] -= sayac; // Adet çıkarılır
printf("Malzeme sayisi degistirildi.\n");
int i,j;
if (sayaclar[i] == 0) {
// Malzeme bitmişse, onu listeden çıkar
for ( j = i; j < malzeme_sayac - 1; j++) {
isimler[j] = isimler[j + 1]; // İsim kaydırılır
sayaclar[j] = sayaclar[j + 1]; // Adet kaydırılır
son_kullanma_tarihi[j] = son_kullanma_tarihi[j + 1]; // Son kullanma tarihi kaydırılır
}
malzeme_sayac--; // Malzeme sayacı azaltılır
}
} else {
printf("Malzeme yeterli degil.\n");
}
return;
}
}
printf("Malzeme bulunamadi.\n");
}
// Malzemeleri listeleme fonksiyonu
void malzemeleri_listele() {
int i;
for ( i = 0; i < malzeme_sayac; i++) {
printf("Malzeme İsmi: %s, Adedi: %d, Son Kullanma Tarihi: %d\n",
isimler[i], sayaclar[i], son_kullanma_tarihi[i]);
}
}
int main() {
int sec;
do {
printf("*MALZEME YONETIMI*\n");
printf("1. Malzeme Ekle\n2. Malzeme Cikar\n3. Malzeme Listele\n4. Cikis\nSeciminizi yapiniz (1-4): ");
scanf("%d", &sec);
switch (sec) {
case 1:
malzeme_ekle();
break;
case 2:
malzeme_cikar();
break;
case 3:
malzemeleri_listele();
break;
case 4:
printf("Cikis\n");
break;
default:
printf("Gecersiz secim.\n");
}
} while (sec != 4);
return 0;
}
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.