Borland C++ (pomoc plz)

Sekcia o programovaní, programovacích jazykoch...
Používateľov profilový obrázok
materik
Používateľ
Používateľ
Príspevky: 2327
Dátum registrácie: Št 10. Apr, 2008, 14:00
Bydlisko: Prešov

Re: Borland C++ (pomoc plz)

Príspevok od používateľa materik »

tak pozrel som na to trochu viac a par veci sa mi vyjasnilo.
prikaz textcolor velmi zavisi od kompilatora, moj to nedokazal :), ak ti to ide tak OK

funkcie: no napr tie body navratu goto (neviem ako sa to oficialne vola, goto nepouzivam)
sa pekne daju nahradit funkciami

napr, vsetky tie posuny kurzora by si si hodil do oddelenej funkcie povedzme void game(); (void - ak v nej nemas return)
cize tvoj main() by vyzeral nejako takto:
Spoiler: ukázať
int main(){
....
game();
...
return 0;
}

void game(){
...
}
Ide o to, ze tie skoky v jednej funkcii by si nahradil samostatnou funkciou a mohol by si ju lubovolne volat v nejakom cykle,
pripadne obmedzit podmienkami.


Ukazka rekurzivnej funkcie (ktora vola samu seba)
- v petriho miske mas 1 virus a x bakterii. Po kazdej minute virus zabije jednu bakteriu a rozmnozi sa. Potom sa rozmnozia aj bakterie. Po kolkych minutach virusy zlivkiduju vsetky bakterie.
Spoiler: ukázať
#include <stdio.h>

int zabi(int b, int v)
{
static int i=0; // static preto, aby si lokalna premenna uchovala hodnotu aj pri dalsich volaniach / moze byt aj globalna
printf("Po %d minute je %d bakt a %d virov.\n", i, b, v);
i++;
if (b==0)
{
printf("Bakterie boli vyhubene po %d minutach.\n", i-1);
getchar();
return 0;
}
zabi(2*(b-=v), 2*v); // funkcia zavola samu seba s tym, ze si odovzda 2-nasobny pocet virov a 2-nasobny poect bakterii - viry
}

int main()
{
int bakt, vir=1;
printf("Zadajte pocet bakterii: ");
scanf("%d", &bakt); // nacita pocet bakterii
fflush(stdin); // splachne buffer, cize aby ENTER nebral ako znak a nezblbol getchar() helpne to s podrzanim konzoly
zabi(bakt, vir); // zavola funkciu ktorej odovzda argumenty hodnotou, teda pocet virov a pocet bakterii
return 0;
}
Odovzdavanie argumentov hodnotou znamena, ze v tele inej funkcie nepracujes s premennou inicializovanou v povodnej funkcii ale
len s jej hodnotu. Cize hocake zmeny ktore s premennou vykonas v tele volanej funkcie nemaju vyplyv na premmenu vo volajucej
funkcii po navrate do nej.
PC -> Topping DX7 Pro+ -> Meze 109 PRO / Microlab B77
thebugerror
Nový používateľ
Nový používateľ
Príspevky: 40
Dátum registrácie: So 27. Nov, 2010, 02:13

Re: Borland C++ (pomoc plz)

Príspevok od používateľa thebugerror »

Dikes skusim to preprogramovat...

A netusil by si ako by som prednastavil rozlisenie EXE? jako borland C my vytvori automaticky EXE ale ked ju spustim tak my to otvori v inaksom rozliseni nez si predstavujem.

By som ti aj skorej odpisal ale nevsimol som si ze to prehodilo na dalsiu stranku.
thebugerror
Nový používateľ
Nový používateľ
Príspevky: 40
Dátum registrácie: So 27. Nov, 2010, 02:13

Re: Borland C++ (pomoc plz)

Príspevok od používateľa thebugerror »

Ahoj no tak som to cele prerobil do voidov inac ,poviem ti je to lepsie davat do voidov nez som to robil ja :-) .

Ked chces ,tak sa mozes prozret co som to vykutil : http://media0.webgarden.name/files/medi ... ekVOID.rar

Inac diky voidov som zistil jako sa da rozdelit skenovac na dve a viacej casti.. jako bezva :D .
A aby som nezabudol dakujem za pomoc , a este nieco mohol by niekto prosim odpovedat na tu otazku o rozliseni okna co som pisal vyssie?
Používateľov profilový obrázok
materik
Používateľ
Používateľ
Príspevky: 2327
Dátum registrácie: Št 10. Apr, 2008, 14:00
Bydlisko: Prešov

Re: Borland C++ (pomoc plz)

Príspevok od používateľa materik »

eee... trochu si len daj do poriadku nazvoslovie

Daval si to do funkcii, nie do void-ov. Void je len datovy typ - resp. ziadny typ. Totiz ak by si mal napr.
funkciu int game() tak v tele funkcie sa musi nachadzat return ktory vrati cele cislo, teda int.
Funkcia s navratovym typom void nemusi mat return. Ale aspon vidis, ze sa s tym pracuje lahsie, ze?

Inac, tebe ten subor aj skompiluje? Mne nie...
PC -> Topping DX7 Pro+ -> Meze 109 PRO / Microlab B77
thebugerror
Nový používateľ
Nový používateľ
Príspevky: 40
Dátum registrácie: So 27. Nov, 2010, 02:13

Re: Borland C++ (pomoc plz)

Príspevok od používateľa thebugerror »

Mne to skompiluje normalne inac poslem ti Borland C++ dneska potom si ho stiahni ked budes chciet :)
thebugerror
Nový používateľ
Nový používateľ
Príspevky: 40
Dátum registrácie: So 27. Nov, 2010, 02:13

Re: Borland C++ (pomoc plz)

Príspevok od používateľa thebugerror »

No tu som ti uploadol borland c++ ktory pouzivam : http://www.ulozto.sk/7490688/borlandc-rar

Inac pripadne napady by som rad primul :) alebo i triky. Dakujem.
Používateľov profilový obrázok
materik
Používateľ
Používateľ
Príspevky: 2327
Dátum registrácie: Št 10. Apr, 2008, 14:00
Bydlisko: Prešov

Re: Borland C++ (pomoc plz)

Príspevok od používateľa materik »

okis, ak mi dnes zvysi cast, tak sa na to pozriem
PC -> Topping DX7 Pro+ -> Meze 109 PRO / Microlab B77
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: Borland C++ (pomoc plz)

Príspevok od používateľa pEpinko »

Tomu co presne chces vobec nerozumiem (to rozlisenie okna...). Ale mam par pripomienok, co som to tak zbezne prebehol.

Mas tam:
char aboutdead[100]="laser";

takto by to snad ziadny programator v C nenapisal. Lepsie je char *aboutdead = "laser"; To co si napisal ty ma zmysel, ale vacsinou to chces pouzit tak ako som napisal ja.

Dalej nerozumiem podmienkam:
if(UpDownRightLeftESC==toupper('S')) {...}

Aky tam ma zmysel to toupper? Nefunguje to aj bez neho? Podla mna by malo.

Tie navestia bridge: a goto bridge; maju nejaky zmysel? Zda sa mi ze to pouzivas namiesto toho aby si dal return vo funkciach.

Mas tam

Kód: Vybrať všetko

void RQ(char aboutdead[100],int xposition)
{
    ...
	if(restartquit==toupper('R'))
	{
		goto bridge;
	}
   ...
	bridge:
}
Co by sa podla mna dalo nahradit za.

Kód: Vybrať všetko

void RQ(char aboutdead[100],int xposition)
{
    ...
	if(restartquit==toupper('R'))
	{
		return;
	}
   ...
}
V maine mas tiez nejaky bridge. Tam by sa to tiez podla mna dalo nahradit.

Kód: Vybrať všetko

bridge:
...
goto bridge;
nahradis za

Kód: Vybrať všetko

while(1)
{
...
}
Stale mas problemy s vypisom na konzolu a co ja viem s cim. Nebolo by lepsie si najst nejaku kniznicu na consolovu grafiku? Myslim, ze nejake existuju.
thebugerror
Nový používateľ
Nový používateľ
Príspevky: 40
Dátum registrácie: So 27. Nov, 2010, 02:13

Re: Borland C++ (pomoc plz)

Príspevok od používateľa thebugerror »

No myslim ze by som si asi mal najst , jako ja neviem docela jak vsetky kody v borlande pracuju... ale jako ja si myslim o toupper ze..

char a=toupper(getch());
if(a==toupper('C');

charakter a=toupper(nacita zmacknutu hodnotu z klavesnice));
-
ked (a == toupper (teda pravda),a nacitana hodnota z klavesnice musi byt napr 'C' (pravda az po zmacknuti 'C' na klavesnici==nacitanie prikazov v dannom if)
-


Navise som netusil ze ked zadam funkciu "return;" tak ma to splachne na koniec...

Ukazem ti program co zisti decimalnu hodnotu klavesi, no viem ze si ho uz asi robil ale aj tak predsa ad sa zasmejeme :-) ...

