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

إلى كل الأعضاء أتمنى المساعدة؟؟؟؟

مغلق
بدأه ضوء الفجر في 26 ديسمبر 2007 · 5 رد · 581 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم...

عندي مشكلة واتمنى المساعدة.. انا طبعاً الى الآن مبرمجة صغيرة وممكن مشكلتي تكون بسيطة ... لكن هي بالنسبة لي مشكلة حقيقية واتمنى من كل قلبي انكم تساعدوني...

مشكلتي في الكود اللي تحت في الدالة ال

check ..

انا اريده ان يتاكد ان المدخل من نوع

string

هذا الكود ينجح معي في حالة اذا كان المدخل صحيح يعني من نوع

string

اما اذا كان المدخل خطأ فالمفروض أن يدخل المستخدم اسم آخر وتتأكد الدالة مرة اخرى ان المدخل صحيح وبعد ذلك تطبع لي انا

مشكلتي انه ما يطبع لي مرة أخرى يعني اكيد فيه مشكلة في نفس الكود أنا حاولت لكن محاولاتي باءت بالفشل...

ولا أعلم هل استطعت ان اشرح ما اريد بالصورة الصحيحة؟؟

#include <iostream>
#include <string>
#include <ctype>
using namespace std;

string check( char a[] ){

	string name;
	int counter;
	bool checkn;
	char na[50];

	for (int i=0; i<50; i++)
		na=a;

	do{
		counter=0;

		for (int i=0; na!='\0'; i++)
			counter++;

		for( int k=0; k<(counter-1); k++ ){
			if(isalpha(na[k])!=0 || na[k]==' '){
				checkn=true;
			}
			else{
				cout<<endl<<"worng name enter another name";
				cin.getline(na,50,'\0');
				checkn=false;
			}
		}
	} while(checkn==false);

	cout<<endl;

	name = na;

	return name;
}


int main(){

	char name[50];

	cout<<"enter your name";
	cin.getline(name,50,'\n');

	string g;
	g = check(name);

	cout<<g;

	return 0;

}

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 26 ديسمبر 2007 في 22:44

#2

ألهذا الحد سؤالي لا يستحق الاهتمام؟؟

كنت أتوقع أن أجد حتى على الأقل رداً واحداً..

إذا كنت مقصرة في شرحي للكود أتمنى أن أجد سؤال عنه؟؟

ولكن لاشيء...

متأسفة إذا كنت أسأت ولكن انا فعلاً صدمت...

#3

السلام عليكم ,,

لا أدري إن كنت فهمت المطلوب, و لكن إن كنت تريدين التحقق أن مصفوفة نصية تحتوي على حروف فقط - ذلك يتضمن المسافات و ' - يمكنك كتابة التالي :

bool Check( char src[], int size ){
	for ( int i = 0; i < size; i++ ){
		if( !isalpha(src) )
			return false;
	}
}

حيث src هي المصفوفة النصية, و size هي عدد الحروف التي في المصفوفة,

من الأفضل أن تقومي بفصل عملية إدخال الاسم مرة ثانية عن هذه الدالة, لكي يصبح البرنامج أوضح للقارئ ,

تحياتي ,,

#4

السلام عليكم..

يعني انت قصدك انه في طريقة ارسال القيم كان عندي خطأ؟؟؟

أو انك تقصد انه المفروض استخدم هالداالة بدل الدالة ككل؟؟؟

لكن انا رح استخدم هالدالة في برنامج اكبر والمطلوب ان المستخدم يدخل الاسم واول مرة رح يرسل هالاسم بالmain

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

ان شالله قدرت اوضح اكثر

وتشكر على المساعدة

#5

إذا كنت قد فهمت السؤال فأنت تريدين التحقق إذا كان الاسم المدخل يتكون من حروف فقط,

دمج عملية الإدخال في الدالة يعتبر تصميم سيئ جداً,

بدلاً من ذلك, يمكنك اتباع الخطوات التالية :

في الـ main ..

1- طلب ادخال الاسم من المستخدم.

2- التحقق عن طريق الدالة إذا كان الاسم مسموحاً به.

3- إذا كان الاسم يحتوي على أي شيء غير الحروف اعرض رسالة خطأ للمستخدم و اطلب منه ادخال الاسم مرة ثانية و عد إلى الخطوة رقم 2 للتحقق من جديد.

إذا كان الاسم يحتوي على حروف فقط قم بعمل ما تريد بالاسم.

#6

أنا آسفة ما دخلت النت ,, كنت مشغولة

تقريبا ... انت فهمت قصدي ,, بس انا ما فهمت وين الخطأ؟؟؟؟؟

هذا الموضوع مغلق.

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

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

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

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

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