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

مشكلة برمز الحروف بالمصفوفة

مغلق
بدأه Eng.Fedail في 24 نوفمبر 2005 · 22 رد · 1,152 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يعطيكم العافية شباب تم تطبيق كل النصائح اللي قلتوها وتفيذ البرنامج بقي عندي مشكلة صغيرة

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

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

# include <iostream.h>
# include <cstring>
void main (){
	int i;
	int h,g;
	h=g=0;
	char t;
	int no[10]={0};
	char x[5][20]={0};
	char d[20]={0};
	for(i=0;i<5;i++)
	{
  for(g=0;g<20;g++) d[g]='\0';
  cin.getline (d,20);
  for (t=0;t<20;t++)
  {
 	 x[t]=d[t];
  }
	}
  
	for(g=0;g<5;g++)
	{
  for(h=0;h<20;h++)
  {
 	 cout<<x[g][h];
  }
	cout<<endl;
	}
  
 	 
      for(h=0;h<10;h++)
      {
     	 if ((x[0][h]>=48)&&(x[0][h]<=59)) no[h]=x[0][h];
      }
    
    
    for (g=0;g<10;g++){
    cout<<no[g];
    }

}

New Text Document.txt

تم تعديل هذه المشاركة بواسطة Sultan_Althibity في 24 نوفمبر 2005 في 21:00

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#2

أولاً وقبل كل شيء أنت لا تستخدم المكتبة cstring .. لم أرى أمراً واحداً يستدعـي تضمين هذه المكتبة..

ثانياً الكـود يعـمل 100% ... إذا لم يعـمل لديك فالمشكلة في مترجمـك ..

هذا ما أود ذكره لك قبل أن أجيب على أسئلتك

....

بالنسبة لأسئلتك إذا كان قصدك أنك تدخل أعـداد في مصفوفة char .. فالكـود يعـمل وليس فيه أي مشكلة

إذا كان قصدك شيء آخر .. فأرجو تحديده وتحديد وظيفة البرنامج المطلوبة

#3

مشكوووور عزيزي على المرور

فعلاً لم أستعمل المكتبة cstring لم ينتهي الكود بعد

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

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

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#4

كما تعلم فأن الأعداد بلآسكي تبدأ من 48 إلى 59 وقد حدتته بالكود لكنه لم ينفع

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#5

السلام عليكم

إذا كنت تريد تحويل النص إل أرقام توجد طريقتين

1 - إ ستخدم الدالة atoi

2 - كما أخبروك عن طريق الأسكي , إستبدل الجزء الأخير من الكود بهذا

for(h=0;h<20;h++)
	{
  if ( (x[0][h]>=48) && (x[0][h]<=59) )
 	 no[h]=x[0][h]-48;
	}
   
	for (g=0;g<10;g++)
	{
  if(x[0][g]==0) break;
  cout<<no[g];
	}
#6

لا لا أخوي ما أبغى أحول النص إلى أرقام

أبغا أميز الأرقام عن الحروف في مصفوفة حرفية وأحطهم في مصفوفة عددية

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

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#8

طيب راح أوضح أكثر مع أني والله وضحته

حبيبي مصفوفة من نوع char

قام المستخدم بإدخال أرقام مع الأحرف أوكي

الحين أبي أطلع الأرقام من المصفوفة الحرفيه هذي وشلون وأحطهم بمصفوفة رقمية

والله وضحت كذا

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#9

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

int no[10]={0};

الحين حولتها ل char وأنحلت بقيت مشكلة الحين الأعداد اللي سحبنها من المصفوفة x الحرفية وحطيناها n بعد حرفية كيف أتعامل معها على أنها رقمية وأزيد عليها

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#10

ما أحد عنده حل يا شباب

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#11