Spoiler: ukázať
#include<conio.h>
#include<ctype.h>
#include<stdio.h>
#include<process.h>
#include<stdlib.h>

void NHZK() //Nacitana Hodnota Z Klavesi
{
clrscr();
printf("Zmackni ESC pre opustenie");
gotoxy(20,23);
printf("Decimalna hodnota zmacknutej klavesi : ");
int C=toupper(getch()); //Citaj z klavesi ciselnu hodnotu
printf("%d",C);
char EXT=toupper(getch());
if(EXT==toupper(27)) //Dec 27=Escape=ESC
{
exit(0); //Ukoncenie programu
}
NHZK();
}

main() //Nepotrebuje return 0; ked sa k nemu aj tak nedostane
{
NHZK(); //Volaj void NHZK
}


Ale netusim preco niektore klavesi neobsahuju decimalnu hodnotu.Ale kebyze by si chcel vediet aj tie co nemaju decimalnu hodnotu tak to asi vypada takto : 0x0000.. : http://ia32-libs-kde.sourcearchive.com/ ... lient.html tusim ze tam su tie spravne hodnoty HEX klaves.
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: Borland C++ (pomoc plz)

Príspevok od používateľa pEpinko »

Ten getch() s vysokou pravdepodobnostou vracia ASCII kody.

Funkcia toupper podla mna jedine meni male pismena na velke.

Cize char a=toupper(getch()); ma este zmysel. Ak stlacis povedzme 'd' tak sa do a ulozi 'D'. Co ale uz moc zmysel nema je if(EXT==toupper(27)) tam uplne staci if(EXT == 27).
thebugerror
Nový používateľ
Nový používateľ
Príspevky: 40
Dátum registrácie: So 27. Nov, 2010, 02:13

Re: Borland C++ (pomoc plz)

Príspevok od používateľa thebugerror »

No tusim ze tam to toupper nemusi byt v If ale ja to tam preistotu davam :). Potom to skusim od testovat naobed.
thebugerror
Nový používateľ
Nový používateľ
Príspevky: 40
Dátum registrácie: So 27. Nov, 2010, 02:13

Re: Borland C++ (pomoc plz)

Príspevok od používateľa thebugerror »

Mas pravdu to toupper nemusis davat do If ale v podstate je to to iste.
thebugerror
Nový používateľ
Nový používateľ
Príspevky: 40
Dátum registrácie: So 27. Nov, 2010, 02:13

Re: Borland C++ (pomoc plz)

Príspevok od používateľa thebugerror »

Ahojte uz som zasa zpet... vylepsil som si tu hru... ale aj toto som robil v anglictine.

Hru mozete stiahnut tu : KLIKNI_SEM
Potrebny program na spustenie hry je : Borland C++ alebo mozete stiahnut tu KLIKNI_SEM
Su potrebne include : conio.h , stdio.h , string.h , dos.h , stdlib.h , ctype.h
Naposledy upravil/-a thebugerror v Po 31. Jan, 2011, 11:39, upravené celkom 1 krát.
thebugerror
Nový používateľ
Nový používateľ
Príspevky: 40
Dátum registrácie: So 27. Nov, 2010, 02:13

Re: Borland C++ (pomoc plz)

Príspevok od používateľa thebugerror »

PEPINKO to rozlisenie okna myslim to ze ked zapnem svoju exe tak aby my to otvorene okno exe neotvorilo v rozliseni co ja viem 100x100 ale aby to otvorilo v rozliseni 1000x1000. Dakujem

Teda miesto toho aby kazdy urobil to ze pravim klikne na xxx.exe/vlastnosti/obrazovka/a zmenil sposob pouzitia z "OKNA" na "CELU OBRAZOVKU".Aby to uz mala exe prednastavene.
thebugerror
Nový používateľ
Nový používateľ
Príspevky: 40
Dátum registrácie: So 27. Nov, 2010, 02:13

Re: Borland C++ (pomoc plz)

Príspevok od používateľa thebugerror »

No tu som to cele zhotovil aj s potrebnymi include ... no ked sa vam nechce stahovat to vsetko tam vyssie ,tak mozete rovno cele demo stiahnut tu KLIKNI_SEM

Návrat na "Programovanie"