Rotace v jazyce C – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Rotace v jazyce C – C / C++ – Fórum – Programujte.comRotace v jazyce C – C / C++ – Fórum – Programujte.com

 

Karell0
Duch
23. 4. 2009   #1
-
0
-

Dobrý den,
mám takový problém - mám pole, které obsahuje text a potřeboval bych ho postupně rotovat, aby se mi na lcd displeji šoupal text. Měl jsem to napsané přes for cykly, ale to je celkem neefektivní. Něco jako je třeba rotace v asembleru.
Zatím to mám takhle:

for (i=0x80; i<0x91; i++) {         // Zapis do horni polovinz displeje, 

writelcd(i,0); // posuv kurzoru na pozadovane misto

for ( pom.horni_radka=pole.horni_radka; *pom; pom++) { // Vypis textu
for(j=0;j<5000;j++){ // Cekaci smycka
;
}
writelcd( *pom, 1); // Zapis na lcd
writelcd(0x0c,0); // Vypne kurzor

}
i--;
writelcd(i,0);
writelcd(' ',1); // Mazani znaku
i++;
}

Cílem je, aby se mi data v poli pošoupla pokaždé o jednu pozici a já potom to pole zapíšu na displej atd.
Děkuji

Nahlásit jako SPAM
IP: 89.235.37.–
dannyk0
Věrný člen
23. 4. 2009   #2
-
0
-

Jestli sem to pochopil spravne, tak bych to resil asi nejak takto:
Udelal bych si pole 2x vetsi nez dany text, ktery ma rotovat.
V kazdem cyklu bych prenesl prvni pismeno textu na konec a posunul ukazatel zacatku o 1 vpravo.
Kdyz bych narazil na konec pole (nelze presunout pocatecni pismeno na konec), tak bych presunul cely text zase na zacatek pole a nastavil ukazatel na zacatek toho pole.
To pole sem zvolil 2x vetsi proto, abych se vyhnul neustalemu presunovani vsech znaku o 1 vlevo.

Snad sem to popsal nejak solidne.Mozna nekoho napadne neco lepsiho.

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
tmi0
Věrný člen
9. 5. 2009   #3
-
0
-

a co treba toto:

char znaky [n];
for ( i = 0; i < k ; i++ ){ // i bude oznacovat 'zacatek' pole
for ( j = 0; j < n; j ++ )
printf("%c", znaky [ (i+j)%n ] );

printf('\n");
}

toto k-krat vypise text, vzdy o jedna zrotovany oproti predchozimu.
hlavni vyhoda spociva v tom ze neni potreba nic fyzicky presouvat, rotovani probiha ciste indexaci.

Nahlásit jako SPAM
IP: 213.226.226.–
ksp.mff.cuni.cz -- doporučuje 5 z 0 přetečených bufferů!
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 88 hostů

Podobná vlákna

Otočení- rotace — založil Klobma

PS rotace pohledu — založil Baldur

Kvaterniony a rotace — založil kosta

Rotace 3D objektu — založil SoLi

Rotace článků v JS — založil Aleš Koukal

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý