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

برنامج عجيب

مغلق
بدأه AhmedSameh في 24 أبريل 2004 · 7 رد · 728 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اريد استشارتكم يا جماعة في هذا البرنامج العجيب

#include <iostream.h>
#include <conio.h>

void AS_getline(char string[],int n)
{
	char ch;
	for (int j=0; j<(n-1); j++)
	{
  ch=getche();
  if (ch== '\n')
 	 break;
  
  string[j]=ch;
	}
}
const int o=80;

void main()
{
	char name[o];
	cout << "Enter the name: ";
	AS_getline(name,o);
	cout << name;
}

من المفروض ان الغرض من هذا البرنامج ان يأخذ من المستخدم سلسلة من الحروف بعد ان يساله ادخالها ثم بعد ذلك يظهرها علي الشاشة

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

علما بأن المصرف لا يظهر اي اخطاء او تنبيهات

انا استخدم VC++ 6

والسلام عليكم

#2

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

الله يعطيك العافية على البرنامج أخوي.

انا واجهتني نفس المشكلة في السابق !!

و المشكلة هي استخدم دلات C++ الحديثة للدخل والخرج

 cin  ,  cout

التي لاتعمل بشك جيد مع دلات C القديمة

 printf,scanf,getc(),getche()

يجب ان تختار احدهما , ولا يجوز الجمع بينهما في البرنامج الواحد .

جرب ان تبدل

cout << "Enter the name: ";
cout << name;

بما يلي :

printf("Enter the name");
scanf("%s",&name);
#4

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

بارك الله فيك أخي بشير الرد كافي حقا :)

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#5

السلام عليكم

شكرا للاخين زيدان و بشير

هذا هو البرنامج بعد التعديل

 #include <iostream.h>
#include <conio.h>
#include <stdio.h>

void AS_getline(char string[],int n)
{
char ch;
for (int j=0; j<(n-1); j++)
{
ch = getche();
if ( ch == 'Q' || ch == '\r' )
{
printf("\n\n\n\nout\n\n\n");
break;
}
string[j]=ch;
}
}
const int o=80;

void main()
{
char name[o];
printf("Enter the name: ");
AS_getline(name,o);
printf("%s",&name);
}

ولكن البرنامج يعمل بهذا الشكل فلماذا؟

الشكل معروض في الصورة المرفقة

#6

الصورة

1.ace

#7

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

أخوي احمد . انا أسف ماقدرت افتح ملف الصورة .

ولكن اتوقع ان البرنامج قام بطباعة الاسم ثم بعد ذلك بطباعة رموز غريبة بعده !!

ولحل هذه المشكلة يجب ان تنهي المصفوفة string بالحرف '0\'

ويكون التغيير كما يلي :

void AS_getline(char string[],int n)
{
	char ch;
	for (int j=0; j<(n-1); j++)
	{
  ch = getche();
  if ( ch == 'Q' || ch == '\r' )
  {
  	printf("\n\n\n\nout\n\n\n");
  	break;
  }
  string[j]=ch;
	}
	string[j]='\0'; //  <- add this line
}

وفي النهاية اشكرك يا احمد انت و الاخ بشير والاخ HGB

تم تعديل هذه المشاركة بواسطة زيدان في 27 أبريل 2004 في 03:20

#8

السلام عليكم

الله ينور عليك اخي زيدان

بالضبط مثلما قلت

الله يكرمك

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

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