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

خطأ بداخل for loop وتحديدا if

مغلق
بدأه SB4 في 22 أبريل 2006 · 7 رد · 586 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي خطأ ببرنامج وأتمنى ألقاء الحل عندكم

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

القصد من البرنامج هو عمل يضع الأرقام من 1 إلى 50 بشرط أن تكون الأرقام تقبل القسمة على واحد وعلى نفسها فقط يعني 9 تقبل القسمة على نفسها وعلى 3 إذا لا تضاف وهكذا بإستخدام for loop أو while loop أو do ... while loop ويكون الناتج 1,2,3,5,7,11,13 ....etc

وشكرا مقدما

ds.txt

تم تعديل هذه المشاركة بواسطة SB4 في 22 أبريل 2006 في 21:22

#2

يعني المطلوب عمل Algorithm للحصول على الأعداد الأولية حتى 50

طيب الكود أصلا به خطأ لغوي

for(j=2;j<i;j++)
{
   if(i%j=0)
}

فين الbody بتاع ال if statement ؟؟؟

طيب أنا حقولك على الفكرة و إنت إكتب الكود بنفسك

إنت أول حاجة حتعمل Data Structure ذي مصفوفة مثلا أو Vector حتخزن فيها الأعداد الأولية إللي البرنامج جابها و بداية حنحط فيها العدد 2

و بعدين حتعمل لوب لغاية 50

في كل خطوة في اللوب دي حتعمل لوب داخلي تشوف إذا كان العدد قابل للقسمة على أي عدد في الData Structure إللى إتكلمنا عنها فوق و قابل للقسمة هنا معناهي أن باقي القسمة = صفر

و لو في أي عدد قبل القسمة يكون هذا العدد غير أولي فلا يتم إضافته للData Structure

و إن لم يقبل القسمة على أي عدد في الData Structure فيكون هذا عدد أولي و يتم إضافته للData Structure

تكمل هذه العملية على باقي الأعداد حتى 50

#3

شكرا أخوي usama707

أنا أعرف الخطأ وين بالضبط وفاهم الفكرة بس مشكلتي بالتطبيق طبعا الـ if ما درستها لحد الألحين بس حاولت أكتبها بأستخدام معلوماتي بالبرمجة في لغة الأكشن سكريبت للفلاش لأن تقريبا في تشابه في الأوامر بإختلاف الطريقة

#4
if(i%j=0)

should be

if ( i % j == 0 ) 
{

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#5
 

   int temp =1;
printf("1 2 3  "); 

 while( temp <=50 ) 

 { 

if((temp%2!=0)&&(temp%3)!=0)
 {

 printf("%d ",temp");
  temp ++ ;
 }// end if

 else 

 temp ++ ;
} //end while

JiFvydhdnG.gif

There are two ways to live: you can live as if nothing is a miracle;

you can live as if everything is a miracle

#6

حلو يعطيكم العافية يعني ألحين صار في برنامجين لهما نفس الغرض

هذا الأول :

#include<stdio.h>

void main()
{
     int i,j,k;
     for(i=1;i<=50;i++)
     {
        k=0;
        for(j=2;j<i;j++)
        {
          if(i%j==0)
          {
           k=1;
          }
        }
        if(k==0)
        printf("%d\n",i);
     }
     
     while(1);
}

والثاني ضافة الأخ الكريم Timmy مشكوراً

#include<stdio.h>

void main()
{
int temp =1;

while( temp <=50 ) 

{ 

if((temp%2!=0)&&(temp%3!=0))
{

printf("%d ",temp);
temp ++;
}// end if

temp ++;
} //end while 

while(1);
}

وعندي سؤألين أولهم في البرنامج الأول شنو فايدة k هذا أللي مو فاهمة لحد ألحين ؟

والسؤال الثاني في البرنامج الثاني في السطر :

if((temp%2!=0)&&(temp%3!=0))

ليش قلنا 2 و 3 ليش ما نقوم 5 و7 ؟ وبعدين لو تلاحظ أن الناتج راح يكون 1,5,7,11...etc لكن البرنامج الأول يكون الناتج 1,2,3,5,7,11 ... etc شنو السبب ؟

#7

اسف اخي فقد غفلت عن هذا ولكن يمكنك اضافتهم فيكون البرنامج ماشي ميه بالميه

و لم استخدم لووب لاني لااحب ان اكثر من loops لانها مضيعه لوقت البرنامج :)

اما بالنسبه k

فانه استخدمه كا flag ليرى إذا كان هنالك رقم اخر يقبل القسمه على الرقم ماعدا 1 و الرقم نفس

فاذا كان هنالك رقم اخر .......وضع قيمه k مساويه واحد

وعند الانتها من ال loop فانه اذا تغيرت قيمه ال k فهذا يعني انه ليس prime number و العكس صحيح فيقوم بطباعته

ارجوا ان اكون قد افدك

JiFvydhdnG.gif

There are two ways to live: you can live as if nothing is a miracle;

you can live as if everything is a miracle

#8

شكرا أخوي Timmy :)

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

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