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

كود برنامج ينقل عناصر مصفوفة الى مصفوفة اž

بدأه SedHack في 6 أكتوبر 2012 · 6 رد · 3,823 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
931141228.gif

كيفكم يا اعضاء و زوار منتدى arabteam2000 ان شاء الله تكونو بالف خير و عافية... من دون ما اطول عليكم

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

هذي المرة انا اريد معرفة كيفية كتابة كود برنامج ينقل عناصر مصفوفة الى مصفوفة اخرى على سبيل المثال :

361419053.jpg

و هذا المثال موجود بكتاب خطوة بخطوة لتعلم ( c++,c ) للاخ حسين الربيعي و يبدو هذا الحل او هذه الكتابة للكود خاطئة

كما ارجو منكم اعطائي - ان امكن بالطبع - مجموعة دوال للتعامل مع المصفوفات اضافة الى شرح لها الى جانب الحل الصحيح لهذا البرنامج

مشكورين

تم تعديل هذه المشاركة بواسطة SedHack في 6 أكتوبر 2012 في 23:25

#2

اهلا أخي sedhackcool.gif

أولا عليك ان تعلم أن نقل عناصر مصفوفة إلى مصفوفة أخرى يستوجب شرطين :

-أن يكون حجم المصفوفة التي ستستقبل عناصر المصفوفة الأولى أكبر أو تساوي حجم هذه الأخيرة

-أن تكون المصفوفات من نفس النوع

و هذا المثال موجود بكتاب خطوة بخطوة لتعلم ( c++,c ) للاخ حسين الربيعي و يبدو هذا الحل او هذه الكتابة للكود خاطئة

الكتابة صحيحة 100/100

هذا مثال آخر أستعن به لفهم الكود

#include <stdio.h>
#define n() puts("\n")

int main()
{
int a[5]={0},b[5]={0},c[5]={0},i=0,j=0,k=0;
puts("introduisez 5 elment du tab a: "); n();
for(i=0;i<5;i++)
{
printf("element %d :\t",i+1);
scanf("%d",&a);
if(a&1) b[j++]=a;
else	c[k++]=a;
}
n();
puts("+--------+\n+   A	+");
for(i=0;i<5;i++)
printf("+--------+\n+ %3d	+\n",a);
puts("+--------+\n"); n();
puts("+--------+\n+   B	+");
for(i=0;i<j;i++)
printf("+--------+\n+ %3d	+\n",b);
puts("+--------+\n"); n();
puts("+--------+\n+   C	+");
for(i=0;i<k;i++)
printf("+--------+\n+ %3d	+\n",c);
puts("+--------+\n");
return 0;
}

erIf1.jpg

حتى أبسط عليك الخطوات

الخطوة الأولى :

-نقوم بإدخال عناصر المصفوفة a

الخطوة الثانية :

نقوم بعملية باقي القسمة '%' بين عناصر المصفوفة a و العدد 2 بالإستعانة بدوارة

+إذا كان الباقي 0 فهذا يعني أن العدد زوجي 2k مع k تنتمي للمجموعة Z

+إذا ان الباقي 1 هذا يعني أن العدد فردي 2k+1

الخطوة الثالثة

-إذا كان العدد فردي نسنده لأول عنصر في المصفوفة b أي [0]b و من بعد ذلك نقوم بمؤثر الزيادة ل j وكل مرة وجد عددا فرديا نزيد 1 ل j

b[j]= عدد فردي
j++;

و بالمثل في حالة الأعداد الزوجية سنزيد من قيمة k في كل مرة وجد عددا زوجيا

c[k]= عدد زوجي
k++;

الخطوة الرابعة

-j المحصل عليها ستكون عدد+1 عناصر المصفوفة b التي تضم أعدادا فردية وفقط

-k المحصل عليها ستكون عدد+1 عناصر المصفوفة c التي تضم أعدادا زوجية وفقط

الخطوة الخامسة

بالإستعانة بدوارتين نقوم بإظهار النتائج على شاشة الكونسول

- شرط توقف الدوارة الأولى أن تكون i أصغر قطعا من j

- شرط توقف الدوارة الثانية أن تكون i أصغر قطعا من k

وبالتوفيق

تم تعديل هذه المشاركة بواسطة مومو (momo) في 7 أكتوبر 2012 في 11:56

2

i love you mama

#3
اقتباس
الكتابة صحيحة 100/100

الكتابة صحيحة لكن ليس بنسبة 100% نظراً لعدم استخدام مساحة الأسماء std.

أيضا, كتابة الــ main ليست قياسية.

تم تعديل هذه المشاركة بواسطة khaled_prg في 7 أكتوبر 2012 في 19:08

1
#4
khaled_prg كتب:

كتابة الــ main ليست قياسية.

معك حق أخي خالد

في c99 ليس من الجيد كتابة

void main()

{

 /* code */


}

أو

main()

{

 /* code */

}

و سيرسل لك الكومبيلر أخطاء مثل

//warning: return type defaults to 'int'

//warning:control reaches end of non-void function

أما في c89 فكتابة ال main بسبقها ب void مقبولة و أعتقد أن صاحب الكود (حسين الربيعي) كتبه في زمن c89 قبل ظهور النسخة الجديدة c99

و تبقى الكتابة الصحيحة هي

int  main()
{

/* code*/

return 0;

}

أو

int main ( int argc, char *argv[] )
{

/* code*/

return EXIT_SUCCESS

}

للمزيد من التفاصيل faq أو int or void main

وبالتوفيق للجميع

i love you mama

#5

كثر الف خيركم اخواني مومو (momo) و الاخ khaled_prg على المشاركة و المرور الطيب و الله ما قصرتوا و بارك الله فيكما عن جد افدتماني :happy:

تم تعديل هذه المشاركة بواسطة SedHack في 8 أكتوبر 2012 في 00:44

#6

اخي مومو (momo) و كذلك اخي khaled_prg انا قمت بكتابة الدالة main كتابة قياسية لكن لم يفلح الامر معي و اليكم المحاولة الى جانب النتيجة المتحصل عليها

940307837.jpg

اعذروني فانا مبتدئ في اللغة ان كان الخطا في الكتابة خطا بسيط و تافه

#7

تصحيح الكود :

#include<stdlib.h>
#include<iostream.h>

int main(int argc, char *argv[]) {
    int a[5], b[5], c[5], i, j = 0, s = 0;
    cout << "please enter 5 numbers : " << endl;
    for (i = 0; i < 5; i++)
        cin >> a;
    for (i = 0; i < 5; i++)
        a % 2 == 0 ? b[j++] = a : c[s++] = a;
    cout << "Now the content of array (b) is : ";
    for (i = j - 1; i >= 0; i--)
        cout << b << "\t";
    cout << endl << "And the content of array (c) is : ";
    for (i = s - 1; i >= 0; i--)
        cout << c << "\t";
    return EXIT_SUCCESS;
}

لم أستخدم مساحة الأسماء std حتى تستطيع ترجمة الكود لأن نسخة البورلاند التي تعمل عليها أصدرت قبل إدخال الــ namespaces بسنوات.

تم تعديل هذه المشاركة بواسطة khaled_prg في 8 أكتوبر 2012 في 23:28

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

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

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

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

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