الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعده بخصوص مشروع تخرجي

بدأه abeer Eng في 12 أبريل 2009 · 23 رد · 1,249 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

اتمنى مساعدتكم بمشروع تخرجي

ناقصتني خطوه وحده و عجزت اوصل لها

هي اني يكون عندي متغير من نوع سترينج و يحمل قيم عدديه

هذي القيم العدديه استخدمها لوضع نجمات

(*)

باخر كل سطر

يعني راح اقراء من ملف

و اشوف طول كل سطر

و اذا كان

اكثر من خمسه

راح احط النجمات بالمكان الفاضي

بس المشكله اني عدد النجمات مرتبط بكل قيمه عدديه بالسترينج

يعني مثلا

strnum="3,2,0,4";

و مثلا كان هذا السطر اللي راح نقرئه من ملف

hi,

نلاحظ ان طول السطر اقل من خمسه

لذلك راح ناخذ اول قيمه بالسترينج

3

و نظيف ثلاث نجمات للسطر

لكن

طول السطر 3

و 3+3=6

و السطر لازم ما يزيد طوله عن خمسه

كيف اقدر ازيد على السطر ولو زاد عن خمسه

انزل و ابدى اكتب بالسطر اللي بعدة

بس فيه شرط ثاني كل قيمه لازم تبدى بتاب

'\t'

يعني

قبل اعوض في

3 نجمات 
لازم اطبع '\t'
 و نفس الشي

ايضا عندي مشكله ثانيه لمى افتح ملف للقرائه ما اقدر اكتب فيه

