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

إلزام الuser بإدخال بيانات من نفس النمط المطلوب

بدأه العُبد في 21 مارس 2008 · 8 رد · 1,049 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

1. أريد أن أعرف هل من الممكن إلزام الuser بإدخال بيانات معينة تطابق بحيث مثلاً لو أعطيت اليوزر

int length;

وقلت له

cin >> length;

بعد هذا اليوزر قام أدخل لي بدل الint أدخل حروف string

الكل طبعاً يعرف ايش مصير هذا البرنامج بعد ما يضعظ Enter بلوحة المفاتيح

لذلك أتمنى أحد أن يجيبني ما هو الكود المطلوب لحصر

هل معقولة يجب وضع جميع الحروف في دالة شرطية

if( length == a || length == b .....إلخ )

وحتى لو تم عمل مثل هذه الدالة ستظهر نفس المشكلة

فالرجاء من الأخوة أصحاب الخبرة إعطائنا نبذة عن هذا الموضوع.

شاكرين ومقدرين :wub:

#2

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

هناك طريقة بسيطة

تعتمد على ادخال نص ثم اختبارة وتحويله بعد ذلك الى رقم.

وهذا كود التحويل فقط.

#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{
    string str;
    const char *a=str.c_str(); 
    cout<<"Enter Number:";
    cin>>str;
    cout<<atoi(a)*2; 


return 0 ;
}
tvquran_6.gif

#3

وهذه دالة تختبر ثم تحول

int strint_to_int(string str)
{
     const char *a=str.c_str(); 
    for(int i=0;i<str.length();i++ ) 
        if( !(isdigit(str)) ) 
            return -1;
    return (atoi ( a));
}
tvquran_6.gif

#4

جميل .. لكن لم أفهم الكود جيداً ممكن توضح لي من وين اجا

str.length()

str.c_str()

هل هذا تبع المكتبة المعيارية:

#include<cstdlib>

أم يعتبر من دالة في class معين أو ما شابه!

وسؤال آخر الكود يأخذ string ويخزنه في مؤشر من نوع char

ما فهمت الفائدة الأساسية من هذا العمل ..

أنا اكتشف isdigit الآن راح أسوي عليها تجارب وأرجع أرد لك خبر

شكراً لردك الكريم أخي العزيز فهد

موفق

تم تعديل هذه المشاركة بواسطة العُبد في 21 مارس 2008 في 16:04

#5

شكراً على الدالة اللطيفة راح أستخدمها كثير

شكراً لك

هذا مثال:

int strint_to_int(string str)
{
	const char *a= str.c_str(); 

	for(int i=0; i < str.length(); i++) 	
		if(!(isdigit(str))) 
			return -1;

	return (atoi(a));
}

int main()
{
	string num;

	cout << "Enter Number: ";
	cin >> num;

	if(strint_to_int(num) == -1)
		cout << "you input string. only numbers are allowed." << endl;
	else
		cout << strint_to_int(num) << endl;

	return 0;
}

شكراً لك مرة أخرى

#6

حياك الله .

بالنسبة لدالة التحويل atoi تستخدم من اجل التحويل من نص الى رقم.

وتاخذ بارمتر نص من النوع مؤشر الى تشار. لذلك حولت من سترنق الى تشار.

أما الدالة isdigit فهي من اجل معرفه الحرف هو رقم ام لا.

وبالتوفيق.

tvquran_6.gif

#7

مرحبا اخي

استخدم الـ Exception Handling

مثال برنامج يطلب من المستخدم ادخال قيمة في متغير من نوع int وفي حال ادخال حرف يطبع له الرسالة this is not number

#include<iostream>
using std::exception;
using std::cout;
using std::cin;
using std::cerr;
main()
{
	int x;
		cin.exceptions(cin.failbit);
	try
	{
		cin>>x;
		cout<<x;
	}
	catch(...){cerr<<"This Is Not Number";}
	return 0;
}

تحياتي

تم تعديل هذه المشاركة بواسطة time1 في 21 مارس 2008 في 17:27

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#8

أخي time1 لك جزيل الشكر عل المعلومة المفيدة

راح أستفيد منها أيضاً، إذا فيه طرق ثانية أرجو من الأخوة إخباري

شكراً لكم

#9

اتفضل اخي هذا البرنامج البسيط

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "ctype.h"

				int i = 0;
	printf("Please Input Integer Number:- \n ");		
	i = getche();
	while(!isdigit(i))
	{
		clrscr();
		printf("Please Input Integer Number:- \n ");		
		i = getche();
	}
	printf(""+i);

يقوم هذا البرنامج بأخذ Character من شاشة الدوس فإذا كانت Integer فسوف يجتاز جملة ال While ويقوم بطباعة الرقم

واذا لم تكن Integer فسوف يدخل داخل ال While ويبقى داخله حتى يقوم المستخدم بإدخال Integer

وجاهز لأي سؤال

اخوك

ابوكارليتو

تم تعديل هذه المشاركة بواسطة Carlito في 22 مارس 2008 في 22:26

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

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

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

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

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