-
Áîò - öâåòîïåðåäàò÷èê
XPoint äàë çàäàíèå ê ñåãîäíÿøíåìó äíþ ïðèäóìàòü àëãîðèòì áîòà, êîòîðûé áóäåò ïî çàïðîñó ïîëüçîâàòåëÿ çàäàâàòüò ôðàçàì â ÷àòå ýòîãî ïîëüçîâàòåëÿ îïðåäåë¸ííûé öâåò.
Àëãîðèòì ÿ íàïèñàë ïðîñòî ñâîèìè ñëîâàìè, äàæå áåç ïñåâäîêîäà, òàê êàê íå çíàþ ìåõàíèçì îïðîñà â ÑÄÊ, êàñàþùèéñÿ îæèäàíèÿ âõîäà ïîëüçîâàòåëåé è âûâîäà ôðàç â ÷àò.
Àëãîðèòì ïèñàë áûñòðî èç çà íåõâàòêè âðåìåíè, ïîýòîìó ìîã ãäå- òî îøèáèòüñÿ.
-------------------------------------------------------------------------------------------
1. Ñîçäàòü 4 ìàññèâà. ó âñåõ êîëè÷åñòâî ýëåìåíòîâ ðàâíî 15.
-1 Ìàññèâ òèïà string äëÿ íàçâàíèé âñåõ èìåþùèõñÿ öâåòîâ. Ñðàçó çàäàþòñÿ íàçâàíèÿ öâåòîâ.
-2 Ìàññèâ òèïà int äëÿ íîìåðîâ ãðàæäàíñòâ âîøåäøèõ ïîëüçîâàòåëåé. Âñå ýëåìåíòû ñíà÷àëà èíèöèàëèçèðóþòñÿ íóëåâûì çíà÷åíèåì.
-3 Ìàññèâ òèïà int äëÿ íîìåðîâ âûáðàííûõ ïîëüçîâàòåëÿìè öâåòîâ. Âñå ýëåìåíòû ñíà÷àëà èíèöèàëèçèðóþòñÿ íóëåâûì çíà÷åíèåì.
-4 Ìàññèâ òèïà int äëÿ íîìåðîâ ýëåìåíòîâ ìàññèâà 1. Âñå ýëåìåíòû ñíà÷àëà èíèöèàëèçèðóþòñÿ íîìåðàìè îò 0 äî 14.
2. Íîìåð ãðàæäàíñòâà ïåðâîãî âîøåäøåãî ïîëüçîâàòåëÿ çàíîñèòñÿ â ìàññèâ 2 â ïåðâûé ýëåìåíò (ýëåìåíò 0).
3.  ïðèâàò ïîëüçîâàòåëþ âûâîäèòñÿ òåêñò: "Çäðàâñòâóéòå, [íèê]. Âûáåðèòå íîìåð öâåòà äëÿ ñâîèõ ôðàç." Äàëåå èä¸ò ñïèñîê âñåõ öâåòîâ, è èõ ïîðÿäêîâûé íîìåð. Ïîðÿäêîâûé íîìåð - ýòî ñîäåðæèìîå ÿ÷ååê ìàññèâà 4. Ñïèñîê öâåòîâ - ýòî íàçâàíèÿ öâåòîâ, íàõîäÿùèõñÿ â ÿ÷åéêàõ ìàññèâà 1 ñ òàêèìè íîìåðàìè. Ïðè âûáîðå öâåòà ñëåäóþùèìè ïîëüçîâàòåëÿìè, èì óæå ïðåäîñòàâëÿåòñÿ ñïèñîê áåç òåõ öâåòîâ, êîòîðûå âûáüðàëè ïðåäûäóùèå ïîëüçîâàòåëè. Âìåñòî òàêèõ öâåòîâ â ÿ÷åéêè ìàññèâà 4 ñ íîìåðàìè, ñîîîòâåòñòâóþùèå íîìåðàì ÿ÷åéêè ìàññèâà 2, â êîòîðûõ çàïèñàíû ãðàæäàíñòâà óæå âûáðàâøèõ öâåò ïîëüçîâàòåëåé - çàïèñûâàåòñÿ çíà÷åíèå íîëü. Ïîýòîìó, íàïðèìåð, â ñïèñêå âìåñòî öâåòà "7 - çåë¸íûé", óæå ìîæåò ñòîÿòü "0 - ÷¸ðíûé".
4. Îæèäàíèå ââîäà òåêñòà ïîëüçîâàòåëåì â ïðèâàò áîòà.
5. Åñëè ïîëüçîâàòåëü ââîäèò ÷èñëî (îò 1 äî 14), ÿâëÿþùååñÿ ïîðÿäêîâûì íîìåðîì êàêîãî-ëèáî åù¸ íå âûáðàíîãî äðóãèìè ïîëüçîâàòåëÿìè öâåòà, ïåðåõîäèì äàëüøå (ï. 7). Ââåä¸ííîå ïîëüçîâàòåëåì ÷èñëî óêàçûâàåò íà íîìåð ýëåìåíòà ìàññèâà 1.
6. Åñëè ââîäèò ÷òî-òî äðóãîå, ëèáî íîìåð 0 (ýòî òîæå íîìåð ýëåìåíòà ìàññèâà 1)- ïîëüçîâàòåëþ ïðèñâàèâàåòñÿ ÷¸ðíûé öâåò òåêñòà.
7. Ââåä¸ííîå ïîëüçîâàòåëåì ÷èñëî ïðèñâàèâàåòñÿ ïåðâîìó ýëåìåíòó ìàññèâà 3 (ýëåìåíò 0).
--Íîìåðà ãðàæäàíñòâ âñåõ ïîñëåäóþùèõ âõîäÿùèõ ïîëüçîâàòåëåé çàíîñÿòñÿ â ñëåäóþùèå ÿ÷åéêè ìàññèâà 2 (ýëåìåíò 1, ýëåìåíò 2, ..., ýëåìåíò 14).
--Âûáðàííûå íîìåðà öâåòîâ ýòèõ ïîëüçîâàòåëåé ïðèñâàèâàþòñÿ ñëåäóþùèì ýëåìåíòàì ìàññèâà 3 (ýëåìåíò 1, ýëåìåíò 2, ..., ýëåìåíò 14).
--Òàêèì îáðàçîì ñîçäà¸òñÿ òàáëèöà ñîîòâåòñòâèÿ íîìåðîâ ãðàæäàíñòâ âûáðàííûì íîìåðàì öâåòîâ.
--Åñëè ïîëüçîâàòåëü âûõîäèò èç çîíû äåéñòâèÿ áîòà - åãî íîìåðà èç òàáëèöû ñîîòâåòñòâèÿ íå èñ÷åçàþò, è ïðè ñëåäóþùåì âõîäå ïîëüçîâàòåëÿ (ïîêà çàïóùåí áîò), åìó óæå íå çàäà¸òñÿ âîïðîñ î âûáîðå öâåòà, à ñðàçó íàçíà÷àåòñÿ ðàíåå âûáðàííûé öâåò.
--Ïðè âõîäå â çîíó äåéñòâèÿ áîòà áîëåå 15 ïîëüçîâàòåëåé, ïîñëåäóþùèì (16-ìó, 17-ìó, è ò.ä.) ïîëüçîâàòåëÿì íèêàêèõ âîïðîñîâ óæå íå çàäà¸òñÿ, à àâòîìàòè÷åñêè ïðèñâàèâàåòñÿ ÷¸ðíûé öâåò ôðàç äëÿ ÷àòà.
8. Ïðè îòïðàâêå ñîîáùåíèÿ â ÷àò ôðàçà ñíà÷àëà ïîïàäàåò ê áîòó è àíàëèçèðóåòñÿ:
- Îïðåäåëÿåòñÿ íîìåð ÿ÷åéêè ìàññèâà 2, ãäå íàõîäèòñÿ ãðàæäàíñòâî íàïèñàâøåãî â ÷àò ïîëüçîâàòåëÿ
- Èùåòñÿ ñîâïàäàþùèé íîìåð ÿ÷åéêè ìàññèâà 3. Èç ýòîé ÿ÷åéêè ñ÷èòûâàåòñÿ íîìåð öâåòà è ñîïîñòàâëÿåòñÿ ñ àíàëîãè÷íûì íîìåðîì ÿ÷åéêè ìàññèâà 1
- Èç íàéäåííîé ÿ÷åéêè ìàññèâà 1 èçâëåêàåòñÿ íàçâàíèå âûáðàííîãî ðàíåå ïîëüçîâàòåëåì öâåòà.
9. Ôðàçà ïîïàäàåò â ÷àò ñ óæå íóæíûì öâåòîì.
-
Ïðèìåð íàïèñàíèÿ àëãîðèòìà:
1. Ñîçäàåì color ìàñèâ òèïà String ðàçìåðîì 15.
2. Ñîçäàåì id ìàñèâ òèïà int ðàçìåðîì 15.
4. Ñîçäàåì ïåðåìåííóþ numID òèïà int ðàâíóþ 0.
5. Çàïîëíÿåì color ìàñèâ íàçâàíèåì öâåòîâ.
6. Çàïîëíÿåì id ìàñèâ çíà÷åíèå 0.
7. Æäåì ñîîáùåíèÿ èç ÷àòà è ïîìåùàåì â ïåðåìåííóþ str, íîìåð ïîëüçîâàòåëÿ â ïåðåìåííóþ numID.
8. Ïðîâèðÿåì ïåðåìåííóþ str íà ñëîâî "Color" + ÷èñëî, åñëè èñòèíà òî ïåðåõîäèì íà ñòðîêó 12.
9. Îáõîäèì ìàññèâ id è ïðîâåðÿåì å÷åéêè íà çíà÷åíèå numID, åñëè ëîæ ïåðåõîäèì ê ñòðîêå 6. Ïðè èñòåíå íîìåð ÿ÷åéêè ïîìåùàåì â ïåðåìåííóþ numID.
10. Âûâîäèì ñòðîêó str öâåòîì èç ìàñèâà color ïîçèöèè numID.
11. Ïåðåõîäèì íà ñòðîêó 7.
12. Èçâëåêàåì ÷èñëî èç ñòðîêè str ïîñëå ñëîâà Color. ×èñëî äîëæíîáûòü â ïðåäåëàõ îò 0 äî 15. È ïîìåùàåì â ïåðåìåííóþ numID.
13. Åñëå ìàñèâ id â ÿ÷åéêå numID íå ðàâåí 0 òî ïåðåõîäèì íà ñòðî÷êó 7.
14. Çàíîñèì â ìàññèâ id íîìåð ãðîæäàíñòâà â ïîçèöèþ numID.
15. Ïåðåõîäåì ê ñòðîêå 7.
-
Ïðîãàíè â óìå ýòîò àëãîðèòì. Â íåì åñòü ñêðûòàÿ îøèáêà. Ïîýòîìó èçìåíè åãî ÷òîáû óñòðàíèòü îøèáêó.
-
Èçâåíÿþñü ÷òî èñ÷åç èç AW ïðîñòî ýëåêòðè÷åñòâî îòêëþ÷èëè. Âîò òîêà ñììîã çàéòè. Âîáùåì èäåþ íàäåþñü òû ïîíÿë. Åñ÷å ðàç ïîäóìàé íàä àëãîðèòìîì è íàïåøè çäåñü ïðàâëåíûé âðÿíò. È äà ó ìåíÿ ñåé÷àñ çàâàë ïî ðàáîòå òàê ÷òî íå çíàþ ïîëó÷èòñÿ ëè âûáðàòñÿ â AW äî âûõîäíûõ. Ïîýòîìó áóäåì ñâÿçü äåðæàòü çäåñü íà ôîðóìå. Íàïîìèíàþ ëîãè÷åñêóþ îøèáêó òû åñ÷å íå íàøîë.
-
Ïîìèìî îøèáîê, êîòîðûå ìû â÷åðà îáñóæäàëè (íå îáúÿâëåíà ïåðåìåííàÿ str, íóæíà äîï. ïåðåìåííàÿ äëÿ èñêëþ÷åíèÿ çàòèðàíèÿ íîìåðà ãðàæäàíñòâà â numID, â ñòðîêå 9 îøèáêà ïåðåõîäà íà ñòðîêó - âìåñòî 7 íàïèñàíî 6) - íàø¸ë êàê ìíå êàæåòñÿ è ëîãè÷åñêóþ îøèáêó.
Îøèáêà â ñòðîêå 9. Ïîëó÷àåòñÿ, åñëè ïîëüçîâàòåëü íàïèñàë ñîîáùåíèå â ÷àò, íî íå ñîîáùèë î âûáðàííîì öâåòå, òî ýòî åãî ñîîáùåíèå èãíîðèðóåòñÿ è ÷àò ñíîâà ïåðåõîäèò â ðåæèì îæèäàíèÿ.  ìî¸ì âàðèàíòå ýòî óæå 10-ÿ ñòðîêà, ãäå ïîëüçîâàòåëþ ñðàçó íàçíà÷àåòñÿ ÷¸ðíûé öâåò, åñëè îí íå âûáðàë íèêàêîãî öâåòà.
Ïîïûòàëñÿ èñïðàâèòü âñå ïåðå÷èñëåííûå îøèáêè.
__________________________________________________ __________________
1. Ñîçäàåì color ìàññèâ òèïà String ðàçìåðîì 15.
2. Ñîçäàåì id ìàññèâ òèïà int ðàçìåðîì 15.
3. Ñîçäà¸ì ïåðåìåííóþ str òèïà String.
4. Ñîçäàåì ïåðåìåííóþ numID òèïà int ðàâíóþ 0.
5. Ñîçäàåì ïåðåìåííóþ numColor òèïà int ðàâíóþ 0.
6. Çàïîëíÿåì color ìàññèâ íàçâàíèåì öâåòîâ.
7. Çàïîëíÿåì id ìàññèâ çíà÷åíèå 0.
8. Æäåì ñîîáùåíèÿ èç ÷àòà è ïîìåùàåì â ïåðåìåííóþ str, à íîìåð ãðàæäàíñòâà ïîëüçîâàòåëÿ - â ïåðåìåííóþ numID.
9. Ïðîâåðÿåì ïåðåìåííóþ str íà ñëîâî "Color" + ÷èñëî, åñëè èñòèíà òî ïåðåõîäèì íà ñòðîêó 13.
10. Îáõîäèì ìàññèâ id è ïðîâåðÿåì ÿ÷åéêè íà çíà÷åíèå numID, åñëè ëîæü - ïåðåìåííîé numColor ïðèñâàèâàåì 0 (â ìàññèâå color ÿ÷åéêà ñ òàêèì íîìåðîì îòâå÷àåò çà ÷¸ðíûé öâåò). Ïðè èñòèíå íîìåð ÿ÷åéêè ïîìåùàåì â ïåðåìåííóþ numColor.
11. Âûâîäèì ñòðîêó str öâåòîì èç ìàññèâà color ïîçèöèè numColor.
12. Ïåðåõîäèì íà ñòðîêó 8.
13. Èçâëåêàåì ÷èñëî èç ñòðîêè str ïîñëå ñëîâà Color. ×èñëî äîëæíî áûòü â ïðåäåëàõ îò 0 äî 15. È ïîìåùàåì â ïåðåìåííóþ numColor.
14. Åñëè ìàññèâ id â ÿ÷åéêå numColor íå ðàâåí 0, òî ïåðåõîäèì íà ñòðîêó 8.
15. Çàíîñèì â ìàññèâ id íîìåð ãðàæäàíñòâà â ïîçèöèþ numColor.
16. Ïåðåõîäèì ê ñòðîêå 8.
__________________________________________________ __________________
Êñòàòè â ýòîì êîäå íåò íàâîäÿùåãî âîïðîñà äëÿ ïîëüçîâàòåëåé. Íî òàêóþ ïðîáëåìó ìîæíî ðåøèòü ïðîñòî âûñòàâèâ â ñàìîì ìèðå òàáëè÷êè ñ óêàçàíèåì íîìåðîâ âûáèðàåìûõ öâåòîâ.
Òàêæå ïðîãðàììà íå èìååò ïàìÿòè íà ñîîòâåòñòâèå âûáðàííîãî öâåòà òîìó èëè èíîìó ïîëüçîâàòåëþ, òî÷íåå ïàìÿòè íà òàáëèöó ñîîòâåòñòâèé. Òî åñòü íåñêîëüêî ïîëüçîâàòåëåé ìîãóò âûáèðàòü îäèí è òîò æå öâåò. Íî ýòî ïîõîäó è íå íóæíî, òàê êàê áîò âñ¸ ðàâíî íå çàäà¸ò ïîëüçîâàòåëþ êàêîé öâåò âûáðàòü.
 ìîåé âåðñèè àëãîðèòìà òîæå ìîãóò áûòü îøèáêè, íî ñåé÷àñ íåò âðåìåíè èõ ïåðåïðîâåðÿòü, çàâòðà ïðîâåðþ.
