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

هذه محاولتي و أرجو المساعدة

بدأه khaled_prg في 23 مايو 2010 · 6 رد · 577 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

نص التمرين:

اكتب برنامج بلغة السي يطلب من المستخدم إدخال مجموعة من الأعداد , البرنامج يقوم بإظهار الأعداد تباعا عند إدخالها على الشاشة.

عندما يدخل المستخدم الصفر فإن البرنامج يظهره ثم يواصل الكتابة على السطر الموالي , فإذا أدخل عدد سالب تماما فإن البرنامج يتوقف بعد ان يظهره على الشاشة.

مثال على مخرجات البرنامج:

4 8 7 0

2 4 0

7 8 9 11 0

-5

محاولتي في التمرين:

#include<stdio.h>
int main()
{
	 int nombre[100],n,i=0,j;
	 printf("entrez un nombre:");
	 scanf("%d",&n);
	 while(n>=0)
	 {
		 nombre=n;
		 i++;
		 scanf("%d",&n);
	 }
	 nombre=n;
	 for(j=i;j>=0;j--)
	 {
		if(nombre[j]==0)
		printf("0 \n");
		else
		printf("%d ",nombre[j]);
	 }
	 printf("\n\n");
	return 0;
}

ملاحظات على محاولتي:

1-لا يسمح باستخدام المصفوفات (و هو ما لم أستطع التقيد به !)

2-قمت بإظهار الأرقام بشكل معكوس (أول رقم مُدخل هو آخر رقم يُظهر)

وشكرا مقدما.

#2

إستخدم الخاصية debug لتجد الخطء

1 −1
#3

تحتاج استخدام getch :

#include<stdio.h>
#include<conio.h>
int main(int argc, char *argv[])
{
	char c;
	int ok=0;
 while(c=getch()){
	 if((c==' ') && (ok==1)) break;
	 else if(c=='0') {printf("%c\n",c); continue;}
	 else if(c=='-') ok=1;
	 printf("%c",c);
	}


 return 0;
}
tvquran_6.gif

#4
فهدالشلوي كتب:

تحتاج استخدام getch :

#include<stdio.h>
#include<conio.h>
int main(int argc, char *argv[])
{
	char c;
	int ok=0;
 while(c=getch()){
	 if((c==' ') && (ok==1)) break;
	 else if(c=='0') {printf("%c\n",c); continue;}
	 else if(c=='-') ok=1;
	 printf("%c",c);
	}


 return 0;
}

هذه اضافه على الكود لتعامل مع الضغط على Enter

#include<stdio.h>
#include<conio.h>
int main(int argc, char *argv[])
{
        char c;
        int ok=0;
 while(c=getch()){
         if((c==' '||c==(char)13) && (ok==1)) break;
         else if(c==13)
         {
            printf(" ");
            continue;
         }
         else if(c=='0') {printf("%c\n",c); continue;}
         else if(c=='-') ok=1;
         printf("%c",c);
        }


 return 0;
}
1
#5
اقتباس
إستخدم الخاصية debug لتجد الخطء

لا يوجد أي خطأ في محاولتي ! وهي شغالة 100% و لكنها لا تلتزم بشروط التمرين ! فقد استخدمت المصفوفات و أظهرت الأرقام بشكل معكوس !! و هذا ما يخالف قواعد التمرين !

اقتباس

تحتاج استخدام getch :

#include<stdio.h>
#include<conio.h>
int main(int argc, char *argv[])
{
        char c;
        int ok=0;
 while(c=getch()){
         if((c==' ') && (ok==1)) break;
         else if(c=='0') {printf("%c\n",c); continue;}
         else if(c=='-') ok=1;
         printf("%c",c);
        }


 return 0;
}

أشكرك جزيل الشكر على المساعدة و إن شاء الله تكون في موازين حسناتك :)

اقتباس
هذه اضافه على الكود لتعامل مع الضغط على Enter

#include<stdio.h>
#include<conio.h>
int main(int argc, char *argv[])
{
        char c;
        int ok=0;
 while(c=getch()){
         if((c==' '||c==(char)13) && (ok==1)) break;
         else if(c==13)
         {
            printf(" ");
            continue;
         }
         else if(c=='0') {printf("%c\n",c); continue;}
         else if(c=='-') ok=1;
         printf("%c",c);
        }


 return 0;
}

+1 :wink: ولو استطعت الزيادة اكثر لفعلت :wub: (تستحق أكثر)

ما شاء الله عليك :) اسلوب في غاية الروعة :wub: الله يحفظك و يبارك فيك.

لو تكرمت أخي الكريم بشرح مفصل (بعض الشيء) للطريقة التي اتبعتها أكون شاكر لك ودمت بألف خير.

دمتم في أمان الله.

تم تعديل هذه المشاركة بواسطة khaled_prg في 23 مايو 2010 في 11:29

#6

ممكن توضح شرط while لاني ما فهمته عشان توضح الفكرة وملعش على المداخلة ، بارك الله فيك

#7

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

اخي الكريم اظن ان الاستاذ يريدك ان تستخدم المؤشرات بدلا من استخدام المصفوفة

وما من كاتب إلا سيفني .. ويبقي الدهر ما كتبت يداه.

فلا تكتب بكفك غير شئ .. يسرك في القيامة ان تراه.

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