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

كيف اصحح هذا الكود ؟

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

السلام عليكم

من فضلكم ساعدوني في تصحيح هذا الكود

#include <stdio.h>
main()
{
      int num, i, j, f=0;
      printf("Entrer le nombre des element ");
      scanf("%d",&num);
      int t[num];
      printf("Entrer les element de tableau :");
      for (i=0; i<num; i++)
      {
          scanf("%d",&t);
      }
      for (i=1; i<=num; i++)
      {
          for (j=1; j<=i; j++)
          {
              if (t != t[j])
              {
                       printf("La position de %d est %d\n",t[j],i);
              }
          }
      }
      getch();
}

التمرين

Ecrire un programme (en lengague c) qui permet d'entrer un tableau de n valeurs numériques; 
 pius de chercher et afficher toutes ses valeur, distinetes , avec chacune les posistion ou elle apparait.
 Exemple :
 Soit le tableau : 1 - 2 - 3 - 1 - 2 - 10 - 1
 Le resultat :
 les position de 1 sont : 1, 4, 7
 les position de 2 sont : 2, 5
 les position de 3 sont : 3
 les position de 10 sont : 6

 Où erreur ici

لمن لا يفهم اللغة الفرنسية يستعين ب google

#2

من دون ان اقوم بالترجمة الاخطاء عددها 2 وهي واضحة .. مباشرة عندما رأيتها بالكود السابق ..

وقمت بالتأكد من ذلك برمجيا ..

الخطأ الاول //

int t[num];

كنت تقصد في هذا الكود عملية تعريف مصفوفة حجمها متغير تبعا لعدد الاعداد المدخلة .. مثلا لو ادخل المستخدم 10 سيكون حجم الصفوفة 10 وهكذا ..

لكن هذا لا يمكن مع لغة سي ... لانه يجب تحديد حجم المصفوفة بشكل علني .. لو كانت باستخدام السي++ لاستطعنا استخدام التعريف الداينميكي باستخدام الـPointers مع كلمة الحجز new لكي نحجز مصفوفة متغيرة الحجم عددها بعدد Num ...

لذلك لديك حلين

1- تعريف المصفوفة برقم ثابت متوقع ادخاله او ان يكون هو الـ Max للاعداد المدخلة .. مثلا 20 رقم ..

int t[20];

2- تعيين قيمة كبيرة لحجم المصفوفة ثم بعد ذلك تأخذ منها المطلوب ويهمل الباقي .. سابقا هذه الطريقة لم تكن طريقة صالحه بسبب صغر الذواكر اما الان فهي لا بأس بها ..

int t[200];

هنا تم تعريف المصفوفة لها حجم 200 .. لكن ما ستأخذه منها هو فقط مافي الدوارة على حسب قيمة num ,,, اي انك لو اردت 30 تستطيع لطالما هي اقل من 200 ..

--------------

الخطأ الثاني //

استخدام الدالة getch(); .. من دون تعريف المكتبة التي تستدعى منها ...

المكتبة هي

#include<conio.h>

ليكون البرنامج بالشكل النهائي ..

#include <stdio.h>
#include<conio.h> // add this ...
main()
{
		int num, i, j, f=0;
		printf("Entrer le nombre des element ");
		scanf("%d",&num);
		int t[200];  // Change this value if you want ,,
		printf("Entrer les element de tableau :");
		for (i=0; i<num; i++)
		{
			 scanf("%d",&t);
		}
		for (i=1; i<=num; i++)
		{
			 for (j=1; j<=i; j++)
			 {
				  if (t != t[j])
				  {
							  printf("La position de %d est %d\n",t[j],i);
				  }
			 }
		}
		getch();
}

ملاحظة ،، قمت بحل المشاكل البرمجية فقط .. لكن لا اعرف اذا كان البرنامج يؤدي المهمة المطلوبة بالشكل الصحيح اولا .. لانني لم افهم اللغة الفرنسية اصلا ..

ان شاءلله خير ..

تحياتي العطرة ..

1

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

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