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

طلب مساعدة في عمل برنامج لفكرة ارقام الاختبار ارجوووكم

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

السلام عليكم ورحمة الله وبركاته

اواجه مشكلة في تحويل هذا المثال الى برنامج على السي بلس بلس

مثال : افرض ان رقم الحساب المراد حساب رقم الاختبار له هو : 127945 وأوزان مواضع العدد هي : 7,6,5,4,3,2,1 وأن المعامل يساوي 11 , يجب تحديد رقم الاختبار كما يلي :

- نضرب الاعداد في الاوزان فيكون الناتج :2*5+4*3+9*4+7*5+2*6+1*7=112

- نقسم المجموع على المعامل فيكون الناتج : 11/112 = 10 وباقي القسمه 2

- نطرح باقي القسمه من المعامل لنحصل على رقم الاختبار اي ان رقم الاختبار يساوي : 11-2=9 والذي يوضع على يمين رقم الحساب وتتم هذه العملية آليا باستخدام الحاسوب . وتساعد ارقام الاختبار في ضبط المدخلات حيث تتم مقارنة عدد محدد ومدخل سلفا مع رقم الاختبار المحسوب في البرنامج فان كانا متساويان فهذا يدل على صحة المدخلات والا فيطبع اشعار لاعلام المسؤولين عن وجود خطأ في الاعداد المدخله .

المطلوب : حول هذا المثال الى برنامج على السي بلس بلس

ارجو ان اجد احد يساعدني

#2

يجب عليك وضع تجربتك لعمل هذا البرنامج ثم سنساعدك

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#3
XMasterrrr كتب:

يجب عليك وضع تجربتك لعمل هذا البرنامج ثم سنساعدك

عزيزي xmaster اسعد الله يومك وبارك الله فيك

لقد قمت بعمل جزء من البرنامج جزء صغير وهو كالتالي

#include<iostream.h>
#include<conio.h>

main()
{
clrscr();
int inputs[10];
int i;
cout<<"enter the number of digits";
cin>>i;
for(j=0;j<i;j++)
cin>>inputs[j];


getch();
return 0;
}

وتوقفت لانني لم استطع ان اتحكم بعناصر المصفوفه المدخله .. اتمنى ان تساعدني اذا تستطيع اريد ان ترشدني الى طريقه من خلالها استطيع ان اضرب عناصر المصفوفه باوزانها مثلما في المثال

#4

المشكلة انى لا افهم المثال الذى تريده هل من الممكن التوضيح و ياريت تكتب بالعامية علشانى انا بس

−1

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#5
XMasterrrr كتب:

المشكلة انى لا افهم المثال الذى تريده هل من الممكن التوضيح و ياريت تكتب بالعامية علشانى انا بس

ماشي ياريس

بص بأه

دلوقتي بكل اختصار عايز من البرنامج يدخل رقم زي مثلا 127945 اوكي وبعد كده بيتم ضرب اول رقم اللي هوا الواحد عشان ده بالانجليزي بيتم ضربو برقم 7 وبعد كده بيتم ضرب رقم 2 بالعدد 6 وبعد كده بيتم ضرب 7 بالعدد 5 وبعد كده بيتم ضرب 9 بالعدد 4 وبعد كده بيتم ضرب ال 4 بالعدد 3 وبعد كده بيتم ضرب ال 5 بالعدد 2 ولو في رقم بعد الخمسه حيضرب ب 1

طبعا لما بيتم ضرب رقم 1 بالعدد 7 يطلع لينا الناتج ده الناتج نجمعو لحاصل ضرب رقم 2 بالرقم 6 يعني زي كده

2*5+4*3+9*4+7*5+2*6+1*7=112

وبعد كده الناتج بنقسمو على المعامل اللي هوا 11 طبعا حنستخدم اشارة باقي القسمه عشان يطلع لينا باقي القسمه على طول

بعد كده نطرح باقي القسمه من المعامل

بس كده

#6

طب انا هقولك شئ انتا عاوز ازاى كل رقم يتضرب لوحده ديه انا مش فاهمها بقى انا ممكن اخليه ياخد كل رقم لوحد و يسيب مسافة ينفع معاك الطريقة ديه ؟؟؟؟

