مشاهدة النسخة كاملة : مساعده في وجود حل (اكتب ثلاث ارقام ويطبعهم++cبالعكس)


kookai
20-07-2006, 09:48 PM
السلام عليكم
مرحبا شباب
سبق واني عرضت هذا السؤال في احد المنتديات ولم اجد الاجابه ظناًً منهم ان هذا عباره عن هوم ورك وهو بالحقيقه ليس هوم ورك والله على ما اقوله شهيد



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

بصراحه سؤال شيق وجميل حسب اعتقادي ويحتاج الى خبير فعلا

السؤال بختصار
اريد ان ادخل ثلاث ارقام اي ارقام مثل 123 في برنامج Microsoft Visual C++ 6.0

ويظهر لي الرقم بشكل مقلوب هكذا 321

ارجو كتابة الكود هنا حتى اقوم بستخدامه


وجزاكم الله خير الجزاء

اخوكم بوعبدالله

نبراس cs
20-07-2006, 11:16 PM
عزيزي : kookai

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

بصراحه الكود جاهز عندي على الجهاز الحين وممكن اعطيك اياه لكن .........


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

الشخص راح ارسله له

تبي تقول كيف تعرف ؟

ابي اشوف انت كيف فكرت ووين الكود اللي كتبته وكم مره حاولت (ممكن انك وصلت للحل وانت منت

داري )

عموماً احس اني طولتها زياده

في لغه السي بلص بلص شي لكن هو من الرياضيات

ملاحظات :

1. لو قلنا عندنا العدد 123 كيف نحصل على العدد 3 فقط

فكر ............ اممممممممممممم .........فكر ..........

انا متأكد انك وصلت للحل إلي هو باقي القسمه على 10

يعني لو قلنا 123%10=3 وهذي الإشاره في السي بلص بلص تعني باقي القسمه

طيب الحين حصلنا على الثلاثه وطبعناها باقي كيف نغير العدد إلى 12

بعد فكر ............ اممممممممممممم .........فكر ..........

انا متأكد انك وصلت للحل إلي هو القسمه على 10

يعني لو قلنا 123/10=12 وبكذا حصلنا على الرقمين الباقيين وعليك بتكرار العمليه بس لين متى


ما راح اقولك هذي ابغاك تعرفها بنفسك عموماً هي سهله وراح تكون لوووووب


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


معذرة على الإطاله ......

kookai
21-07-2006, 04:34 PM
الاخ الفاضل نبراس cs

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

اشكرك على هذا الرد الطيب

80 بالاميه توصلت لنتيجه بعد محاولات وتعديلات خصوصا بعد ردك
وتوصلت لهذا

#include <iostream.h>
void main()
**
int x1,r;
cin>>x1;
r=x1%10;
cout<<r;
r=x1/10;
cout<<r<<endl;
}
لكن الناتج يظهر لي 312
وانا اريد ان يكون عكس هذا الرقم 123 اي اريد 321
حسب فهمي لكلامك قلت لي المسأله فيها لوب
ارجو ان توضحلي اكثر هل اعتمد على وكيف
while or for
انتظر منك الرد ولك مني كل الشكر والاحترام

منطلق بطموحي
21-07-2006, 05:09 PM
السلام عليكم:

مشكور اخي نبراس على تفاعلك الواضح في تقديم الردود و المساعدات

اخي kookai

فلندرس سويا المثال 123 رياضيا :

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

123 %10 سيعطينا الباقي 3 ...نقوم بطباعته (3)
123 \ 10 = 12 و لكن الناتج 12%10 =2 ...نقوم بطباعة (2)
12\10=1

فالعملية اذا هي عملية تكرارية للقسمة و باقي القسمة على 10

بالنسبة للبرنامج الذي قمت ببرمجته .... فبما انك لا تدور ضمن loop او حلقة فعليك التقيد بعدد ال digits او خانات العدد حين البرمجة و استعمال ارقام مثل 100 و 1000 حسب عدد الخانات

بالنسبة ل loop فيمكنك مثلا الاستعانة ب while loop و انه طالما العدد لا يساوي الصفر فنستمر بالمرور و تفكيك العدد كما في المثال الذي اعطيتك اياه

حاول و ان شاء الله ستستطيع

و انصحك ايضا بمراجعة موضوع " مسائل في C++ " المثبت بالقسم حيث يحوي شروح و تمارين كثيرة