أخي العـزيز راجع مكتبات السي والسي بلس بلس وخاصة المكتبتين ctype و string (في لغة السي القديمـة) وستجد ضالتك هـناك .. حيث يوجد دالة تقوم بتحويل الأحرف إلى أرقام .. وبصراحـة فإن سؤالك غير واضح .... لذلك ابحث عـما تريد وأجب عـن السؤال بنفسـك ... فهذا أفضل وإن كنا نريد مساعـدتك

#12

للحين ما فهمتني أخوي

على العموم أنا حاولت بكذا طريقة

راح أوريكم الطرق

	for(h=0;h<10;h++)
      { 
     	 if ((x[0][h]>=48)&&(x[0][h]<=59)) no[h]=x[0][h];
      }

طبعاً هنا دخلنا بالمصفوفة لكن يعامله معاملة حرف وليس رقم

هنا سحب 47 من كل واحد علشان يصير رقمه نفسه وليس أسكاي

for (o=0;o<10;o++)	tn[o]=tn[o]-47;

وكذا يكون صار مخزن رقمه هو

يعني لو دخل واحد رقمه الآسكي 48 سحيت منه 47 صار 1 للحين أوكي

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

int  no2[10];
for (o=0;o<10;o++)	no2[o]=no[o];

بليييييييييز حل لي ثلاث أسابيع وأنا أسئلكم ولا واحد راضي يساعدني تسليم البروجكت يوم الثلاثاء

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

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#13

شوف أخوي حسان وش راد هنا

/index.ph...=62998&hl=ctype

حاولت أتبعها ولكن مانقذ

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#14

الجواب كان صفر بكل الحالات وليس رقم طبعاً ألغيت العمليات اللي مسويها آخر شي علشان يعامله صح ولكن لا أمل

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#15

plz plz up

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#16

قلنا لك قبل ذلك, السؤال غر واضح! وضح سؤالك بالتفصيل بدل ان تضعه في كلمتين

#17

يا أخوي والله السؤال واضح كيف زي كأني أقول كيف أحدد المدخل integar ولا character

اخوي يرحم والديك

البرنامج يقوم بطلب من المستخدم بأدخال خمسة أسطر

أكيد راح يدخل أرقام من ضمنها وهذه الأرقام راح تتخزن في character array

أنا أبغا أطلع الأرقام هذي من المصفوفة الحرفية وأخزنها في مصفوفة رقمية وأجمعها أو أضربها أو أي شي

لكن وجدت مشكلة أن الأرقام لما راح يخزنها بالمصفوفة الحرفية راح يعاملها معاملة character وليس integer

كيف أخليه يحولها ل integer بعد ما يجدها

أكيد الحين واضح ميه بالميه

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#18

طيب قول من الأول عندك string تريد تحويله لرقم.

استخدم atoi

http://www.cplusplus.com/ref/cstdlib/atoi.html

#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
    char x[] = "123";
    int y = atoi(x);
    cout << "x is " << x << endl;
    cout << "y is " << y << endl;

    return 0;
}
#19

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

حاولت بعدت طرق ولكن مازالت النتيجة صفر

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#20

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

#21

كتيتله move 1000

عطاني الناتج صفر

سحبت الرقم على مصفوفة لحالها عن طريق ال ascii بعد عطاني صفر

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#22

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

طيب جرب هذا المثال

#include <iostream>
#include <stdlib.h>
using namespace std;

int main(int argc, char *argv[]) {
  if(argc == 2) {
    int num = atoi(argv[1]);
    cout << "[+] " << argv[1] << " = " << num << endl;
  }
  else
    cout << "[-] Usage : " << argv[0] << " <any number>" << endl;
  return 0;
}

جربه بهذا الشكل

xxxx 1234

حيث xxxx اسم البرنامج , أدخل له أي رقم

لو المشكله شيء آخر هات الكود اللي بياخذ من المستخدم النص ويحوله لرقم

#23

مشكووووووور عزيزي وأنا حليت المشكلة طريقة ثانية

عند عودتي من السفر راح أحطلك الكود

ولك جزيل الشكر

joseph.gif

logo.gif

CCNA 640-802

مدونتي

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

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

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

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

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

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