تم تعديل هذه المشاركة بواسطة XMasterrrr في 6 أكتوبر 2010 في 13:12

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#7

طيب بص انا عايز اعرف بس حاجه وحده

ان ازاي ندخل ارقام بمصفوفه وبعد كده بنعمل عليها اي عمليات حسابيه والناتج نحطو بمتغير

#8

اوكى سهلة

لنقل ان احنا هنعمل متغير اسمه

int num[7]

تمام

عاوز احط فيه ارقام لأنه مصفوفة هعمل التالى

cout << "Enter each number followed by a space : ";
cin >> num[0] >> num[1] >> num[2] >> num[3] >> num[4] >> num[5] << num[6];

كدة هياخد كل رقم لوحده بس لازم مسطرة بين كل رقم

__________

بالنسبة للعملية الحسابية هتعمل حاجة زى ديه

num[1] * 7 + num[2] * 6

و هكذا اتمنى انها تكون وضحت

تم تعديل هذه المشاركة بواسطة XMasterrrr في 6 أكتوبر 2010 في 13:21

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#9
XMasterrrr كتب:

اوكى سهلة

لنقل ان احنا هنعمل متغير اسمه

int num[7]

تمام

عاوز احط فيه ارقام لأنه مصفوفة هعمل التالى

cout << "Enter each number followed by a space : ";
cin >> num[0] >> num[1] >> num[2] >> num[3] >> num[4] >> num[5] << num[6];

كدة هياخد كل رقم لوحده بس لازم مسطرة بين كل رقم

تمام بس مثالك ده في حالة لو انتا فعلا كنت عارف انهم متلا 6 ارقام مدخله

طيب لو عايزين 1000 رقم ماهواش منطق اعمل لكل رقم ادخال

الفكره المنطقيه عن طريق تكرار بس المشكله ان لما اجي اطبقها ماتزبطش معايا

فياريت يعني لو حد ينورني

#10
XMasterrrr كتب:

اوكى سهلة

لنقل ان احنا هنعمل متغير اسمه

int num[7]

تمام

عاوز احط فيه ارقام لأنه مصفوفة هعمل التالى

cout << "Enter each number followed by a space : ";
cin >> num[0] >> num[1] >> num[2] >> num[3] >> num[4] >> num[5] << num[6];

كدة هياخد كل رقم لوحده بس لازم مسطرة بين كل رقم

__________

بالنسبة للعملية الحسابية هتعمل حاجة زى ديه

num[1] * 7 + num[2] * 6

و هكذا اتمنى انها تكون وضحت

بص اخى الكريم انا عملتها بالجافا بس انا مش عندى مسطب C++ علشان احولها لك واتأكد انه شغاله

لو عاوز تبص على كود الجافا

/**
 *
 * @author Mahmoud Kelany
 */
public class CalcNumber {

    public static void main(String[] args) {
        System.out.println("Enter your number");
        String number = new Scanner(System.in).next();
        String[] split = number.split("");

        int x[] = new int[split.length];
        int sum = 0;
        int counter = 7;

        for (int i = 1; i < split.length; i++) {
            x = Integer.parseInt(split);
        }
        for (int i = 1; i < x.length; i++) {
            if (i != x.length) {
                sum += x * (counter--);
            }
        }
        System.out.println(sum);
    }
}

وطريقه الادخال بالنسبه لاخى الكريمXMasterrrr

يمكنك عرضها بطريقه افضل عن طريق استخدام الـ for loop

        cout << "Enter each number followed by a space : ";
        int num[7];
        for(int i = 0; i < 7; i++) {
            cin >> num;
        }

Software Developer
Mahmoudkelany.com


 

#11
أحمد جادالله كتب:

تمام بس مثالك ده في حالة لو انتا فعلا كنت عارف انهم متلا 6 ارقام مدخله

طيب لو عايزين 1000 رقم ماهواش منطق اعمل لكل رقم ادخال

الفكره المنطقيه عن طريق تكرار بس المشكله ان لما اجي اطبقها ماتزبطش معايا

فياريت يعني لو حد ينورني

