كيف أتعلم C؟ (كان مشروع الكمبيوتر)

يمكنك مساعدتي في كتابة رمز لهذا السؤال الرجال؟ لديك Arduino أونو مع 8 المصابيح المتصلة دبابيس الرقمية 2 إلى 9. إنشاء مجموعة من 8 عناصر. املأها بأرقام عشوائية بين 2 و 9 (شاملة) اكتب البرنامج الذي يحدد أكبر رقم بينهم. احفظ هذا الرقم في متغير يدعى max. اطبع هذا الرقم على الشاشة التسلسلية. وميض LED متصل بهذا الرقم. دع وقت التأخير يكون 0.5 ثانية.

لاحظ أن الدالة العشوائية قد تؤدي إلى توليد أرقام مكررة. على سبيل المثال ، قد يكون المصفوفة الناتجة {3،4 ، 4 ، 7،6 ، 2،5،7}

سيكون الحد الأقصى لعدد 7. منذ حدوثه مرتين في الصفيف ، ثم يجب وميض عليه مرتين ^ _ ^ إنه الحد الأقصى لعدد مرات الظهور في الصفيف ، ثم يجب أن تومضه ثلاث مرات ، وكذلك لأي عدد من التكرارات

لقد كتبت هذا حتى الآن لكنني متأكد من أن كل شيء خاطئ

int pins[8]={2, 3, 4, 5, 6, 7, 8,9};

void setup() 
{
   pinMode(pins[8], OUTPUT);
}

void loop() 
{
    x=random(0, 8);
    digitalWrite(pins[x], HIGH);
    delay(1000)
    digitalWrite(pins[x], LOW);
    delay(1000)
}
3
هذا هو الواجب المنزلي الذي تم تحديده بشكل ضعيف حيث أنهم يعطون تأخرا واحدا فقط ولكنهم يتوقعون الوامض المزخرف. على أي حال ، تقترب من هذا عن طريق تخيل أنك روبوت يتم عرض الأرقام واحدة في كل مرة. ما هي المذكرات الفعالة للغاية التي يمكنك اتخاذها على scratchpad re-writable (أي ، أقل عدد من المتغيرات) سوف يساعدك في إيجاد أفضل حل إذا كنت تفترض أن قائمة الأرقام يمكن أن تكون طويلة بشكل تعسفي ...
وأضاف المؤلف rossp, مصدر
بصراحة لا يوجد سبب سليم لوضع دبابيس في مجموعة على الإطلاق ، لأن نطاقها مستمر. المصفوفة الوحيدة المطلوبة هي بيانات الإدخال. مطلوب فقط اثنين من المتغيرات المحلية بالإضافة إلى متغير المتكرر لحل المشكلة. أساسا ، كتابة التعليمات البرمجية سابق لأوانه. اكتشف الخوارزمية .
وأضاف المؤلف rossp, مصدر
أنا آسف ، ولكن السؤال "كيف أتعلم C" هو واسع نوعًا ما لهذا الموقع. لشيء واحد قد تسأل عن تجاوز المكدس وهو موقع البرمجة. ولكن حتى هناك ، سيطلبون منك على الأرجح قراءة كتاب أو إجراء برنامج تعليمي. تم تصميم المكدس تبادل للرد على أسئلة محددة لا "تعليم C" (أو تعلم كيفية الطيران، أو تعلم كيفية طهي الطعام، لهذه المسألة). سأغلق هذا السؤال لا تتردد في تحريرها بمعلومات جديدة. شكرا على تفهمك و تعاونك!
وأضاف المؤلف Nick Gammon, مصدر
JRobert أنا عالق في البيان إذا كانت والصفائف أنا حقا لا يمكن فهمها كما يفترض أن يكون هناك حلقة
وأضاف المؤلف athanassis, مصدر
كيف يمكنك محاكاة هذا على الورق/جسديا؟ على سبيل المثال ، استخدام العملات المعدنية N-tail ذيل كمصابيح LED .....
وأضاف المؤلف Dave X, مصدر
إضافة إلى تحسين واحد ، دبابيس [8] غير معروف ، حيث أن مؤشرات C تبدأ بـ 0 ، لذا لا يوجد سوى دبابيس [0] ... دبابيس [7] محددة في شفرتك. ربما يمكنك استخدام حلقة (؛؛) الخاصة بك هناك؟ حاول أيضًا تجميع التعليمات البرمجية - إذا اكتشف المحول البرمجي الأخطاء وأبلغ عنها ، فقد يساعدك ذلك في تحسين المنطق الخاص بك.
وأضاف المؤلف Dave X, مصدر
@ كريس ستراتون. نعم نعم. من الأفضل معرفة وجود خوارزمية قبل التشفير. ولكن بما أن البروتوكول الاختياري كان يحتوي بالفعل على شفرة بدون خوارزمية ، فكنت أحسبهم لأدرجهم في الخطوة الثانية من دورة اختبار الترجمة التجميعية. ربما توفر أخطاء بناء الجملة أدلة كافية.
وأضاف المؤلف Dave X, مصدر
هذه الإجابة عن C ، وهي تشبه إلى حد كبير Arduino. الرجاء قراءتها بعناية، فإنه تعليم حول صفائف: <�لأ href = "http://www.dummies.com/how-to/content/how-to-use-arrays-in-c-programming.html" يختلط = " nofollow noreferrer "> dummies.com/how-to/content/&hellip؛
وأضاف المؤلف Nayt Grochowski, مصدر

1 إجابة

التلميح الأول: pinMode() ينطبق فقط على دبوس واحد في كل مرة. ستحتاج إلى تنفيذه 8 مرات لضبط 8 أوضاع من دبابيس I/O.

التلميح الثاني: كما حاولChrisStratton اقتراح إنشاء رقم عشوائي تعيين أولاً؛ ثم "معرفة" (تعيين بعض المتغيرات في الذاكرة التي سوف يخبرك) ماذا يفعل مع الإخراج النهائي و I/Os الرقمي ؛ ثم قم بكل من هذه الأشياء. يساعد على تقسيم مشكلة أكبر إلى أصغر.

Update: Considering your updated title, How do I learn C?, and since the question reads like a homework assignment, aren't you already taking a class in C or C++? If so, how do you find it lacking, i.e., what additional resources or direction would be most helpful to you? There are a number of good books on the C language, and one of those would be a good place to start. If you don't already have a favorite one, you can't go wrong with The C Programming Language, by Brian Kernighan & Dennis Ritchie, the authors/designers of the C language and its early compilers. It is book on the C language, not on programming per-se, so if you are new to programming as well, a programming tutorial would be an excellent additional choice (sorry I don't have one to recommend).

ثانيا ، ضرب على برامج المثال التي تأتي مع Arduinoide: انقر فوق زر "فتح" [رمز السهم العلوي على شريط أدوات IDE. ليس الملف | فتح القائمة] وسترى قائمة من الرسومات الحالية الخاصة بك ، وضمن الفواصل ، فئات برامج المثال. اختر أحد الأمثلة واقرأها وحاول أن تفهم ما يفعله ولماذا يتم كتابته بالطريقة. ثم قم بتعديل ### p للخروج منه - كلاهما لفهم كيفية جعله يتصرف بشكل مختلف ، و كسر . سوف تتعلم الكثير من خلال أ) ترجمة رسائل خطأ من المجمع ، و ب) إيجاد وإصلاح أخطائك. إذا كنت لا تكسر برامجك مرتين على الأقل بقدر ما تنجح ، فأنت لا تحاول جاهدة بما فيه الكفاية!

2
وأضاف