using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SoloLearn
{
class Program
{
static void Main(string[] args)
{
// number of games
int playCount = 100;
Game game = new Game();
int wins = 0;
for (int i = 0; i < playCount; i++)
{
if (game.playGame())
{
wins++;
}
}
Console.Write("You got " + wins + " blackjacks");
Console.Write("\n\nde.coder(); ");
}
}
public class Game
{
Deck deck;
int result;
List<Card> hand;
int acesInHand;
public bool playGame() {
bool isBlackJack = false;
acesInHand = 0;
deck = new Deck();
deck.shuffle();
result = 0;
int cardNumber = 0;
hand = new List<Card>();
while (result < 21) {
if (deck.getCards().ElementAt(cardNumber).getSecondCount() > 0) {
acesInHand++;
}
hand.Add(deck.getCards().ElementAt(cardNumber));
result = calculateResult(hand);
cardNumber++;
}
if (result == 21) {
isBlackJack = true;
}
return isBlackJack;
}
public int calculateResult(List<Card> cards) {
int sum = 0;
for (int j = acesInHand; j >= 0; j--) {
sum = 0;
for (int i = 0; i < cards.Count; i++) {
int smallAcecInHand = acesInHand;
if (cards.ElementAt(i).getSecondCount() > 0 && smallAcecInHand > 0) {
sum = sum + cards.ElementAt(i).getSecondCount();
smallAcecInHand--;
}
else
{
sum = sum + cards.ElementAt(i).getCount();
}
}
if (sum == 21) {
return sum;
}
}
return sum;
}
}
public class Card
{
int secondCount = -1;
int count;
string name;
int[] counts = {11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11};
string[] names = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
public Card(int num) {
this.name = names[num];
this.count = counts[num];
}
public Card(int num1, int num2) {
this.name = names[num1];
this.count = counts[num1];
this.secondCount = counts[num2];
}
public string getName() {
return name;
}
public int getCount() {
return count;
}
public int getSecondCount() {
return secondCount;
}
}
public class Deck
{
List<Card> cards;
static Random rnd = new Random();
public Deck() {
cards = new List<Card>();
for (short a = 0; a <= 3; a++) {
for (short b = 0; b <= 12; b++) {
if (b == 0) {
cards.Add(new Card(b, 13));
} else {
cards.Add(new Card(b));
}
}
}
}
public void shuffle() {
int n = cards.Count;
while (n > 1)
{
n--;
int k = rnd.Next(n + 1);
Card value = cards[k];
cards[k] = cards[n];
cards[n] = value;
}
}
public List<Card> getCards() {
return cards;
}
public Card getCard(int i) {
return cards.ElementAt(i);
}
}
}
@de_coder
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SoloLearn
{
class Program
{
static void Main(string[] args)
{
// number of games
int playCount = 100;
Game game = new Game();
int wins = 0;
for (int i = 0; i < playCount; i++)
{
if (game.playGame())
{
wins++;
}
}
Console.Write("You got " + wins + " blackjacks");
Console.Write("\n\nde.coder(); ");
}
}
public class Game
{
Deck deck;
int result;
List<Card> hand;
int acesInHand;
public bool playGame() {
bool isBlackJack = false;
acesInHand = 0;
deck = new Deck();
deck.shuffle();
result = 0;
int cardNumber = 0;
hand = new List<Card>();
while (result < 21) {
if (deck.getCards().ElementAt(cardNumber).getSecondCount() > 0) {
acesInHand++;
}
hand.Add(deck.getCards().ElementAt(cardNumber));
result = calculateResult(hand);
cardNumber++;
}
if (result == 21) {
isBlackJack = true;
}
return isBlackJack;
}
public int calculateResult(List<Card> cards) {
int sum = 0;
for (int j = acesInHand; j >= 0; j--) {
sum = 0;
for (int i = 0; i < cards.Count; i++) {
int smallAcecInHand = acesInHand;
if (cards.ElementAt(i).getSecondCount() > 0 && smallAcecInHand > 0) {
sum = sum + cards.ElementAt(i).getSecondCount();
smallAcecInHand--;
}
else
{
sum = sum + cards.ElementAt(i).getCount();
}
}
if (sum == 21) {
return sum;
}
}
return sum;
}
}
public class Card
{
int secondCount = -1;
int count;
string name;
int[] counts = {11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11};
string[] names = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
public Card(int num) {
this.name = names[num];
this.count = counts[num];
}
public Card(int num1, int num2) {
this.name = names[num1];
this.count = counts[num1];
this.secondCount = counts[num2];
}
public string getName() {
return name;
}
public int getCount() {
return count;
}
public int getSecondCount() {
return secondCount;
}
}
public class Deck
{
List<Card> cards;
static Random rnd = new Random();
public Deck() {
cards = new List<Card>();
for (short a = 0; a <= 3; a++) {
for (short b = 0; b <= 12; b++) {
if (b == 0) {
cards.Add(new Card(b, 13));
} else {
cards.Add(new Card(b));
}
}
}
}
public void shuffle() {
int n = cards.Count;
while (n > 1)
{
n--;
int k = rnd.Next(n + 1);
Card value = cards[k];
cards[k] = cards[n];
cards[n] = value;
}
}
public List<Card> getCards() {
return cards;
}
public Card getCard(int i) {
return cards.ElementAt(i);
}
}
}
@de_coder
شرح کامل تفاوت دو سیستم عامل به نام های unix و linux همراه با جزیات :
(تو پوست خودتون نمی گنجید😂)
---------------------------------------------------
سیستم عامل UNIX را می توان به عنوان جد بزرگ سیستم عامل های امروزی معرفی کرد که همچنان هم مورد استفاده قرار می گیرد اما نکته منفی در خصوص UNIX این است که با توجه به گذشت سالیان طولانی از ارائه شدن این سیستم عامل ، تغییراتی که بر روی این سیستم عامل انجام شده است بسیار اندک است، البته این امر طبیعی است ، سیستم عامل UNIX ذاتا برای انجام پردازشهای سنگین طراحی شده بود و طبیعتا بالا بردن قدرت پردازشی در این سیستم عامل از بهبود رابط کاربری آن مهمتر بود به همین دلیل رابط های کاربری UNIX بسیار سخت و دشوار طراحی شدند زیرا این سیستم عامل ذاتا برای سرورها طراحی شده بود . اما Linux با این ذهنیت کار خود را آغاز کرد که قرار است کاربران عادی نیز از این سیستم عامل استفاده کنند بنابراین اکثر نسخه های لینوکسی که امروزه استفاده می شوند برای خودشان یک رابط کاربری گرافیکی یا GUI دارند که کاربر می تواند به راحتی با آنها ارتباط برقرار کند اما به هر حال وجود رابط گرافیکی از قدرت پردازشی سیستم کم می کند. البته در سیستم عامل لینوکس شما می توانید برای بالا بردن قدرت پردازشی این رابط گرافیکی یا GUI را حذف کنید و فقط با محیط خط فرمان یا Shell با آن ارتباط برقرار کنید. قبلا در انجمن تخصصی فناوری اطلاعات ایران در خصوص انواع رابطهای گرافیکی لینوکس و تفاوت بین آنها صحبت کرده ایم.از انواع رابط های گرافیکی لینوکس می توان به KDE و Gnome اشاره کرد.
@de_coder
سیستم عامل UNIX ذاتا برای اجرا شدن روی سیستم های سخت افزاری و تجهیزات سخت افزاری دسکتاپ طراحی نشده بود و صرفا برای تجهیزات و سخت افزارهای سرور قدرتمند طراحی و تولید شده بود. از طرفی دیگر سیستم عامل Linux قابلیت نصب شدن و سرویس دهی بر روی انواع سخت افزارها را دارد و شما می توانید یک سیستم عامل Linux را هم بر روی یک سرور و هم بر روی یک کامپیوتر دسکتاپ نصب و اجرا کنید و همین موضوع باعث علاقه مندی بیشتر کاربران برای استفاده از Linux می شود. در نهایت هزینه هایی که برای این دو سیستم عامل می شود کاملا متفاوت است سیستم عامل UNIX فروشی است و شما باید برای استفاده از این محصول آن را خریداری کنید اما Linux یک سیستم عامل است که تحت لیسانس GNU GPL طراحی و تولید شده است و این بدین معناست که این سیستم عامل رایگان است و شما نیازی به پرداخت هزینه برای استفاده از آن ندارید.
@de_coder
شاید اینگونه تصور شود که سیستم عامل UNIX نیز قابلیت دلخواه سازی یا Customize شدن دارد اما در بیشتر موارد در نسخه های محدودی که از این سیستم عامل وجود دارد از این سیستم عامل به عنوان یک سیستم عامل Closed Source یا سورس بسته یاد می شود و این یعنی شما نمی توانید درون کدهای این سیستم عامل دستکاری کنید ، از طرفی در مقابل شما سیستم عامل Linux را یک سیستم عامل Open Source می نامیم و این یعنی شما هر تغییری که دوست داشتید می توانید بر روی این سیستم عامل انجام دهید و حتی نسخه Linux خاص خودتان را ایجاد کنید ، همین موضوع باعث شده است که امروزه صدها نسخه یا توزیع مختلف در دنیا از سیستم عامل Linux وجود داشته باشد اما تنها چند نسخه محدود از سیستم عامل UNIX وجود دارند.
@de_coder
(تو پوست خودتون نمی گنجید😂)
---------------------------------------------------
سیستم عامل UNIX را می توان به عنوان جد بزرگ سیستم عامل های امروزی معرفی کرد که همچنان هم مورد استفاده قرار می گیرد اما نکته منفی در خصوص UNIX این است که با توجه به گذشت سالیان طولانی از ارائه شدن این سیستم عامل ، تغییراتی که بر روی این سیستم عامل انجام شده است بسیار اندک است، البته این امر طبیعی است ، سیستم عامل UNIX ذاتا برای انجام پردازشهای سنگین طراحی شده بود و طبیعتا بالا بردن قدرت پردازشی در این سیستم عامل از بهبود رابط کاربری آن مهمتر بود به همین دلیل رابط های کاربری UNIX بسیار سخت و دشوار طراحی شدند زیرا این سیستم عامل ذاتا برای سرورها طراحی شده بود . اما Linux با این ذهنیت کار خود را آغاز کرد که قرار است کاربران عادی نیز از این سیستم عامل استفاده کنند بنابراین اکثر نسخه های لینوکسی که امروزه استفاده می شوند برای خودشان یک رابط کاربری گرافیکی یا GUI دارند که کاربر می تواند به راحتی با آنها ارتباط برقرار کند اما به هر حال وجود رابط گرافیکی از قدرت پردازشی سیستم کم می کند. البته در سیستم عامل لینوکس شما می توانید برای بالا بردن قدرت پردازشی این رابط گرافیکی یا GUI را حذف کنید و فقط با محیط خط فرمان یا Shell با آن ارتباط برقرار کنید. قبلا در انجمن تخصصی فناوری اطلاعات ایران در خصوص انواع رابطهای گرافیکی لینوکس و تفاوت بین آنها صحبت کرده ایم.از انواع رابط های گرافیکی لینوکس می توان به KDE و Gnome اشاره کرد.
@de_coder
سیستم عامل UNIX ذاتا برای اجرا شدن روی سیستم های سخت افزاری و تجهیزات سخت افزاری دسکتاپ طراحی نشده بود و صرفا برای تجهیزات و سخت افزارهای سرور قدرتمند طراحی و تولید شده بود. از طرفی دیگر سیستم عامل Linux قابلیت نصب شدن و سرویس دهی بر روی انواع سخت افزارها را دارد و شما می توانید یک سیستم عامل Linux را هم بر روی یک سرور و هم بر روی یک کامپیوتر دسکتاپ نصب و اجرا کنید و همین موضوع باعث علاقه مندی بیشتر کاربران برای استفاده از Linux می شود. در نهایت هزینه هایی که برای این دو سیستم عامل می شود کاملا متفاوت است سیستم عامل UNIX فروشی است و شما باید برای استفاده از این محصول آن را خریداری کنید اما Linux یک سیستم عامل است که تحت لیسانس GNU GPL طراحی و تولید شده است و این بدین معناست که این سیستم عامل رایگان است و شما نیازی به پرداخت هزینه برای استفاده از آن ندارید.
@de_coder
شاید اینگونه تصور شود که سیستم عامل UNIX نیز قابلیت دلخواه سازی یا Customize شدن دارد اما در بیشتر موارد در نسخه های محدودی که از این سیستم عامل وجود دارد از این سیستم عامل به عنوان یک سیستم عامل Closed Source یا سورس بسته یاد می شود و این یعنی شما نمی توانید درون کدهای این سیستم عامل دستکاری کنید ، از طرفی در مقابل شما سیستم عامل Linux را یک سیستم عامل Open Source می نامیم و این یعنی شما هر تغییری که دوست داشتید می توانید بر روی این سیستم عامل انجام دهید و حتی نسخه Linux خاص خودتان را ایجاد کنید ، همین موضوع باعث شده است که امروزه صدها نسخه یا توزیع مختلف در دنیا از سیستم عامل Linux وجود داشته باشد اما تنها چند نسخه محدود از سیستم عامل UNIX وجود دارند.
@de_coder
خلاصه ی متن بالا :
@de_coder
سیستم عامل UNIX یک سیستم عامل بسیار با قدمت است و Linux برگرفته ای از این سیستم عامل است
سیستم عامل UNIX ذاتا برای سرور طراحی شده است و رابط گرافیکی برای آن وجود نداشته یا به آن فکر نشده است
سیستم عامل Linux برای استفاده همزمان توسط سرورها و کامپیوترهای دسکتاپ طراحی شده است و رابط گرافیکی دارد
سیستم عامل UNIX ذاتا برای Mainframe ها و سرورهای بزرگ طراحی شده است
سیستم عامل Linuxضمن اینکه می تواند در سرورها و Mainframe ها استفاده شود در PC ها نیز قابلیت استفاده دارد
سیستم عامل UNIX دارای مالک است اما Linux تحت لیسانس GNU ارائه شده است
@de_coder
@de_coder
سیستم عامل UNIX یک سیستم عامل بسیار با قدمت است و Linux برگرفته ای از این سیستم عامل است
سیستم عامل UNIX ذاتا برای سرور طراحی شده است و رابط گرافیکی برای آن وجود نداشته یا به آن فکر نشده است
سیستم عامل Linux برای استفاده همزمان توسط سرورها و کامپیوترهای دسکتاپ طراحی شده است و رابط گرافیکی دارد
سیستم عامل UNIX ذاتا برای Mainframe ها و سرورهای بزرگ طراحی شده است
سیستم عامل Linuxضمن اینکه می تواند در سرورها و Mainframe ها استفاده شود در PC ها نیز قابلیت استفاده دارد
سیستم عامل UNIX دارای مالک است اما Linux تحت لیسانس GNU ارائه شده است
@de_coder
#include <iostream>
using namespace std;
int* bubbleSort(int arr[], int n);
int main()
{
// sample array
const int size = 7;
int arr[] = {9, 5, 12, 4, 8, 42, 3};
// sort the array
arr[size] = *bubbleSort(arr, size);
for (int i = 0; i < size; i++)
{
cout << arr[i] << " ";
}
cout << "\n\n\ de.coder();" ;
return 0;
}
int* bubbleSort(int *arr, int n)
{
bool swapped = true;
int j = 0;
int tmp;
while(swapped)
{
swapped = false;
j++;
for (int i = 0; i < n - j; i++)
{
if (arr[i] > arr[i + 1])
{
tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
swapped = true;
}
}
}
return arr;
}
@de_coder
using namespace std;
int* bubbleSort(int arr[], int n);
int main()
{
// sample array
const int size = 7;
int arr[] = {9, 5, 12, 4, 8, 42, 3};
// sort the array
arr[size] = *bubbleSort(arr, size);
for (int i = 0; i < size; i++)
{
cout << arr[i] << " ";
}
cout << "\n\n\ de.coder();" ;
return 0;
}
int* bubbleSort(int *arr, int n)
{
bool swapped = true;
int j = 0;
int tmp;
while(swapped)
{
swapped = false;
j++;
for (int i = 0; i < n - j; i++)
{
if (arr[i] > arr[i + 1])
{
tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
swapped = true;
}
}
}
return arr;
}
@de_coder
@de_coder
عملگر های بیتی:
این عملگر ها با بیت ها سر کار دارند و بیشتر در چاپگر ها استفاده می شود .
به عنوان مثال اگر شما عدد یک را به متغیری دهید و بخواهید آن عدد را با یک عدد دیگر مقایسه کنید از عملگر های بیتی استفاده می کنید در زبان سی پلاس پلاس از این عملگرها فقط برای اعداد صحیح و کاراکتر ها می توان استفاده کرد به این صورت که آن عدد یا کاراکتر را به مبنای دو برده و بعد با یکی عدد به صورت بیت به بیت مقایسه می کند اگر شبیه هم بودند 1 و اگر نبودند 0 می دهد که عدد 1 به معنی درست و عدد 0 به معنی غلط است.
توجه کنید که بیت ها را مقایسه می کند و هیچ عملی روی آن ها انجام نمی دهد.
عملگر های بیتی :
&، ^ ، ! ، | ، ~
@de_coder
عملگر های بیتی:
این عملگر ها با بیت ها سر کار دارند و بیشتر در چاپگر ها استفاده می شود .
به عنوان مثال اگر شما عدد یک را به متغیری دهید و بخواهید آن عدد را با یک عدد دیگر مقایسه کنید از عملگر های بیتی استفاده می کنید در زبان سی پلاس پلاس از این عملگرها فقط برای اعداد صحیح و کاراکتر ها می توان استفاده کرد به این صورت که آن عدد یا کاراکتر را به مبنای دو برده و بعد با یکی عدد به صورت بیت به بیت مقایسه می کند اگر شبیه هم بودند 1 و اگر نبودند 0 می دهد که عدد 1 به معنی درست و عدد 0 به معنی غلط است.
توجه کنید که بیت ها را مقایسه می کند و هیچ عملی روی آن ها انجام نمی دهد.
عملگر های بیتی :
&، ^ ، ! ، | ، ~
@de_coder
در این برنامه منوی ما دارای 4 گزینه است
با انتخاب گزینه ی اول شما وارد یک برنامه می شوید که در آن با وارد کردن عدد دلخواه خود به شما نشان می دهد که آیا این عدد اول می باشد یا خیر
و سپس با وارد کردن عدد 0 به منوی اصلی بر میگردید
با وارد کردن عدد 2 وارد برنامه ای می شوید که در آن عدد مورد نظر را وارد می کنید و سپس آن عددی را که دوست دارید به آن توان برسد وارد می کنید و سپس با وارد کردن عدد 0 به منوی اصلی بر میگردید
با وارد کردن عدد 3 وارد برنامه ای می شوید که در آن عدد مورد نظر را وارد می کنید و برنامه مقدار فاکتوریل عدد شما رو چاپ می کند و با وارد کردن عدد 0 به منوی اصلی باز می گردید
با وارد کردن عدد 4 هم از منوی اصلی خارج می شوید
توجه داشته باشید که از تابع system("cls") برای clear screen استفاده کردیم که این متد در کتاب خانه زیر قرار دارد
#include<stdlib.h>
@de_coder
با انتخاب گزینه ی اول شما وارد یک برنامه می شوید که در آن با وارد کردن عدد دلخواه خود به شما نشان می دهد که آیا این عدد اول می باشد یا خیر
و سپس با وارد کردن عدد 0 به منوی اصلی بر میگردید
با وارد کردن عدد 2 وارد برنامه ای می شوید که در آن عدد مورد نظر را وارد می کنید و سپس آن عددی را که دوست دارید به آن توان برسد وارد می کنید و سپس با وارد کردن عدد 0 به منوی اصلی بر میگردید
با وارد کردن عدد 3 وارد برنامه ای می شوید که در آن عدد مورد نظر را وارد می کنید و برنامه مقدار فاکتوریل عدد شما رو چاپ می کند و با وارد کردن عدد 0 به منوی اصلی باز می گردید
با وارد کردن عدد 4 هم از منوی اصلی خارج می شوید
توجه داشته باشید که از تابع system("cls") برای clear screen استفاده کردیم که این متد در کتاب خانه زیر قرار دارد
#include<stdlib.h>
@de_coder