wafk

نبراس cs
21-07-2006, 05:26 PM
اخي العزيز : kookai

بصراحه تشجعت بعد ما شفت جديه في التطبيق

وابشر وتستاهل انت طبقت كل شي بس بقي عليك اللوب واعتقد ان الأخ:منطلق بطموحي وضح

الموضوع عموماً int ما راح يأخذ اكثر من 12 عدد متواليه وهذا معتمد على سعته

والكود سيكون كالتالي :
#include<iostream>
using namespace std;
int main()
**

int number;

cin>>number;
while(number!=0)
**
cout<<(number%10)<<" ";
number=number/10;
}
return 0;
}

اتمنى يكون مفهوم وواضح

كنت سأضيف بعض التعليقات بالعربي ولكن زي ما تشوف راح يكون مخلبط أكثر من كذا

تحياتي

kookai
21-07-2006, 06:00 PM
السلام عليكم
الاخوه الكرام بارك الله فيكم على هذه الردود

قمت بتطبيقات على هذا الكود

ولدي سؤال بسيط كيف يمكنني استخدام طريقة digits في هذه المسأله

هل بهذا الطريقه
if( number> !=10 && number < 10)
NumberOfDigits=1;
else if( number > !=100 && number < 100 )
NumberOfDigits=2;

ولكم جزيل الشكر

نبراس cs
21-07-2006, 07:30 PM
اخي العزيز : kookai

ممتاز وطريقتك في التفكير اقل ما يقال انها رائعه ولكن تحتاج بعض التدريبات

لان البرمجه مثل الرياضه لكما تدربت اكثر كلما زادت قدرتك على التفكير البرمجي

للأسف لا هذي ولا هذي ولكن خلينا نفكر مع بعض شوي

كيف تعرف ان العدد يحتوي كم خانه مثلاً لو دخل المستخدم 123 كم مره يدخل اللوب

اممممممممممممممممممممممممممممممممممممممممممممممممم مممممم

اكيد راح يدخل 3 مرات طيب لو قلنا 123/1000 كم الناتج

بعد اممممممممم الناتج راح يكون 0 بتقول خطأ الناتج 0.123 تمام عليك بس حنا لمن عرفنا

العدد كان نوعه int وهذا النوع ما يعرف الكسور

هذي فكره بس لو المستخدم دخل 123456789 بتقسمها على كم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

يعني لازم يكون عندك 12 حاله من 10-100000000000 وهذي طريقه ليست ممتازه

اجل وش الحل الممتاز ؟؟؟

الحل هو بما انا ندخل اللوب عدد خانات العدد ليش ما نعرف عداد وهذا العداد من نوع int وقيمته

الإبتدائيه 0 بتقول ليش int وليش اعطناه قيمه ابتدائيه =0

خذ هذي القاعده البرمجيه ...

1. المتغير من نوع int g لأنك ما يمكن يكون عندك عدد ونصف عدد يعني دايم اعداد صحيحه و على هذا

فقس ....

2. ليش معطيه قيمه ابتدائيه ؟؟؟

حنا راح نسوي له عمليه زياده يعني ++ وهذي في اللغه يعني زود واحد ولو ما اعطيناه قيمه وش

راح يصير اترك لك التجربه ....

طيب نكمل

داخل اللو ب راح نسوي عمليه زياده

وبعد الخروج من اللوب نطبع العداد واللي هو عدد خانات العدد

اتمنى الفكره وضحت ...

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

الكود

اضف هذي الأسطر في الكود عندك

int numberOfDigits=0;

numberOfDigits++;
cout<<"number of digits are :"<<numberOfDigits<<endl;

kookai
23-07-2006, 09:54 PM
السلام عليكم

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

عموما
لاحظة ان الكود السابق يقوم بعكس الارقام فقط

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

اهم شي يكون قيمه حسابيه وليس مجرد قلب الارقام


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


بوعبدالله

نبراس cs
24-07-2006, 01:04 AM
اخي العزيز: kookai

بصراحه هذا المطلوب جديد يعني ما كان في اول المشاركه اتفاقنا كذا ...

اقتباس :
السؤال بختصار
اريد ان ادخل ثلاث ارقام اي ارقام مثل 123 في برنامج Microsoft Visual C++ 6.0

