Jsem začátečník v C, chci se vyhnout mazání okna system("cls"). Existuje skok, kterým bych se dostal na začátek pole a přepsal ho? Nechci použít zápis - výpis ze souboru.
Fórum › C / C++
Skok na začátek pole
tak to opravdu nejsi sam kdo to nechape :D
mno napada me ze to myslel takto :
1) chce neco jinyho nez system("cls");
to je toto:
void clrscr(void)
{
COORD coordScreen = { 0, 0 };
DWORD cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO csbi;
DWORD dwConSize;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsole, &csbi);
dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
FillConsoleOutputCharacter(hConsole, TEXT(' '), dwConSize, coordScreen, &cCharsWritten);
GetConsoleScreenBufferInfo(hConsole, &csbi);
FillConsoleOutputAttribute(hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten);
SetConsoleCursorPosition(hConsole, coordScreen);
}
jen dodam ze autor je pan Jiri Valerian
2) skok kterym by se dostal na zacatek si vysvetluju jako cariege return cili : r nebo BS: Backspace (návrat o 1 znak zpět)
3) popr smazani radky:
(pozn. nutny borlandi prekladac)
#include <conio.h>
#include <stdio.h>
int main(void)
{
clrscr();
cprintf("Funkce DELINE rusi radek obsahujici kurzorrn");
cprintf("a presouva vsechny radky pod nim o jeden radek nahoru.rn");
cprintf("DELINE operuje v prave aktivnim textovem okne.rn");
cprintf("Stiskni libovolnou klavesu pro pokracovani...");
gotoxy(1,2); // presun kurzor do druheho radku a prvniho sloupce
getch();
delline();
getch();
delline();
getch();
delline();
getch();
return 0;
}
kazdopadne nechapu toto:
......Nechci použít zápis - výpis ze souboru.........
pokud sem ti nepomohl formuluj dotaz lip :D :D
Omlouv?m se za ?patnou formulaci, jsem opravdu na za??tku. Vytvo?il jsem si pole s jedn?m znakem a m?n?m je postupn? n?hodn? na jin? znak a pole zobraz?m. Cel? je to v nekone?n? smy?ce. Pole se mi zobrazuje pod sebe. Tak jsem pou?il system("cls"), aby se mi pole zobrazovalo v jedom m?st?. Do?etl jsem se, ?e to jde ud?lat tak, ?e v?dy po zm?n? pole nejd??ve zap??i do souboru, v n?m provedu skok na za??tek, tu??m ?e pomoc? seek a vyp??i ho. Podle va?ich rad si mysl?m, ?e gotoxy() bude to prav? :-) Jsem zelen??, zkus?m to, moc d?k!!!
takze:
1) pokud mas jeden znak nemusis mit preci pole, ale staci ti preci char znak;
2) to co rikas s tim souborem mi prijde jako blbost ale neslysel sem o tom...kazdopadne zadna nedorozumeni by nevznikali kdyby sem lidi hazeli i zdrojaky ;)
3) pokud to chces vyzkouse tak jedine tak jak sem psal ze si sezenes borlandi prekladac, ja pouzivam Borland C++ 3.1
(celkove conio.h nejni soucasti standardu jazyka C)
az si ten prekladac seznes, vyzkousej tohle:
#include <conio.h>
int main(void)
{
clrscr();
gotoxy(10,10);
cprintf("Current location is X: %d Y: %d\r\n", wherex(), wherey());
getch();
return 0;
}
tjn
- co to ma delat ?
- kde vidis problem ?
necekej ze ti to vystihneme na tace ;)
ps: prekladac pouzivej jen na prekladani, pis si to kde chces ;)
alepson takto delam ja
Tak se vrátím na začátek. Učím se 2měsíce programovat. Programuji dobrovolně! Chci pochopit, když něco napíšu, jak to chodí. Od známého dostanu úkol a snažím se ho splnit. Neočekávám, že mi to vyřešíte a to byl jeden z důvodů, proč jsem ten zdroják nedodal okamžitě myslel jsem, že se dozvím, co potřebuji, bez toho. Jsem si vědom, že vypadá hrozně. Třeba za rok ho napíšu lépe...?
Tento zdroj tiskne pole X-ek a podle algoritmu ho přepisuje mezerou, takže to jako žije. Ale díky cls se už nedá pod něj nic dopsat, proto hledám skok. Používám Dev-Cpp a to mi nepřeloží gotoxy a pod. Tak jsem si sehnal borland 5.5 a s nám neumím.
1) co nechapes na teto vete ? :
ps: Borland prekladac pouzivej jen na prekladani, pis si to kde chces ;)
nebo co ti jako nejde ? a vidis zase sme u toho zase budu jasnovidcovat :
copak tam neni polozka File a podpolozka Open (soubor - otevrit) vyber svuj cpp
a copak tam nejni menu Build a trebass Build All, Compile or Make exe (u me to je F9)
vubec to dal neresim du do slozky pac f9 to jen zkompiluje a spoustim ho ruco....
2)samozrejme ze dev-cpp to nerozjede, uz sem psal jedna se o Borland Specifik jinde proste gotoxy nerozchodis
3) zkousel si carriege return, line feed ci jine escape sekvence ?
achjo zase zabrehavame uplne nekam jinam.....vubec stale nechapu proc se chces vracet nazpet :ms_0399:
dit kreslis furt dolu ne ? a posuvnik rulez. Navic fakt furt nevim (rikas skok na obrazovvce pak skok v poli, je treba si to ujasnit)
typ an zaver:
halec kdyz ani po druhym vysvetleni me lidi nechapou zacnu pouzivat ruce a nohy na domluveni - jinymi slovy:
napis svuj dotaz jak pro blbecka ze zvlastni :ms_0017: predsav si ze ja su ten blbecek a ty mi proste problem rozepis na klidne pul stranky pouzivej pritom obrazky, zvuky cokoliv. u kazdeho trochu slozitejsi nebo obtizne formulovaneho slovicka dej zavorku a prepis to jinymi slovy. Jinak se vubec nehneme coz ty nechces .
posledni vec na zaver:
-neber to jako kritiku my taky zacianaly a nebylo to o nic lepsi :ms_0007:
-prosim nepouzivej pri dotazech vykricniky lidi (nebo mozna jen ja :ms_0001: ) sou na to haklivy
viz. co myslim :
Programuji dobrovoln?!
to co sem ti radil.....myslel sem ze chces graficky skok, ted mi dochazi ze chces skocit na zacatek pole to je ale easy:
pole[0] nebo pouzij pointer
ahoj
ja si to myslel v celym topicu sem mu to i tvrdil ale on me v tom neusvedcil tak sem ted do posledniho postu napsal dle nazvu topicu skok v poli
halec tenhle topic uz vubec nebudu resit
- zazatel vubec nekomunikuje
- mam nulovou slovni vyjadrovaci schopnost co se tice Ccka
- do tedka nezkusil kod ktery sem mu psal cili. gotoxy(),
To zacatecnik: Ano, měl si pravdu s tím grafickým skokem. Příklad zněl: Vytvoř pole Xek a pusť na to algoritmus, pro který platí:
1) umrti: bunka na pozici pole[i][j] zemre ('X'), pokud je nyni ziva ('O') a zaroven s ni primo sousedi min jak 2 nebo vic jak 3 bunky 'O'
2) preziti: bunka na pozici pole[i][j] prezije, bunka je nyni ziva ('O'), a bude sousedit se 2 nebo 3 zivymi bunky
3) narozeni: na pozici pole [i][j] vznikne nova bunka, pokud tam momentalne neni ziva bunka, nebo-li je tam 'x' a soucasne pocet sousednich zivych bunek ('O') je presne 3.
To mi běhá, když spustím konzolu, tak se to vypisuje pod sebe. Tak jsem použil system('cls'), přepisuje a mění se to v jednom místě. No ale když chci pod to cokoliv dopsat, tak se mi to díky cls smaže. Proto hledám nějakou alternativu, která by šla použít s ohledem na mou začátečnickou nemohoucnost. Aby se měnilo jen pole Pointery zatím nepoužívám, snad v blízké době, až strávím základy. Sorry, že jsem neodpověděl, doma zatím nemám přístup na net, Čekám přípojku po 23.11. (S O2 je docela dobrá domluva, už to trvá 2 roky )a po večerech hraju muziku. gotoxy() jsem vyzkoušel, ale protože nemám pořád ještě borland 3.11, tak jsem to neviděl běhat, měl by být v pondělí. Pokud nechceš se mnou komunikovat, tak Ti stejně dík. Třeba časem.
stejnak to moc nechapu ale rad ych ti helfnul....
chces pod pole neco vypsat ale diky cls to nejde ? tak to urob takhle:
udelej si fci co se ma vykreslit
void kresleni()
{
//tady se vykresli pole
// a tady text
}
text bude globalni promenna
no a pokud pouzijes system("cls");
tak hned zatim zavolas kresleni();
Jestli to neni vono tak fakt sorry ale jaksi si furt nedokazu predstavit co chces
jinak s tim O2 naprosto souhlasim ! my sme cekali 4 mesice na pripojeni a to sme uz u nich byli predtim ! ! proste nez to obnovili tak to trvalo 4 mesice ale ne jen tak ze dne na den ale az po poslani dopisu se stiznosti na vedeni O2 a tobe doporucuji to same ;)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Jak přidat element na začátek pole? — založil oxidián
Skok na stejnou pozici scrollu — založil Figa
Moderátoři diskuze