انا عرفت ازبط ازاي يجمع ارقام المصفوفه ويضعهم بمتغير بس اللي مش عارفو لغاية دلوقتي ازاي اعمل الفكره بتاعت ضرب الاعداد باوزانها وجمعهم

اهو الكود

#include<iostream.h>
#include<conio.h>
#include <math.h>

void main()
{
clrscr();
int inputs[10];
int i;
int result=0;
int j;
cout<<"enter the number of digits";
cin>>i;
for(j=0;j<i;j++)
cin>>inputs[j];
  for (j=0;j<i;j++)
 result+=inputs[j];
 cout<<result;
#12

اخى الكريم سهلة جداااا

ان تضرب الاعداد فى اوزانها

ان اللى فهمته من المثال انك تضرب الرقم فى مكانه

يعنى ارقم الاول نضربه فى واحد و التانى فى اتنين و هكذا:::::

صح؟

00020309t.gif

1958_1963.gif
#13
نفرتاري كتب:

اخى الكريم سهلة جداااا

ان تضرب الاعداد فى اوزانها

ان اللى فهمته من المثال انك تضرب الرقم فى مكانه

يعنى ارقم الاول نضربه فى واحد و التانى فى اتنين و هكذا:::::

صح؟

نعم اختي الكريمه لكن الاوزان معطيه والاوزان بالعكس يعني اول رقم بالوزن مثلا 7 والثاني 6 والثالث 5 والرابع 4 والثالث 3

توضيح اكثر

انا الحين المستخدم راح ادخل رقم مثل 127945 راح يحصل كالتالي

الرقم اللي دخلته انا عملية الضرب الاوزان عملية الجمع

1 * 7

2 * 6 +

7 * 5

9 * 4 +

4 * 3

5 * 2 +

الناتج = 112

هاد هي الفكره

#14

جرب هذا

واعطنى النتيجه

void main(){

int inputs[10];
int i;
int result=0;
int j;

cout<<"enter the number of digits";
cin>>i;
for(j=0;j<i;j++){
cin>>inputs[j];
}
int counter = i;
for (int k = 1; k < i; k++) {
if (k != i) {
result += inputs[k] * (counter--);
  }
 }
}

على ما اسطب البرنامج :)

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 6 أكتوبر 2010 في 14:00

Software Developer
Mahmoudkelany.com


 

#15
Mahmoud Kelany كتب:

جرب هذا

واعطنى النتيجه

void main(){

int inputs[10];
int i;
int result=0;
int j;

cout<<"enter the number of digits";
cin>>i;
for(j=0;j<i;j++){
cin>>inputs[j];
}
int counter = i;
for (int k = 1; k < i; k++) {
if (k != i) {
result += inputs[k] * (counter--);
  }
 }
}

على ما اسطب البرنامج :)

عزيزي محمد كيلاني جربت البرنامج وادخلت كالتالي

1

2

3

4

وظهر الناتج 81725

زي ماحصل معايا بالزبط ماهوا ده اللي مجنني هي عايزه بس تكتيك بسيط جدا لكن ايه هيا ماعرفش غايبه عني

#16

امممممممممممممممممممممممممممم ؟

اين اينتم ههههههههههههههههههه

#17

الأخ الفاضل : أحمد ,

إذا أدخل المستخدم مثلاً أربعة أرقام .. مثلاً 4326 .. نضرب الـ 4 في العدد 7 و الـ 3 في العدد 6 و هكذا ..

أو

نضرب الـ 4 في العدد 4 و الـ 3 في العدد 3 و الـ 2 في العدد 2 و الـ 6 في العدد 1 ..

يعني أبدأ أضرب من الرقم 7 ؟ وإذا أدخل المستخدم أرقام أكثر من الـ 7 .. عشر أرقام مثلاً .. كيف بيضرب .. ؟

ياليت توضح هالنقطة ..

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#18
إشراقـة فجـر كتب:

الأخ الفاضل : أحمد ,

إذا أدخل المستخدم مثلاً أربعة أرقام .. مثلاً 4326 .. نضرب الـ 4 في العدد 7 و الـ 3 في العدد 6 و هكذا ..

أو

نضرب الـ 4 في العدد 4 و الـ 3 في العدد 3 و الـ 2 في العدد 2 و الـ 6 في العدد 1 ..

