Як даведацца C? (Быў праект кампутара)

Ці можаце вы дапамагчы мне пісаць код для гэтага пытання рабят ?? У вас ёсць Arduino Uno з 8 святлодыёдаў падлучаныя да лічбавым штыфтамі 2 да 9. Стварыць масіў з 8 элементаў. Запоўніце яго выпадковымі лікамі ад 2 да 9 (усё ўключана) Напішыце праграму, якая вызначае найбольшая колькасць сярод іх. Захаваць гэты нумар у зменнай з імем макс. Раздрукаваць гэты нумар на серыйны манітор. Мігаценне святлодыёда, падлучанага да гэтым нумары. Хай час затрымкі складае 0,5 секунды.

Звярніце ўвагу, што выпадковая функцыя можа прывесці да паўтарэння лікаў, згенераваных. Напрыклад, згенераваны масіў можа быць {3,4, 4, 7,6, 2,5,7}

Максімальны лік будзе 7.Since гэта адбылося двойчы ў масіве, то вы павінны лыпаць двойчы ^ _ ^ Гэта максімальная колькасць адбылося 3 разы на масіве, то вы павінны міргаць яго 3 разы, і таму для любога ліку уваходжанняў

Я напісаў гэта да гэтага часу, але я ўпэўнены, што гэта ўсё няправільна

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
Вось дрэнна паказана хатняе заданне, бо яны толькі даюць адну затрымку, але чакаць узорны мігценні. Ва ўсякім выпадку, падыходзіць да гэтага, уяўляючы вы робат паказваецца лік, па адным за раз. Што вельмі эфектыўнае адзначае, вы маглі б узяць на перазапісвальны нататніку (г.зн. мінімальнага лік зменных) Гэта дапаможа знайсці лепшае рашэнне, калі вы мяркуеце спіс лікаў можа быць калі заўгодна доўга ...
дададзена аўтар rossp, крыніца
Адкрыта няма важкай прычыны, каб змясціць шпількі ў масіве на ўсіх, так як іх дыяпазон бесперапынна. Толькі масіў неабходна, так гэта ўваходныя дадзеныя. І толькі дзве лакальныя зменныя плюс пераменная-итератор павінны вырашыць гэтую праблему. У прынцыпе, напісанне кода з'яўляецца заўчасным. <�Б> Малюнак з алгарытму .
дададзена аўтар rossp, крыніца
Я прашу прабачэння, але пытанне «Як навучыцца C» крыху шырокі для гэтага сайта. З аднаго боку, вы можаце спытаць пра перапаўненнем стэка , які з'яўляецца сайт праграмавання. Але нават там яны, верагодна, сказаць вам, каб прачытаць кнігу або зрабіць падручнік. Стэк Абмен прызначаны для адказу на канкрэтныя пытанні, а не «вучыць C» (або навучыцца лётаць, ці навучыцца рыхтаваць, па гэтым пытанні). Я збіраюся зачыніць гэтае пытанне. Вы можаце змяніць яго з новай інфармацыяй. Дзякуем Вам за разуменне і супрацоўніцтва!
дададзена аўтар Nick Gammon, крыніца
@JRobert я затрымаўся ў, калі заяву і масівы Я сапраўды не магу іх і там, як мяркуецца зразумець, што для цыклу
дададзена аўтар athanassis, крыніца
Як бы вы змадэляваць на паперы/фізічна? Напрыклад, пры выкарыстанні N галава-хвост манеты, як святлодыёды .....
дададзена аўтар Dave X, крыніца
Ну для аднаго паляпшэння, шпількі [8] не вызначаныя, так як індэксы C пачынаюцца з 0, так што ёсць толькі кантакты [0] ... загваздкі [7], вызначаныя ў вашым кодзе. Можа быць, вы маглі б выкарыстоўваць ваш для (;;) завес там? Акрамя таго, паспрабуйце скампіляваць код - калі кампілятар выяўляе і паведамляе пра памылкі, гэта можа дапамагчы вам палепшыць вашу логіку.
дададзена аўтар Dave X, крыніца
@ Крыс Stratton. Так. Высветліць алгарытм да кадавання будзе лепш. Але так як OP ўжо мае код без алгарытму, я вырашыў накіраваць іх да кроку два з рэдагавання-кампіляцыі выпрабавальнага цыклу. Можа быць, памылкі сінтаксісу забяспечаць дастатковую колькасць доказаў.
дададзена аўтар Dave X, крыніца
Гэты адказ на C, які вельмі падобны на Arduino. Калі ласка, уважліва прачытайце яго, яна вучыць аб масівах: dummies.com/how-to/content/…
дададзена аўтар Nayt Grochowski, крыніца

1 адказы

Першы намёк: pinMode() ужываецца толькі да аднаго штыфта ў той час. Вы павінны будзеце выканаць яго 8 разоў ініцыялізаваць рэжымы 8 I/O Pins.

Другі намёк: Як @ChrisStratton спрабавалі выказаць здагадку, генераваць выпадковыя ліку набору першых; затым «высветліць» (усталяваць некаторыя зменныя ў памяці, якія скажуць вам, што рабіць) з тэрміналам выхадам і лічбавым уводам/высновай; затым зрабіць кожны з гэтых рэчаў. Гэта дапамагае падзяліць вялікую праблему на больш дробныя.

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: націсніце кнопку «Адкрыць» [UpArrow значок на панэлі інструментаў IDE; ня File | Адкрыць меню], і вы ўбачыце меню бягучых накідаў і ніжэй перапынку катэгорыю прыкладаў праграм. Выбераце адзін з прыкладаў, прачытаць і паспрабаваць зразумець, што ён робіць і чаму яна напісана так, як яна ёсць. Затым падправіць ### р з яго - і зразумець, як прымусіць яго паводзіць сябе па-рознаму, і <�моцны> разрыву гэта. Вы даведаецеся шмат, а) інтэрпрэтацыю паведамленняў пра памылкі ад кампілятара, і б) пошуку і выпраўлення сваіх памылак. Калі вы не парушаючы сваіх праграм па меншай меры ў два разы часцей, чым вы поспех, вы не спрабуеце дастаткова цяжка!

2
дададзена