-
Î÷åíü õîðîøî. Ýòî âñåãîëèøü íàáðîñîê èäåè. Òàê ÷òî çäåñü åñòü êó÷à âîïðîñîâ. Íî ïðè äàëüíåéøåé äåòàëèçàöèè îíè áóäóò èñ÷åçàòü. Íàñ÷åò ïàìÿòè âçãëÿíèòå íà ñòðî÷êó 15 è ÷èòàéòå ïîêà íå ïîéìåòè ñóòü. À ïîïîâîäó èãíîðèðîâàíèÿ ïîëüçîâîòåëåé êîòîðûå íå â ñïèñêå id òàê è çîäóìàíî, âåäü ñìûñàë â òîì ÷òîáû îòîáðîæàòü ñòðîêè âûáðàíûì öâåòîì à íå äóáëèðîâàòü êàæäóþ ñòðîêó ÷àòà. Ìîÿ ëîãè÷åñêàÿ îøèáêà ïðîÿâèòñÿ äóìàþ ïðè ðåàëèçàöèè àëãîðèòìà, ïîýòîìó ïîêà îïóñêàåì ýòîò âîïðîñ.
Òåïåðü ÿ õî÷ó ÷òîáû âû âûïèñàëè çäåñü êëþ÷åâûå ñòðîêè äëÿ ëþáîãî àëãîèòìà. Òèïà ïåðåõîäà íà íîìåð ñòðîêè è ò.ä. Òàêæå âûïåøèòå ñòðîêè êîòîðûå ïî âàøåìó ìíåíèþ ìîãóò áûòü ôóíêöèÿìè. Òîåñòü ñòðîêè êîòîðûå ïîäðóçîìèâàþò íåêóþ ïîä ïðîãðàììó, òèïà ñòðîêè 8.
-
-
Ñòðîêà 77 òàì ëèøíÿÿ (79-ÿ òåì áîëåå), ïðîñòî òåñòèðîâàë ñîäåðæèìîå ÿ÷åéêè ìàññèâà color.
Ôóíêöèþ íà ñòðîêå 107-111 íàø¸ë íà êàêîì-òî ñàéòå, êàê ðàáîòàåò ôèã çíàåò, íå ðàçáèðàëñÿ, â îðèãèíàëå â êà÷åñòâå àðãóìåíòîâ íàäî áûëî ââîäèòü íàçâàíèÿ öâåòîâ èç ïåðå÷èñëåíèÿ, íî ÿ ïåðå÷èñëèìûé òèï çàìåíèë íà int, òàê íàäî, ÷òîáû ïîëüçîâàòüñÿ öåëî÷èñëåííûì ìàññèâîì color.
Ðåøåíèå ëîãè÷åñêîé îøèáêè, êîòîðàÿ ïðîÿâëÿëàñü ïðè îáõîäå ìàññèâà id - â ñòðîêå 53. Ïîêà íå íàéä¸òñÿ íóæíîå ãðàæäàíñòâî èëè íå äîéä¸ò äî ïîñëåäíåé ÿ÷åéêè ìàññèâà - öèêë (ñòðîêà 43) áóäåò ïîâòîðÿòüñÿ ñíîâà è ñíîâà.
Âîò ðåçóëüòàò

