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

ماهي أقصر طريق لمعرفة الأعداد التتابعية ؟

بدأه Snack3r في 28 يونيو 2012 · 29 رد · 2,700 مشاهدة · في اختبر قداراتك
مشاركة: واتساب X فيسبوك تيليجرام
#26

هذا تصحيح لكود الأخ momo .. أستاذ أحمد .. يمكنك متابعتها ..

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1000
long a;
void condition(long s)
{
    	if(s==a){printf("oui\n"); exit(0);}
    	else if (s>a) {printf("non\n"); exit(0);}
}
int main()
{

long s[MAX]={0};int t[MAX]={0},i=0,j=0,k=0,n=0;char buffer [MAX];



printf("enter nombre:\t"); scanf("%d",&a);
itoa (a,buffer,10) ;	n=strlen(buffer);


for(;i<n;i++)
t=(int) buffer-'0';


for(i=0;i<n;i++)
{s[0]+=(long)t; condition(s[0]);}

for(i=1;i<n+1;i++)
{s=2*s[i-1]-t[i-1]; condition(s);}


for(k=0,i=n+1;;k++,i++)
for(j=n+k;j>k;j--)
{s+=s[j]; condition(s);}

    	return 0;
}

بالنسبة للBig Ineger هل مشكلتنا هي التعامل مع الأرقام الكبيرة أم سرعة الحل .؟؟

حتى بالنسبة للأرقام ذات ال8 منازل فالحلول المطروحة بطيئة ...

فهل السؤال الآن عن السرعة أم عن الأعداد الكبيرة؟؟

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 1 يوليو 2012 في 15:07

#27
اقتباس
فهل السؤال الآن عن السرعة أم عن الأعداد الكبيرة ؟؟

المكتبات التي تُوفر الــ BigInteger, تضع في الحسبان كلا من السرعة و الحجم :)

#28
أحمد الشنقيطي كتب:

الكود يحتوي على أخطاء أثناء الترجمة, يمكنك مراجعته.

صححت بعض الأخطاء المطبعية في الكودين ويشتغلان معي بشكل صحيح دون أن يرسل لي الكومبيلر أي رسالة خطأ

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 20

int main()
{
int i=0,c=0,n=0; long  T[MAX]={0} ;char a[MAX]={0};
printf("entrer nombre:\t");         	scanf("%s",a);
c=atol(a);                          	n=strlen(a);
for(;i<n;i++)               	T=(long)a-'0';

    	for(;;) {
            	for(i=0;i<n ;i++)  T[n] += T ;
            	for(i=0;i<n;i++) T = T[i+1];
            	if(T[n] == c){
            	printf("It's Okay ;");
            	break;
            	}
            	if(T[n] > c){
            	printf("It's Not Okay;");
            	break;
            	}
            	T[n]=0;
    	}
    	return 0;
}

الكود الثاني

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 20


int main()
{

long s[MAX]={0};int t[MAX]={0},a=0,i=0,j=0,k=0,n=0;char buffer [MAX]={0};

void condition(long s)
{
    	if(s==a){printf("oui\n"); exit(0);}
    	else if (s>a) {printf("non\n"); exit(0);}
}

printf("enter nombre:\t"); scanf("%d",&a);
itoa (a,buffer,10) ;	n=strlen(buffer);


for(;i<n;i++)
t=(int) buffer-'0';


for(i=0;i<n;i++)
{s[0]+=(long)t; condition(s[0]);}

for(i=1;i<n+1;i++)
{s=2*s[i-1]-t[i-1]; condition(s);}


for(k=0,i=n+1;;k++,i++)
for(j=n+k;j>k;j--)
{s+=s[j]; condition(s);}

    	return 0;
}

ولكن يا ترى هل هناك أخطاء في الكودين لم أستطع اكتشافها

إذا كان بإمكانك أستاد شنقيطي أن تكشف لي أخطائي وجزاك الله خيرا

i love you mama

#29

أخي هناكخطأ واضح وهو أنك تضع الدالة condition داخل الدالة main وهذا خطأ ...

وقد صلحت لك الكود .. ويمكنك أن تقرأه في الأعلى ..

تحياتي

1
#30
مصطفى 36a2 كتب:

أخي هناكخطأ واضح وهو أنك تضع الدالة condition داخل الدالة main وهذا خطأ ...

وقد صلحت لك الكود .. ويمكنك أن تقرأه في الأعلى ..

تحياتي

صحيح ماقلته أخ مصطفى

هذا الخطأ أدركته منذ بداية إعدادي للبرنامج ولكن نسيت تصحيحه بعدما اشتغل معي الكود بشكل جيد

+1

i love you mama

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

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

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

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

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