يعني أبدأ أضرب من الرقم 7 ؟ وإذا أدخل المستخدم أرقام أكثر من الـ 7 .. عشر أرقام مثلاً .. كيف بيضرب .. ؟

ياليت توضح هالنقطة ..

( إذا أدخل المستخدم مثلاً أربعة أرقام .. مثلاً 4326 .. نضرب الـ 4 في العدد 7 و الـ 3 في العدد 6 و هكذا ) صحيح هذه الفكره

اما اذا ادخل المستخدم ارقام اكثر من ال 7 عشر ارقام ممم مافكرت فيها فقط فكرت في صيغة المثال الذي طرحته لكن نستطيع ان نضع جمله شرطيه في الادخال اذا ادخل مثل اكثر من 7 ارقام لا يسمح له عن نفسي احسها معقده

عشان كده ماشي على نفس المثال فقط لا غير

وياريت احد يقدر يساعدني بسرعه لان لازم اسلم هذا البرنامج لدكتوري العزيز

#19

خلصت من هذا الكود ولما ادخل الارقام

1

2

7

9

4

5

يطلع نفس الكتاب رقم 9 رقم الاختبار بصراحه

لكن لو غيرت اي رقم برقم ثاني ومشيت على نفس القاعده حقت المثال مايطلع معي نفس الحل ههههههه

يامبرمجين تكفون انا طالبكم برنامجي بس يبيله تكتيك بسيط جدا لكن ويشو بالضبط ماني قادر امسكها

هي البرنامج

#include<iostream.h>
#include<conio.h>
#include <math.h>

void main()
{
clrscr();
int inputs[10],i, result=0, j, h, z, w=11, sum,ff;
cout<<"enter the number: ";
cin>>i;
for(j=0;j<i;j++)
cin>>inputs[j];
  for (j=0;j<i;j++)
/*  result=j*inputs[j];
 cout<<"sum="<<result;*/
 for (ff=7;ff>1;ff++)
 result+=inputs[j]*ff;
 /*cout<<result;*/
sum=result%w;
z=w-sum;
cout<<"  ";
cout<<"the test number is :"<<(z-8)+1 ;
getch();
}
#20

جرب هالكود ..

#include <iostream>
using namespace std ;
int main()
{
   int len ,M , number = 7;
   int *array1; 
   cin>>len ;
   array1 = new int [len];
   for(int i= 0 ; i<len ; ++i)
   cin>>array1;
    for(int i= 0 ; i<len ; ++i)
	{
		M = M + array1 * number ;
		number--;
	}
    cout<<M ;
    system("pause");
	return 0 ;
}

ملاحظة : طبعًا الكود مب كامل .. هل هو المطلوب أم لا ؟

موفق ..

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#21

السلام عليكم

قمتُ بكتابة هذا الكود على حسب ما فهمت من سؤالك و أرجو أن يحقق المطلوب :

#include<iostream>
using namespace std;
int main()
{
    int i,j=7,result=0,inputs[10];
    for(i=0;i<9;i++)
    cin>>inputs;
    i = 0;
    while(j>0)
    result += inputs[i++] * j--;
    for(i=7;i<10;i++)
    result += inputs;
    cout<<endl<<11-(result%11)<<endl;
    system("pause");
    return 0;
}

ملاحظة :

قمتُ بتجربة المثال الذي كتبتَه بالأعلى و كانت النتائج صحيحة 100%

تحياتي.

#22
أحمد جادالله كتب:

خلصت من هذا الكود ولما ادخل الارقام

1

2

7

9

4

5

يطلع نفس الكتاب رقم 9 رقم الاختبار بصراحه

لكن لو غيرت اي رقم برقم ثاني ومشيت على نفس القاعده حقت المثال مايطلع معي نفس الحل ههههههه

يامبرمجين تكفون انا طالبكم برنامجي بس يبيله تكتيك بسيط جدا لكن ويشو بالضبط ماني قادر امسكها

هي البرنامج

#include<iostream.h>
#include<conio.h>
#include <math.h>

