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

الادخال لمتغير رقمي يرقل الادخال لمتغير حرفي

مغلق
بدأه الزهرة الرقمية في 14 يونيو 2007 · 14 رد · 1,064 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اثناء البرمجة لبرنامجي صادفتني مشكلة لاأعرف سبباً لها اتمنى الاجابة عنها ، لدي برنامج يحتوي على متغير رقمي ومصفوفة حرفية وعند

الادخال الرقمي باستخدام cin لاتصادفني أي مشاكل ولكن المشكلة بعدها عند الادخال الحرفي للمصفوفة باستخدام cin.getline لادخال سلسلة تتخللها فراغات .

فلماذا ياترى عند اخال رقمي متبوعاً بعد ذلك ادخال حرفي تصادف مشكلة في ادخال البيانات الحرفية وللوضوح أكثر البرنامج التالي يحتوى على هذه المشكلة :

 # include<iostream.h>
main()
{
	int n;
	char ss[50];
	cin>>n;
	cin.getline(ss,50);
	cout<<n<<"   "<<ss;
}
#2

لازم تكون ss عبارة عن مؤشر الى char :

	int n;
	char* ss = new char[50];
	cin>>n;
	cin.getline(ss,50);
	cout<<n<<"   "<<ss;

	delete [] ss;

لا ادري مالفائدة من المتغير n ، هل هو لتحديد حجم المصفوفة ؟

ولاتنسى ان تقوم بحذف ما قمت بحجزه من الذاكرة وذلك باستخدام عملية الdelete .

#3

اشكرك (مجلد جديد )على المشاركة الطيبة للاجابة عن هذا السؤال .

لكن الكود لم يعطي حل ولازالت المشكلة قائمة ، والبرنامج موجود هو فقط برنامج بسيط اوضح فيه المشكلة التي تظهر، هذا للاجابة عن سؤالك لاستخدام المتغير الرقمي .

#4

يعني لم يقبل ss حتى بعد تحويلها على مؤشر ؟ غريبة

#5

ارجو من أعضاء المنتدى النظر في هذه المشكلة والرد بسرعة للأهمية

#6

الأخ الفاضل ...

جرب استخدام

#include <iostream.h>

int main(int argc, char* argv[])
{
	int		n;
	char	ss[51];

	cin >> n;
	cin.eatwhite();
	cin.getline(ss, 50);
	cout << n << "   " << ss;

	return 0;
}

شكراً

تم تعديل هذه المشاركة بواسطة Eng. Usama El-Mokadem في 15 يونيو 2007 في 08:22

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#7

الأخ العزيز Eng. Usama El-Mokadem

لا أعرف كيف أشكرك ، دائماً لك مداخلات طيبة في الاجابة عن اسئلتي .

البرنامج حل المشكلة بشكل سليم ، لكن هل لي بالسؤال عن cin.eatwhite() ماهو عملها ؟

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

#8

اكرر السؤال مرة أخرى؟

#9

أختي الزهرة الرقمية

هل تعرفين ما فائدة ما قام به Eng. Usama El-Mo ؟

دائماً عن التعامل مع المصفوفات الحرفية array of char يجب إبقاء حرف أخير يكون مضبوط بقيمة NULL مع عدم تغييره إلا بمعرفة أو دقة .

وبالنسبة للدالة eatwhite , أول مرة أسمع عنها وما أظنها موجودة لكن من إسمها أظنها تتجاهل الفراغات في الstream.

#10

لم أفهم هل من توضيح أكثر؟

#11

جربت طريقة اخي اسامة لكن عند عمل compile للملف يظهر خطأ وهو ان دالة eatwhite() غير معرفه داخل ال istream :

اقتباس
struct std::istream' has no member named 'eatwhite

تم تعديل هذه المشاركة بواسطة مجلـد جديـد في 18 يونيو 2007 في 11:24

#12

و أنا جربتها أيضا لكن الكمبايلر يعطيني أخطاء ..

#13

لا أعرف ماذا تقصدون ؟

البرنامج الذي عرضه الأخ Eng. Usama El-Mokadem ليس فيه أي أخطاء تذكر ، فأنا مجربه الكود على بيئة VisualC++ والبرنامج سليم مئه المئه .

فما هو السبب الذي عندكم؟

#14

البرنامج ليس به أخطاء، و لكن الكمبايلر الذي نستخدمه لا يتعرف على هذه الداله و لا يعرف مكانها ..

#15

بالضبط المشكلة في نوع المترجم ، عن نفسي استخدم gcc لان البرنامج هو Dev-C++ والله اعلم

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

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

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

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

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

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