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

مشكلة في استعمال الدالة Rand

بدأه حامي الحمى في 10 ديسمبر 2009 · 5 رد · 601 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

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

لدي مشكلة اخواني في برنامج

اريد في البداية انشاء رقم عشوائي مكوّن من N ارقام مختلفة

حاولت لكن هناك مشلكة، وهي انه احيانا لا يقوم بطباعة أي رقم، لا أعلم ما سبب ذلك

هذا هو الكود الذي قمت بكتابته

# include <stdio.h>
# include <stdlib.h>
# include <time.h>

#define N 4
#define M 10

void main()
{
	unsigned int iseed = (unsigned int)time(NULL);
	srand (iseed);


	int arr[N]={0};
	int i,j;
	int num;
	int flag=1;


	arr[0]=rand()%10;
	for (i=1; i<N ; i++)
	{
		for (j=0;j<i;j++)
		{

			if (arr==0)
				arr=rand()%10;
			if (arr[j] == arr)
				i--;
		}

	}

	for (i=0;i<N;i++)
		printf ("%d" , arr);


}

*بالمناسبة، حاولت عدة مرات كتابة الكود بواسطة الوسم gcode لكنه لا يعمل !!!

بارك الله فيكم سلفاً

السلام عليكم

تم تعديل هذه المشاركة بواسطة حامي الحمى في 10 ديسمبر 2009 في 15:24

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#2

السلام عليكم

بارك الله فيكم

تم حل المشكلة بحمد الله

اذا حدثت مشكلة اخرى في البرنامج سأطرحها

جزيتم خيرا

السلام عليكم

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#3

تفضل

اتمنى ان يكون المطلوب

# include <stdio.h>
# include <stdlib.h>
# include <time.h>

#define N 4
#define M 10

void main()
{
        unsigned int iseed = (unsigned int)time(NULL);
		  srand (iseed);


		  int arr[N]={0};
		  int i,j;
		  int num;
//		  int flag=1;


		  arr[0]=rand()%10;
		  for (i=1; i<N ; i++)
		  {
			 r:
			  randomize();
				num=rand()%10;
					 for (j=0;j<i;j++)
					 {
						  if(arr[j]==num)
						  goto r;
					 }
				arr=num;

		  }

		  for (i=0;i<N;i++)
					 printf ("\t%d" , arr);


}

تحياتي

يبدو انك حذفت الموضوع أثناء قيامي بالرد .

موفق باذن الله ولكن اتمنى ان ترينا الحل .

تحياتي

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#4

السلام عليكم

بارك الله فيك اخي الكريم عماني

نعم كما ذكرت قمت بحل المشكلة

وهذا هو الكود

لكن لدي مشكلة اخرى

وهي انني عندما اسمح للمستخدم بإدخال رقم مكون من N منازل

واريد ان افحص اذا كان الإدخال هو رقم او لا، لا استطيع ذلك، حاولت ذلك بعدة طرق مثل استخدام sacnf() او isdigit() للفحص، ولكن دون جدوى

اتمنى من احدكم المساعدة

هذا هو الكود

# include <stdio.h>
# include <stdlib.h>
# include <time.h>
# include <ctype.h>

#define N 4
#define M 10

void main()
{
	unsigned int iseed = (unsigned int)time(NULL);
	srand (iseed);


	int arr[N]={NULL};
	int i,j;
	int num,num1;
	int flag=1;



	for (i=0;i<N;i++)
		arr=-1;


	do{
		arr[0]=rand()%10;
	}
	while(arr[0]==0);

	for (i=1; i<N ; i++)
	{
		flag=1;
		for (j=0;j<i;j++)
		{
			flag=1;
			if (arr==-1)
				arr=rand()%10;
			if (arr[j] == arr)
			{
				i--;
				flag=0;
			}
			if (flag==0)
			{
				arr[i+1]=rand()%10;
				break;
			}
		}

	}

	for (i=0;i<N;i++)
		printf ("%d" , arr);
			printf ("\n");



	for (i=0;i<M;i++)
	{
		printf ("Please enter guess no.%d : ",i+1);
		scanf("%d", &num);


		if (isdigit(num))
		{
			printf("Invalid input!\n");
		}
		else printf("Wrong input!\n");

	}



}

تم تعديل هذه المشاركة بواسطة حامي الحمى في 10 ديسمبر 2009 في 16:55

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#5

عفوا فهمت السؤال خطأ

اخي انت في كلا الحالات تقوم باستلام integer فقط . باستخدام scanf وتخزين القيمة في متغيير من نوع انتيجر .

عدا ذلك لن يقوم باستلام القيمة اصلا.

يمكنك ذلك باستخدام getch()

تحياتي

تم تعديل هذه المشاركة بواسطة omani في 10 ديسمبر 2009 في 18:17

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#6

السلام عليكم

بارك الله فيك اخي

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

انا اريد ان اطلب من المستخدم ان يقوم بإدخال رقم مكون من N منازل (لنفرض N=4)

اريد ان اطلب منه ادخال رقم مكون من 4 منازل

فاذا ادخل مثلا:

1234 فهو رقم صحيح

واذا قام بإدخال:

123a

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

فما علاقة getch() بالأرقام ؟

ارجو ان توضح لي وتعطيني مثال بسيط

جزيت خيرا

السلام عليكم

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

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