ويظهر لي الرقم بشكل مقلوب هكذا 321
//************************************************

ولكن كل شي سهل بالتفكير

بصراحه الكود التالي تم اضافه عدد الخانات يعني اضفناها بالكود وهذا اجابه على سؤالك وين اضيفها

والشي الآخر اننا قلبنا العدد بإستخدام الأس لـ 10

يعني العدد 123 الآحاد = 3*10^0 والعشرات = 2*10^1 والمئات =1*10^3

وحنا نبغى نقلبها يعني 321 الآحاد = 1*10^0 والعشرات = 2*10^1 والمئات =3*10^3


وعدد الخانات طلع عندنا 3 اتوقع العين الفكره وضحت لك

استخدمنا داله pow(number,power)i وهذا معناه اننا نرفع 10 لأس حنا نختاره من 0- عدد الخانات

اتوقع بعد قراءه الكود راح يتضح كل شي


ملاحظه :

ما فيه شئ مستحيل ولكن بعض الأمور تحتاج جهد إكثر (مبدئي في الحياة)

الكود :

#include<iostream>
#include<math.h>
using namespace std;
int main()
**

int number,tempNumber=0,numberOfDigits=0;

cin>>number;
tempNumber=number;

while(number!=0)
**
numberOfDigits++;
cout<<(number%10)<<" ";
number=number/10;

}
cout<<endl;
cout<<"number of digits are :"<<numberOfDigits<<endl;

while(numberOfDigits!=-0)
**
number+=(tempNumber%10)*pow(10,numberOfDigits-1);
tempNumber=tempNumber/10;
numberOfDigits--;
}
cout<<endl;

cout<<number<<endl;
return 0;
}

binjeera
30-07-2006, 02:10 PM
bismilah
انا هاوي لغة C++ ولكن ممكن تكون هذه هي الاجابة .. او.!!!!!!!! brea*&& #include "iostream.h"

void main()
**
int a,b,c;
cout<<"Inter your number";
cin>>a>>b>>c;
cout<<c<<b<<a<<endl;

}

نبراس cs
02-08-2006, 05:46 PM
اخي العزيز : binjeera

هل جربت البرنامج اللذي كتبته انت ؟؟؟!!!!

بعد تجربته سوف تعرف هل هو حل صحيح ام لا

binjeera
02-08-2006, 07:38 PM
bismilah

شكراً أخي نبراس على المرور . حسب اعتقادي ان البرنامج صحيح لقد قمت بتجربتة . حيث اني اضع الرقم الاول , الثاني ثم الثالث وبعدها تظهر الارقام بالمقلوب . ولكن انا حي الله هاوي فممكن توضحلي الخطاء اللي عندي او بيجوز انا فاهم غلط.

على العموم انا مش قادر اوصف فرحتي بردك


greet
wafk

منطلق بطموحي
02-08-2006, 08:58 PM
السلام عليكم :

اخي binjeera
برنامجك صحيح من ناحية برمجية لكن ليس من ناحية المطلوب
في برنامجك انت تدخل ثلاثة ارقام أ و ب و ج و يطبع ج و ب و أ

المطلوب ادخال رقم واحد أ مكون من عدة خانات فلنفرض انه 123 و من ثم يفككه البرنامج بشكل مقلوب فيطبع
3
2
1

فلذلك يجب استعمال طريقة تقوم بالتفكيك احداها استعمال ال modulus % كما ذكر اخونا نبراس

wafk

نبراس cs
03-08-2006, 01:57 AM
اخي العزيز: binjeera

اعتقد ان اخي منطلق بطموحي كفى و وفى

ولكن لابد ان يتغير الرقم مثلاً 123 إلى 321 بعد الطباعه

يعني مو طباعه بالمعكوس وبس

وبالنسبه للكود اللي انت كتبته لو تكتب 123 زي كذا يطلب منك انك تدخل الرقم الثاني والثالث

اخي العزيز اتمنى لك التوفيق من كل قلبي

وانا في خدمتك وخدمه هذا المنتدى

binjeera
03-08-2006, 09:08 AM
bismilah

شكراً يا شباب يبدو لي اني كنت فاهم غلط بس راح احاول اوجد حل.. او على الاقل اطبيق الحلول اللي انتم وضعتموها..... ورح اعرض عليكم النتيجة

tknk@@ tknk@@ tknk@@ tknk@@