:(

منتظرة مساعدتكم لازم اسلم المشروع بكرة

#2
 string strLine;
			StreamReader sr = new StreamReader(@"C:\w.txt");

			strLine = sr.ReadLine();
			int s = 0;

			// Read data in line by line.
			while (strLine != null)
			{
				s = strLine.Length;
				if (s < 5)
				{
					int num = 5 - s;
					for (int i = 0; i < num; i++)
					{
						if (i == 0)
						{
							textBox1.Text += strLine + '\t';
						}
						textBox1.Text += strLine +"*";
					}
					textBox1.Text += "\r\n";
				}

				strLine = "";
				s = 0;
				strLine = sr.ReadLine();

			}
			sr.Close();

هاذي محاولتي

تم تعديل هذه المشاركة بواسطة abeer Eng في 12 أبريل 2009 في 18:48

#3

السلام عليكــم ورحمـة الله وبركاتــه ،،

أخي ممكن توضح المطلوب بصورة أوضح

قولوا لا اله الا الله تفلحوا

ومن يبتغي غير الاسلام دينا فلن يقبل منه وهو في الاخرة من الخاسرين- صدق الله العظيم

#4
akramKamal كتب:
السلام عليكــم ورحمـة الله وبركاتــه ،،

أخي ممكن توضح المطلوب بصورة أوضح

طيب

المطلوب اني اقرء من ملف و اعدل بنهاية كل سطر من هذا الملف باضافة "space" حتى اوصل الى طول محدد للسطر مثلا 5

عدد السبيس اللي راح اضيفها محدد عندي بسلسلة من القيم ومخزنه داخل string

string strnum="3 2 5 6"

في كل قيمه من هذة القيم راح نشوف طول كل سطر في الملف مثلا

strnum=3
if(line<5)

فاول سطر يجد انه اقل من خمسه سيضع tab و من ثم سلسلة "spaces" و التي عددها في الاندكس الاول من السترينج هو 3

لنفترض انت التالي هو الملف المراد الكتابه بداخله

hello
hi
good night
bay

المفروض نقراء السطر الاول و بما انه اكبر من الخمسه ينتقل مباشره الى السطر الثاني نجد ان به حرفين فقط وعدد السبيس التي يجب اضافتها هي 3

مباشره نطلب من البرنامج بان يضع tab و من ثم يضع ثلاث مسافات متتاليه

و ثم يعود من جديد و ياخذ القيمه الثانيه من السترنج و هي 2

و يبداء يقيس طول كل سطر

حتى يصل الى السطر الاخير

و لكن اذا كانت القيمه المعطاه كبيره مثلا 4 و طول السطر ثلاثه فان البرنامج سيضع تاب و من ثم "one space" و ينتقل للسطر التالي و يبداء بوضع المسافات حتى ينتهي من وضع مسافات بنفس العدد المخزن في السترينج

هذا كل المطلوب

ايضا هل توجد طريقه بحيث اقراء و اعدل على نفس الملف

لانني اذا استخدمت ملف للقراءة لا استطيع الكتابه عليه

اتمنى اكون وضحت

مستنيه مساعدتكم :blush:

#5

مازلت بانتظار من يساعدني :(

#6

السلام عليكــم ورحمـة الله وبركاتــه ،،

المحاولة الي انت عملتيها حلوة وتفكيرك صح بس في تعديل صغير احذفي strLine من هذا السطر

textBox1.Text += strLine +"*";

ليصبح هكذا

textBox1.Text += "*";

مع العلم ان الكود اللي انت عملتيه بيضيف نجوم لحد ما طول السطر يوصل الي 5 مش بيطبق فكرة وجود قيمة مسبقة لهذه النجوم كما ذكرتي ولفعل ذلك استخدمي هذا الكود

 StreamReader reader = new StreamReader(filename);
			string strLine;
			string strnum = "3 2 5 6";



			strLine = reader.ReadLine();
			int s = 0;
			 int x=0;
			// Read data in line by line.
			while (strLine != null)
			{

				s = strLine.Length;
				if (s < 5)
				{

					int num = 5 - s;
					for (int i = 0; i < num; i++)
					{
						if (i == 0)
						{
							textBox1.Text += strLine + '\t';
						}
						textBox1.Text += "*";
					}
					 textBox1.Text += "\r\n";

					int num2=int.Parse(strnum[x].ToString());
					if(num2>s)
					{
						num = num2 - num;
						for (int i = 0; i < num; i++)
						{
							textBox1.Text += "*";
						}

						textBox1.Text += "\r\n";
					}

					x = x + 2;
				}

				strLine = "";
				s = 0;
				strLine = reader.ReadLine();

			}
			reader.Close();


		}

في ملاحظة مهمة جدااااا

لازم تتاكدي ان عدد السطور اللي طولها اقل من 5 اقل من او يساوي عدد القيم الموجودة في strnum عشان ميطلعش exception

بالنسبة للكتابة في الملف استخدمي streamwriter

StreamWriter wstream = new StreamWriter(filename);
			wstream.Write(textBox1.Text);
			wstream.Close();

ملاحظة مهمة

لو استخدمتي نفس الملف اللي قرئتي منه هيعمل استبدال للنص الموجود

#7

السلام عليكــم ورحمـة الله وبركاتــه ،،

جزاكي الله الف خير اختي بس فيه عندي جزئيه

 int num2=int.Parse(strnum[x].ToString());
					if(num2>s)
					{
						num = num2 - num;
						for (int i = 0; i < num; i++)
						{
							textBox1.Text += "*";
						}

						textBox1.Text += "\r\n";
					}

					x = x + 2;

مو فاهمه كيف تشتغل اذا ما عليك كلافه ممكن توضحينها لي على السريع

#8

السلام عليكــم ورحمـة الله وبركاتــه ،،

بالنسبة للسطر الاول

int num2=int.Parse(strnum[x].ToString());

يقوم بقرأت الرقم من السترنج strnum مثال: لو strnum="3 6 7" وقيمة ال x تساوي 0 هيكون num2 يساوي 3 وهكذا

بالنسبة للسطر

if(num2>s)

فيه غلطة

المفروض يكون

if(num2>num)

وهو يقوم بالتاكد ما اذا كان عدد النجوم التي تم اضافتها لكي يصل طول السطر الي 5 اقل من العدد الموجود في strnum

مثال: لو طول السطر 2 فقيمة num هتساوي 3 وبالتالي البرنامج هيضع 3 نجوم بعد الكلمة ثم بعد ذلك يشوف القيمة الموجودة في strum نفترض ان هي و 7بالتالي هيكون متبقي 4 نجوم

لذلك نقوم بمعرفة عدد النجوم المتبقية بهذا السطر

num = num2 - num;

وبذلك تصبح قيمة ال num الجديدة 4 (يمكن استخدام متغير غير ال num )

ولاضافة 4 نجوم نقوم بهذه الوب

 for (int i = 0; i < num; i++)
						{
							textBox1.Text += "*";
						}

ثم عمل سطر جديد لكتابة السطور الاخر بهذا الكود

 textBox1.Text += "\r\n";

ثم زيادة قيمة ال x والتي تشير الي الرقم الذي عليه الدور وتم زيادة 2 عشان المسافات الفاصلة

 x = x + 2;

ارجو يكون الشرح واضح.

#9

بعد صار عندي مشكلة ثانيه

لمى افتح ملف للقرائه يرفض اني اكتب فيه لان المطلوب بمشروعي بالضبط اكتب النجوم باخر كل سطر

يعني لمى افتح ملف كتابه تلقائي يكون المؤشر واقف عند اخر حرف عشان يبدى من بعده يكتب

ادري ثقلت عليك بس الله لا يحرمك الاجر

تم تعديل هذه المشاركة بواسطة abeer Eng في 13 أبريل 2009 في 02:29

#10

السلام عليكم ورحمة الله وبركاته

جربي الكود الموجود بالمشاركة السابقة مع ملاحظة التعديل الموجود في الشرح وشغلي البرنامج

يعني لو الملف موجود فيه

hi

arabteam

doaa

good night

ent

وقيمة ال strum="3 7 5"

هيصبح الملف هكذا

hi ***

doaa *

******

ent **

***

لاحظي حذف السطور التي طولها اكبر من 5

انا جربته واشتغل معايا

#11

جزاك الله الف خير

طيب عندي شغلة صغنطوطه

طيب التاب انتي حطيتيها تنكتب ببدايه كل سطر

والمفروض تكون ببدايه كل قيمه من السترينج يعني السطر الواحد ممكن ياخذ اكثر من تاب وحده

يعني لو str="3 2 6"

راح نضع تاب بعدين ثلاث نجوم و السطر لسى محقق الشرط ممكن اضع تاب ثانيه وابدى اسوي النجمتين

#12
اقتباس
طيب عندي شغلة صغنطوطه

هسبهالك دي ....

حاولي تفكري..... مش صعبة

#13

الف شكر اختي والله لا يحرمك الاجر

حاولت و عدلت بالبرنامج بس مو متاكدة مرة منه :(

 StreamReader reader = new StreamReader(@"C:\w.txt");

			string strLine;
			string strnum = "3256";
			strLine = reader.ReadLine();
			int s = 0;
			 int x=0;
			 int temp = 0;
			 int num2 = Convert.ToInt32(strnum[x].ToString());
			// Read data in line by line.
			while (strLine != null)
			{


				s = strLine.Length;
				if (s <= 80)
				{
					int num = 80 - s;
					if (num== 0)
					{
						textBox1.Text += strLine;
					}
					if (num2 <= num )
					{
						for (int i = 0; i < num2; i++)
						{
							if (i == 0 && temp==0)
							{
								textBox1.Text += strLine + '\t';
							}
							textBox1.Text += "*";
						}
						textBox1.Text += "\r\n";
						num2 = 0;
					}

					if(num2>num)
					{
						temp = 1;
						num2 = num2 - num;
						for (int i = 0; i < num; i++)
						{
							if (i == 0)
							{
								textBox1.Text += strLine + '\t';
							}
							textBox1.Text += "*";
						}
						textBox1.Text += "\r\n";

					}

					if (num2 == 0)
					{
						temp = 0;
						x++;
						num2 = Convert.ToInt32(strnum[x].ToString());
					}


				}

				strLine = "";
				s = 0;
				strLine = reader.ReadLine();

			}
			reader.Close();
#14

السلام عليكــم ورحمـة الله وبركاتــه ،،

اتمنى مساعدتكم لي في معرفة سبب الخطاء

Index was outside the bounds of the array.

يوجد في هذا الجزء

num2 = Convert.ToInt32(strnum[x].ToString());

اضا اجد صعوبه فيه الكتابه في ملف بحيث اضع المؤشر في نهاية كل سطر

استخدمت File.AppendText

لكنها تضع المؤشر نهاية الملف كامل

هل من داله استطيع استخدامها

#15

السلام عليكــم ورحمـة الله وبركاتــه ،،

انا كتبت ملاحظة في المشاركة اللي شرحت فيها البرنامج ارجو الانتبه لها

اقتباس
في ملاحظة مهمة جدااااا

لازم تتاكدي ان عدد السطور اللي طولها اقل من 5 اقل من او يساوي عدد القيم الموجودة في strnum عشان ميطلعش exception

#16

جزاكي الله خير اختي الامور تمام

ولكن مازلت عاجزه عن حل مشكلة القراءة

اود انا اقراء سطر من ملف واحفظه داخل سترينج ثم اجري عليه عمليات معينه و من ثم اعيد كتابه هذا السطر فقط بما فيه من تعديل

استخدمت داله writLine ولكن لا يوجد اي تغير

قمت بانشاء ملف جديد و استخدمت دالة writLine لكن ايضا لا يزال المجلد فارغ ولا تكتب كلمه واحده

لا اعلم ما السبب

:(

#17
FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None)

هذا الخطاء يجيني اذا كتبت هذول السطرين

 StreamReader reader = new StreamReader(@"c:/c.txt");
			StreamWriter sw = new StreamWriter(@"c:/c.txt");
#18

السلام عليكــم ورحمـة الله وبركاتــه ،،

جربي المثال ده

myProject.zip

#19

مشكورة اختي

اجربه و إن شاء الله يشتغل

#20

السلام عليكــم ورحمـة الله وبركاتــه ،،

كيف حالكم إن شاء الله دائمــاً بخير ؟

ما اطول عليكم

بس بصراحه للحين مو راضي يمشي المشروع معي :wacko:

تطلع لي اخطاء بسيطه بس مو عارفه كيف اصلحها مع اني اسوي تريس للبرنامج على الورق يمشي صح

اتمنى مساعدتكم لي

والله يكتب لكم الاجر

s = strLine.Length;
				while(s < 80)
				{
					int num = 5 - s;
					int temp = num2 - num;
					num2 = num2 - temp;
					if (temp > 0)
					{
						for (int i = 0; i < temp; i++)
						{
							strLine += "*";
						}

					}
					for (int i = 0; i < num2; i++)
					{
						if (i == 0)
						{
							strLine + '\t';
						}
						strLine += "*";
						num2 = 0;
					}
			   }
				if(s==80)
				{
					textBox2.Text += strLine+"\r\n";
					x++;
					num2 = int.Parse(strnum[x].ToString());
					strnum_size--;
				}
				strLine = "";
				s = 0;
				strLine = reader.ReadLine();
			}
			if (strnum_size != 0)
			{
				MessageBox.Show("Plese select another File");
			}
			reader.Close();

البرنامج بياخذ عدد من القيم وعلى اساسها بيضع عدد من النجوم حتي يصل طول السطر 80

في البدايه انا باقراء طول السطر و اخزن قيمته بمتغير سميته s

فاذا كان طول السطر يساوي او اقل من ثمانين حيدخل في لوب وايل حتى يصل طول السطر الى 80

في داخل اللوب عنده مرحلتين لازم يسويها

1-اولا حفترض متغير سميته temp

هذا المتغير راح يحمل الفرق بين العدد اللي موجود ضمن سلسلة الاعداد في السترينج و عدد الخانات الباقيه في السطر حتى يكمل 80

2-

int temp = num2 - num;
					num2 = num2 - temp;

استخدمت هذين السطرين للكتابه بالاماكن الخاليه في داخل السطر

3-يختبر هل وصل طول السطر الى ثماني

فاذا كان كذلك

فانه يكتبه داخل التيكست بوكس

ثم يقراء سطر اخر و اول يختبر هل قيمه temp فارغه

فاذا كانت كذلك ينتقل ليغير قيمة الـtemp

عملت البرنامج ولكن لا يطبع لي في التيكست بوكس اي شي

ولست متاكده من طريقة كتابة الشرط لاختبار طول السطر بعد كل اضافه

اتمنى ان لا تردوني خائبه و اجد المساعده منكم :(

#21

السلام عليكم ورحمة الله وبركاته

اقتباس
مع اني اسوي تريس للبرنامج على الورق يمشي صح

ليه علي الورق؟؟؟؟؟؟؟؟؟؟؟؟؟!!!!!

ياريت ترفق البرنامج

#22
progdo32 كتب:
السلام عليكم ورحمة الله وبركاته

ليه علي الورق؟؟؟؟؟؟؟؟؟؟؟؟؟!!!!!

ياريت ترفق البرنامج

هذا هو البرنامج

   string strnum = "32568";
			strLine = reader.ReadLine();
			int s = 0;
			int x = 0,strnum_size=0;
			int num2 = int.Parse(strnum[x].ToString());
			strnum_size = strnum.Length;
			// Read data in line by line.
			while (strLine != null)
			{

				s = strLine.Length;
				while(s < 80)
				{
					int num = 5 - s;
					int temp = num2 - num;
					num2 = num2 - temp;
					if (temp > 0)
					{
						for (int i = 0; i < temp; i++)
						{
							textBox2.Text += "*";
						}
						temp = 0;
						x++;
						num2 = int.Parse(strnum[x].ToString());
						strnum_size--;
					}
					for (int i = 0; i < num2; i++)
					{
						if (i == 0)
						{
						   textBox2.Text+=strLine +'\t';
						}
						textBox2.Text += "*";
						num2 = 0;
					}
				}

					textBox2.Text += "\r\n";
				strLine = "";
				s = 0;
				strLine = reader.ReadLine();
			}
			if (strnum_size != 0)
			{
				MessageBox.Show("Plese select another File");
			}
			reader.Close();

المفروض انه كل ما يضيف يختبر طول السطر

اول مرة راح يضف

\t***

لو وصل طول السطر ثمانين راح ينزل السطر اللي بعده واول شي لازم يفضي temp

افترض ان الخانات الفاضيه بالسطر ثلاثه

والرقم اللي راح ياخذه هو ثالث رقم بالسترينج

فحيطبع \t**

وينزل السطر الثاني ويضع ***

ثم يختبر هل وصلت طول السطر ثمانين فاذا لم يصل اخذ الرقم اللي بعده

ما اعرف كيف اخليه بعد ما يضع القيم الموجوده بالتيمب يختبر

و حتى كيف يتاكد

لان ممكن temp=4

ولا توجد بالسطر سوى خانتين فارغه

فانا اريده بمجرد ينتهي طول السطر

يتوقف عن الاضافه و يكمل بالسطر الذي يليه

البرنامج لا تظهر فيه اي اخطاء ولكن يعلق

:(

#23

السلام عليكم ورحمة الله وبركاته

الغريب اني ارسلت لك برنامج بيعمل ما تريد في المشاركة 18

ولكن لازلت المشكلة قائمة

#24
progdo32 كتب:
السلام عليكم ورحمة الله وبركاته

الغريب اني ارسلت لك برنامج بيعمل ما تريد في المشاركة 18

ولكن لازلت المشكلة قائمة

ربما لم استطيع توضيح الفكرة

ولكن ساضع الخوارزم الذي اعمل عليه

انا اعمل على انشاء information hiding program

1- Get the data from the encryption module.
2- Remove any extra spaces and tabs from the ends of sentences that we want to hide it.
3- Convert encrypted message /file to bit representation.	   
4- Take every 3 bit at a time.
5- Add zeroes if bits are not multiple of 3.
6- Put a tab then hide is done by taking 3 bits at a time and converting it into spaces equal to its decimal equivalent.
7- If line length > 80 go to next line.
8- If end of text file is encountered the hiding process is continued at the end of the file.

الحمدلله تمكنت من انهاء جميع الخطوات سوى الثلاث خطوات الخيره

فقط استطعت تحويل المسج على بيت وقسمتها و خزنت المكافئ لها في سترينج

فالمهم في البرنامج ليس زيادة طول السطر انما استغلال الخانات الفارغه باخفاء الرساله

المشكله في شرط الوايل ولكنيي لم استطيع حلها

اعلم اني ربما ازعجتكم ولكني واثقه من قدراتكم و حبكم للخير :blush:

تم تعديل هذه المشاركة بواسطة abeer Eng في 19 أبريل 2009 في 15:17

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…