Ïîñëå ââîäà ñîîáùåíèÿ (ëàòèíñêèìè áóêâàìè - íå ïîìíþ êàê çàñòàâèòü ââîäèòü êèðèëëèöåé) - öèêë íà ñòðîêå 75 ñòèðàåò âñ¸ ñ êîíñîëè è ïîÿâëÿåòñÿ âíèçó ñîîáùåíèå ñ íóæíûì öâåòîì:

Ñóòü â òîì, ÷òî ñâîé ID (ÿêîáû ãðàæäàíñòâî) â ýòîì ïñåâäî-÷àòå íóæíî ââîäèòü âñåãäà ïåðåä ñîîáùåíèåì. Ïîñëå òîãî, êàê âûáðàë íîìåð öâåòà, íà ïîâòîðíî ïîòîì çàäàííûé âîïðîñ "Áóäåì çàäàâàòü öâåò ÷àòà?" íóæíî îòâå÷àòü íåò, èíà÷å ñíîâà ïåðåéä¸ì ê âûáîðó öâåòà. Åñëè íå âûáðàâ (ïðè îïðåäåë¸ííîì ID) öâåò, òî ïðè îòâåòå íà âûøåóêàçàííûé âîïðîñ îòðèöàòåëüíî, ïðîãðàììà ñíîâà îòñûëàåò ê âûáîðó öâåòà. Öâåòà, ñîîòâåòñòâóþùèå íîìåðó ãðàæäàíñòâà çàïîìèíàåò, àëãîðèòì îòëè÷íûé, ÿ áû åãî ïðèäóìàë áîëåå ãðîìîçäêèì, ñ ÷åòûðüìÿ ìàññèâàìè, âîò ÷òî çíà÷èò îïûòà ó ìåíÿ íåò
-
Îêåé. Ñêàæèòå ÷òî áóäåò åñëè îäèí è òîòæå ïîëüçîâàòåëü (ñ îäèíàêîâûì id) âûáåðåò ïîäðÿò âñå öâåòà? Îí çàáåò ñàáîé âåñü ìàñèâ id.  ýòîì òî è áûëà ìîÿ ëîãè÷åñêàÿ îøèáêà. Çäåñü äàæå íå â îïûòå äåëî, ïðîñòî òû äîëæåí ëþáîé àëãîðèòì ÷óâñòâîâàòü. Ýòîìó ÿ è ïûòàëñÿ òåáÿ íà ó÷èòü. Ïîòîìó ÷òî ýòî îñíîâà ïðîãðàììèðîâàíèÿ. Êîãäà îò÷åòëèâî âèäèøü àëãîðèòì ëþáîé ïðåõîäÿùåé íà óì èäåè òî äëÿ òåáÿ òîãäà óæå íå âàæíî íàñêîëüêî îãðîìíûé ïðîåêò òû çàäóìàë. Ðåàëèçàöèÿ óæå ñòàíîâèòñÿ ïðîñòûì äåëîì.
-
Äà êñòàòè. ×òî áóäåò åñëè îäèí è òîò æå ïîëüçîâàòåëü âûáåðåò â íà÷àëå 1 öâåò, à ïîòîì 2? Êàêîé áóäåò åãî öâåò 1 èëè 2?
Âàøè ïðàâà
- Âû íå ìîæåòå ñîçäàâàòü íîâûå òåìû
- Âû íå ìîæåòå îòâå÷àòü â òåìàõ
- Âû íå ìîæåòå ïðèêðåïëÿòü âëîæåíèÿ
- Âû íå ìîæåòå ðåäàêòèðîâàòü ñâîè ñîîáùåíèÿ
-
Ïðàâèëà ôîðóìà