void main()
{
clrscr();
int inputs[10],i, result=0, j, h, z, w=11, sum,ff;
cout<<"enter the number: ";
cin>>i;
for(j=0;j<i;j++)
cin>>inputs[j];
  for (j=0;j<i;j++)
/*  result=j*inputs[j];
 cout<<"sum="<<result;*/
 for (ff=7;ff>1;ff++)
 result+=inputs[j]*ff;
 /*cout<<result;*/
sum=result%w;
z=w-sum;
cout<<"  ";
cout<<"the test number is :"<<(z-8)+1 ;
getch();
}

اسف طلع الناتج خطأ

لان المثال لما تدخل ارقام بالترتيب

1

2

7

9

4

5

وضرب اوزانهم ابتداء من 7 من فوق نزولا ل رقم 2 .. وجمع الارقام بعد ضربهم يطلع الناتج 112 لكن في برنامج يطلع تقريبا 3334

#23
khaled_prg كتب:

السلام عليكم

قمتُ بكتابة هذا الكود على حسب ما فهمت من سؤالك و أرجو أن يحقق المطلوب :

#include<iostream>
using namespace std;
int main()
{
    int i,j=7,result=0,inputs[10];
    for(i=0;i<9;i++)
    cin>>inputs;
    i = 0;
    while(j>0)
    result += inputs[i++] * j--;
    for(i=7;i<10;i++)
    result += inputs;
    cout<<endl<<11-(result%11)<<endl;
    system("pause");
    return 0;
}

ملاحظة :

قمتُ بتجربة المثال الذي كتبتَه بالأعلى و كانت النتائج صحيحة 100%

تحياتي.

حاولت اعمل كومبايلر لكن يطلع معي ايرور بالنسبه لعبارة ال pause وكذلك iostream والسطر اسفل include <iostream> ياريت لو تقدر تصيغه بصيغه ثانيه او توضح كيف اشغله مزبوط

انت تقصد على اي برنامج برنامجي اللي كتبته بالاعلى ام برنامجك ؟

#24
اقتباس
حاولت اعمل كومبايلر لكن يطلع معي ايرور بالنسبه لعبارة ال pause وكذلك iostream والسطر اسفل include <iostream> ياريت لو تقدر تصيغه بصيغه ثانيه او توضح كيف اشغله مزبوط

يبدو أنك تستخدم كومبايلر لا يدعم لغة السي++ القياسية !, حاول أن تتعلم السي++ على مترجم قياسي مثل الديف أو الفيجوال.

اقتباس
انت تقصد على اي برنامج برنامجي اللي كتبته بالاعلى ام برنامجك ؟

أنا أتكلم عن الكود الذي كتبتُه.

قمتُ بنغيير الكود بما يتناسب مع مترجمك :

#include<iostream.h>
#include<conio.h>
int main()
{
    int i,j=7,result=0,inputs[10];
    for(i=0;i<9;i++)
	 cin>>inputs;
    i = 0;
    while(j>0)
	 result += inputs[i++] * j--;
	 for(i=7;i<10;i++)
	 result += inputs;
	 cout<<endl<<11-(result%11)<<endl;
	 getch();
	 return 0;
}

تم تعديل هذه المشاركة بواسطة khaled_prg في 6 أكتوبر 2010 في 17:38

#25
khaled_prg كتب:

يبدو أنك تستخدم كومبايلر لا يدعم لغة السي++ القياسية !, حاول أن تتعلم السي++ على مترجم قياسي مثل الديف أو الفيجوال.

أنا أتكلم عن الكود الذي كتبتُه.

قمتُ بنغيير الكود بما يتناسب مع مترجمك :

#include<iostream.h>
#include<conio.h>
int main()
{
    int i,j=7,result=0,inputs[10];
    for(i=0;i<9;i++)
	 cin>>inputs;
    i = 0;
    while(j>0)
	 result += inputs[i++] * j--;
	 for(i=7;i<10;i++)
	 result += inputs;
	 cout<<endl<<11-(result%11)<<endl;
	 getch();
	 return 0;
}

نفذت البرنامج ادخلت بالاول رقم 6 لدلاله على انني اريد ان ادخل 6 ارقام

ثم ضغطت انتر

ثم رقم 1

2

7

9

4

5

وظهر لي الناتج 16440

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

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

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

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

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

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