Borland C++ (pomoc plz)
-
- Nový používateľ
- Príspevky: 40
- Dátum registrácie: So 27. Nov, 2010, 02:13
Borland C++ (pomoc plz)
Ked budu v texte pravopisne chybi predom sa ospravedlnujem.
Netusi niekto ako by sa dalo v Borlande C++ urobit taky prikaz ze ked presiahnem 10 pismen tak my to uz dalej nedovoli napisat? Lebo keby ze sa opitam ucitelky tak my asi odpovie ze take asi neexistuje... preto sa radsej chcem opitat vas vazeny skuseni programatori ze ci by ste my nepomohli.
Prosim pomozte.
Na odpisane spravi dakujem.
____________________________________________________________________________________________________________________
(citaj cervene)
Netusi niekto ako by sa dalo v Borlande C++ urobit taky prikaz ze ked presiahnem 10 pismen tak my to uz dalej nedovoli napisat? Lebo keby ze sa opitam ucitelky tak my asi odpovie ze take asi neexistuje... preto sa radsej chcem opitat vas vazeny skuseni programatori ze ci by ste my nepomohli.
Prosim pomozte.
Na odpisane spravi dakujem.
____________________________________________________________________________________________________________________
(citaj cervene)
Re: Borland C++ (pomoc plz)
urcite take nieco ide spravit, priblizne takto:
spravit listener nad klavesnicou, a ak pocet zadanych znakov je viac ako 10, filtrovat vstup (zahadzovat)
je to sice nebezpecne v tom, ze ak sa ti nieco dokasle, pomoze iba mys (alebo reset)
alebo nacitat kompletny retazec, a oseknut ho na 10 znakov (asi jednoduchsie)
spravit listener nad klavesnicou, a ak pocet zadanych znakov je viac ako 10, filtrovat vstup (zahadzovat)
je to sice nebezpecne v tom, ze ak sa ti nieco dokasle, pomoze iba mys (alebo reset)
alebo nacitat kompletny retazec, a oseknut ho na 10 znakov (asi jednoduchsie)
lava, prava, lava, prava ...
-
- Nový používateľ
- Príspevky: 40
- Dátum registrácie: So 27. Nov, 2010, 02:13
Re: Borland C++ (pomoc plz)
Netusis aky prikaz je na Listener alebo ako sa robi?
Useknut nvm co myslis asi toto char blabla[9];
No ale vtip je v tom ze my niektore prikazy ako IF nefunguju napr mam taketo neco urobene:
#include<prislusne kniznice>
main()
{
clrscr();
char veta[9];
strncpy(veta,veta,9);
scanf("%s",&veta);
printf("\n%s -> kontrola textu",veta);
if(veta=="ahoj")
{
printf("\n\nIf nam funguje");
}
getch();
return 0;
}
Ale ked skusim nasledujuci sposob tak my funguje if, ale neviem ako urobit ze pokial 5ty char bude obsahovat nieco tak ma to prehodi napr do goto spet;.
#include<prislusne kniznice>
main()
{
clrscr();
char a;
char h;
char o;
char j;
scanf("%c%c%c%c",&a,&h,&o,&j);
printf("Kontrola textu %c%c%c%c",a,h,o,j);
if(a=='a'){
if(h=='h'){
if(o=='o'){
if(j=='j'){
printf("\n\nkontrola textu bola spravna");}}}}
getch();
return 0;
}
Ked skusim nasledujuci sposob tak my zas nefunguje if absolutne nechapem preco.
#include<prislusne kniznice>
main()
{
clrscr();
char text2[9];
char text[9];
scanf("%s",&text);
printf("\n%s text\n\n",text);
scanf("%s",&text2);
printf("\n%s text2\n\n",text2);
if(text==text2)
{
printf("\ndobre");
}
getch();
return 0;
}
Asi tusim ze BORLAND C++ nevie porovnat hodnoty v %s.
Useknut nvm co myslis asi toto char blabla[9];
No ale vtip je v tom ze my niektore prikazy ako IF nefunguju napr mam taketo neco urobene:
#include<prislusne kniznice>
main()
{
clrscr();
char veta[9];
strncpy(veta,veta,9);
scanf("%s",&veta);
printf("\n%s -> kontrola textu",veta);
if(veta=="ahoj")
{
printf("\n\nIf nam funguje");
}
getch();
return 0;
}
Ale ked skusim nasledujuci sposob tak my funguje if, ale neviem ako urobit ze pokial 5ty char bude obsahovat nieco tak ma to prehodi napr do goto spet;.
#include<prislusne kniznice>
main()
{
clrscr();
char a;
char h;
char o;
char j;
scanf("%c%c%c%c",&a,&h,&o,&j);
printf("Kontrola textu %c%c%c%c",a,h,o,j);
if(a=='a'){
if(h=='h'){
if(o=='o'){
if(j=='j'){
printf("\n\nkontrola textu bola spravna");}}}}
getch();
return 0;
}
Ked skusim nasledujuci sposob tak my zas nefunguje if absolutne nechapem preco.
#include<prislusne kniznice>
main()
{
clrscr();
char text2[9];
char text[9];
scanf("%s",&text);
printf("\n%s text\n\n",text);
scanf("%s",&text2);
printf("\n%s text2\n\n",text2);
if(text==text2)
{
printf("\ndobre");
}
getch();
return 0;
}
Asi tusim ze BORLAND C++ nevie porovnat hodnoty v %s.
Re: Borland C++ (pomoc plz)
cely problem je v tom, ze porovnavanim
if(text1==text2)
porovnavas pointer na text1 vs pointer na text2
logicky zacinaju inde v pamati, takze su rozdielne, teda ti vracaju false
... java ma nieco ako String.compareTo(string2), resp. String.compareToIgnoreCase(string2)...
predpokladam, ze aj C++ bude mat nieco takeho (ak nie, pohladaj existujuce implementacie)
if(text1==text2)
porovnavas pointer na text1 vs pointer na text2
logicky zacinaju inde v pamati, takze su rozdielne, teda ti vracaju false
... java ma nieco ako String.compareTo(string2), resp. String.compareToIgnoreCase(string2)...
predpokladam, ze aj C++ bude mat nieco takeho (ak nie, pohladaj existujuce implementacie)
lava, prava, lava, prava ...
Re: Borland C++ (pomoc plz)
V C na porovnanie strcmp http://www.cplusplus.com/reference/clib ... ng/strcmp/ .
EDIT: Inak aky je vlastne tvoj problem? Chces aby sa ti nacitalo iba niekolko znakov? Ak ano tak scanf ma moznost do formatovacieho retazca dat, ze kolko maximalne znakov sa ma pouzit. Ako sa to zapisuje presne neviem, ale asi nieco ako "%10s" pre 10 znakov. Alebo chces aby sa vypisalo iba 10 znakov a dalej nech stacam co chcem sa nic nenapisalo?ň
EDIT2: V nadpise mas C++ nemyslis, ze by bolo lepsie pouzit string-y a cin a cout?
EDIT: Inak aky je vlastne tvoj problem? Chces aby sa ti nacitalo iba niekolko znakov? Ak ano tak scanf ma moznost do formatovacieho retazca dat, ze kolko maximalne znakov sa ma pouzit. Ako sa to zapisuje presne neviem, ale asi nieco ako "%10s" pre 10 znakov. Alebo chces aby sa vypisalo iba 10 znakov a dalej nech stacam co chcem sa nic nenapisalo?ň
EDIT2: V nadpise mas C++ nemyslis, ze by bolo lepsie pouzit string-y a cin a cout?
-
- Nový používateľ
- Príspevky: 40
- Dátum registrácie: So 27. Nov, 2010, 02:13
Re: Borland C++ (pomoc plz)
Cky musim si vase prispevky minimalne 20 x vyskusat v borlande aby som pochopil jak to presne ide.. zatial dakujem.
Inac pre info. niesom az tak priliz dobry v BORLANDE jako viem s tym robit ale jako ten TURBO help je tak troska... same skratky a potom sa v tom da tazko vyznat a ten google to je nieco... proste google nevyhlada to co chcem aj ked tam stravim 2 hod.
A netusite ze jako by sa dalo spravit ze kliknem sipku do predu tak to urobi nejaku funkciu?
A este ze ked pohnem myskou napr dopredu ze sa my vykona funckia?
Zatial len poznam nieco taketo tusim ze keby som chcel aby to napr po zmacknuti ENTER urobilo nieco tak to by chcelo poznat dekadicku skratku klavesi enter a nejaku funkciu ktora by to prelozila pre case...:
#include<prislusne kniznice>
{
clrscr();
bod:
char a=toupper(getch());
printf("Zmackni pismenko X na klavesnici pre vypnutie programu\n");
printf("A = ?\n\n\n");
switch (a){
case 'A':{
printf("Zmackol si pismeno A\n\n");
goto bod;}
case 'X':{
return 0;}}
getch();
return 0;
}
Inac pre info. niesom az tak priliz dobry v BORLANDE jako viem s tym robit ale jako ten TURBO help je tak troska... same skratky a potom sa v tom da tazko vyznat a ten google to je nieco... proste google nevyhlada to co chcem aj ked tam stravim 2 hod.
A netusite ze jako by sa dalo spravit ze kliknem sipku do predu tak to urobi nejaku funkciu?
A este ze ked pohnem myskou napr dopredu ze sa my vykona funckia?
Zatial len poznam nieco taketo tusim ze keby som chcel aby to napr po zmacknuti ENTER urobilo nieco tak to by chcelo poznat dekadicku skratku klavesi enter a nejaku funkciu ktora by to prelozila pre case...:
#include<prislusne kniznice>
{
clrscr();
bod:
char a=toupper(getch());
printf("Zmackni pismenko X na klavesnici pre vypnutie programu\n");
printf("A = ?\n\n\n");
switch (a){
case 'A':{
printf("Zmackol si pismeno A\n\n");
goto bod;}
case 'X':{
return 0;}}
getch();
return 0;
}
Re: Borland C++ (pomoc plz)
int _tmain(int argc, _TCHAR* argv[])
{
printf("Zadaj pismenno ( X pre koniec programu ) :\n");
char pismeno;
while(pismeno = toupper(getch()))
{
switch(pismeno)
{
case '\r':
printf("Bol staceny Enter \n");
break;
case '\b':
printf("Bol staceny Baskspace \n");
break;
case 'X':
printf("Bol staceny 'X' (Koniec programu) ( Stacte klaves pre pokracovanie) ");
getch();
return 0;
default :
printf("Bol staceny '%c' \n" , pismeno);
}
}
}
V c++ by sa nemal pouzivat prikaz goto ( je to zly zlozvyk )
{
printf("Zadaj pismenno ( X pre koniec programu ) :\n");
char pismeno;
while(pismeno = toupper(getch()))
{
switch(pismeno)
{
case '\r':
printf("Bol staceny Enter \n");
break;
case '\b':
printf("Bol staceny Baskspace \n");
break;
case 'X':
printf("Bol staceny 'X' (Koniec programu) ( Stacte klaves pre pokracovanie) ");
getch();
return 0;
default :
printf("Bol staceny '%c' \n" , pismeno);
}
}
}
V c++ by sa nemal pouzivat prikaz goto ( je to zly zlozvyk )
-
- Používateľ
- Príspevky: 1184
- Dátum registrácie: Po 27. Sep, 2010, 19:31
- Bydlisko: Žilina - Vlčince II
Re: Borland C++ (pomoc plz)
@ thebugerror :
V tvojom druhom príspevku porovnávaš polia:
Ale ak by si predsalen chcel porovnávať polia, tak použi fintu, ktoú som použil ja v jednom projekte do školy:
(hádam pochopíte myšlienkový pochod v tom "podprograme")
#include <cstdlib>
#include <iostream>
using namespace std;
int porovnavaj(char text1[], char text2[])
{
int pocet_znakov=0, zhodnych_znakov=0, i=0;
while(text1[pocet_znakov] != '\0')
pocet_znakov++;
for(int i=0 ; i<pocet_znakov ; i++)
if(text1==text2)
zhodnych_znakov++;
if(pocet_znakov==zhodnych_znakov)
return 1;
else return 0;
}
Projekt je odovzdaný a ukončený, tak ak budete pindať, že to mám nejako zle, alebo čo, tak to fungovalo tak, ako malo a už sa to nedá zmeniť..
V tvojom druhom príspevku porovnávaš polia:
A ako ti galen správne napísal, nepôjde ti to, lebo porovnávaš nie polia samotné, ale ich hodnoty v registroch, pričom ich adresy sú odlišné, čiže nikdy ti to neporovná s výsledkom, že sú rovnaké...thebugerror v 03 Jan 2011, 15:24 napísal:Ked skusim nasledujuci sposob tak my zas nefunguje if absolutne nechapem preco.
#include<prislusne kniznice>
main()
{
clrscr();
char text2[9];
char text[9];
scanf("%s",&text);
printf("\n%s text\n\n",text);
scanf("%s",&text2);
printf("\n%s text2\n\n",text2);
if(text==text2)
{
printf("\ndobre");
}
getch();
return 0;
}
Asi tusim ze BORLAND C++ nevie porovnat hodnoty v %s.
Ale ak by si predsalen chcel porovnávať polia, tak použi fintu, ktoú som použil ja v jednom projekte do školy:
(hádam pochopíte myšlienkový pochod v tom "podprograme")
#include <cstdlib>
#include <iostream>
using namespace std;
int porovnavaj(char text1[], char text2[])
{
int pocet_znakov=0, zhodnych_znakov=0, i=0;
while(text1[pocet_znakov] != '\0')
pocet_znakov++;
for(int i=0 ; i<pocet_znakov ; i++)
if(text1==text2)
zhodnych_znakov++;
if(pocet_znakov==zhodnych_znakov)
return 1;
else return 0;
}
Projekt je odovzdaný a ukončený, tak ak budete pindať, že to mám nejako zle, alebo čo, tak to fungovalo tak, ako malo a už sa to nedá zmeniť..
Re: Borland C++ (pomoc plz)
Stale spominas borland, je ti ale jasne, ze programujes v C++ (i ked skor len v C), fungovat ti budu vsetky kody napisane v C++. Inac ten borland musis pouzivat alebo chces? Podla mna existuju ovela lepsie nastroje ako borland.thebugerror napísal:Cky musim si vase prispevky minimalne 20 x vyskusat v borlande aby som pochopil jak to presne ide.. zatial dakujem.
Inac pre info. niesom az tak priliz dobry v BORLANDE jako viem s tym robit ale jako ten TURBO help je tak troska... same skratky a potom sa v tom da tazko vyznat a ten google to je nieco... proste google nevyhlada to co chcem aj ked tam stravim 2 hod.
V standarde na toto funkcia nie je. Bud pouzijed nejake kniznice na to urcene (asi by stacila aj conio.h), ale pojdes low level do systemovych volani...thebugerror napísal:A netusite ze jako by sa dalo spravit ze kliknem sipku do predu tak to urobi nejaku funkciu?
A este ze ked pohnem myskou napr dopredu ze sa my vykona funckia?
Ak dekadickou skratkou myslis ASCII kod, tak tam ENTER nenajdes. Najblizsie bude asi Carriage return s kodom 13.thebugerror napísal:Zatial len poznam nieco taketo tusim ze keby som chcel aby to napr po zmacknuti ENTER urobilo nieco tak to by chcelo poznat dekadicku skratku klavesi enter a nejaku funkciu ktora by to prelozila pre case...
-
- Nový používateľ
- Príspevky: 40
- Dátum registrácie: So 27. Nov, 2010, 02:13
Re: Borland C++ (pomoc plz)
Pockajte plz skusim nieco vykutit z toho co ste my pomohli . Hold ale budem tam musiet pouzit goto lebo inaksie to prechitat nepoznam, teda zatial nepoznam.
A inac existuje taka funkcia v C++ co by my spravila dva nacitavace prikazov?
Napr jeden Citac prikazou zaseknem do smicky :
bod:
printf("Smicka \n\n\n");
goto bod;
A druhy by pokracoval v citani inych prikazov...
bod1:
clrscr();
int plusovac=0;
plusovac=plusovac+1;
printf("Tu je vase cislo ktore sa neustale plusuje %d"\n\n);
goto bod1;
A inac existuje taka funkcia v C++ co by my spravila dva nacitavace prikazov?
Napr jeden Citac prikazou zaseknem do smicky :
bod:
printf("Smicka \n\n\n");
goto bod;
A druhy by pokracoval v citani inych prikazov...
bod1:
clrscr();
int plusovac=0;
plusovac=plusovac+1;
printf("Tu je vase cislo ktore sa neustale plusuje %d"\n\n);
goto bod1;
Re: Borland C++ (pomoc plz)
funkcia na to neexistuje ale .... program moze bezat v jednom alebo viacerych vlaknach, ktore sa vykonavaju "paralelne" no tym by som sa zatial na tvojom mieste nezaoberal (prv by som si presiel cykly a funkcie v C++ ) btw stale sa snazis vyriesit problem zo zaciatku tohto prispevku ? ( myslim to ze by sa ti nacitavanie z klavesnice zastavilo po 10 nacitanych znakoch )
tu je kod pre problem zo zaciatku tohto vlakna ( mozno to ide urobit aj jednoduchsie ale pozeram film a velmi sa mi nexce )
... nacitava to z klavesnice a zastavi sa az po stalaceni ENTER ... MAX 10 znakov
tu je kod pre problem zo zaciatku tohto vlakna ( mozno to ide urobit aj jednoduchsie ale pozeram film a velmi sa mi nexce )
... nacitava to z klavesnice a zastavi sa az po stalaceni ENTER ... MAX 10 znakov
Kód: Vybrať všetko
char retazec[11];
char znak = '\0';
int pozicia = 0;
printf("Zadaj retazec :\n");
while((znak = getch())!= '\r')
{
if(znak == '\b')
{
if(pozicia > 0)
{
pozicia --; // pozicia = pozicia - 1;
retazec[pozicia] = '\0';
printf("\r ");
printf("\r%s",retazec);
}
}
if(pozicia >= 10)
{
continue;
}
if(isalnum(znak))
{
printf("%c",znak);
retazec[pozicia] = znak;
pozicia++; // pozicia = pozicia + 1;
}
}
retazec[pozicia] = '\0';
printf("\nBol zadany retazec : %s", retazec);
printf("\nPress any key to continue...");
getch();
-
- Nový používateľ
- Príspevky: 40
- Dátum registrácie: So 27. Nov, 2010, 02:13
Re: Borland C++ (pomoc plz)
Jezisi dikes ale teraz to nemozem skusit lebo uz ide brat za kompla. Ale fakt si cenim vasu snahu vyriesit taketo jednoduche problemy .
Je vydet ze sa do toho vyznas docela dost. Ja to skusim a potom pripisem zase nieco ok? Ked bude co pripisat .
Je vydet ze sa do toho vyznas docela dost. Ja to skusim a potom pripisem zase nieco ok? Ked bude co pripisat .
-
- Nový používateľ
- Príspevky: 40
- Dátum registrácie: So 27. Nov, 2010, 02:13
Re: Borland C++ (pomoc plz)
Ahojte uz som zase naspet. Poradi my niekto prosim ako spravit program co stale "printfuje" a ked zmacknem pismeno "c" tak my precisti obrazovku a stale dalej "printufe"? Bez toho aby sa ciklus "printfu" zastavil.
Ako ja viem jak spravit ked zmacknem nejake pismeno tak to spravi to a to... ale ked sa my ma nieco opakovat ako printf tak to nefunguje lebo bud my to spravy len prvy printf a potom caka na zmacknutie klavesi alebo ked je zmacknutie klavesi prve tak to caka dokym zmacknem klavesu a potom vypritnfne a zase caka dokym zmacknem klavesu....
Lebo robim takyto projekticek. No a potreboval by som urobit to ze ked sa klikne klavesa, prikazy pre priseru stale bezia, a aj ked sa nezmackne klavesa tak prikazy pre priseru bezia... Lenze my to robilo to ako na tich starych hrach ze hrac spravi krok a potom prisera spravy....
Link pre projekticek : http://media0.webgarden.name/files/medi ... kticek.rar
Ano viem ze goto by sa nemalo skoro vobec pouzivat v programoch no ale... inaksie by som to nevedel prekoumat.
No je tam vela textcolor prikazov... lebo sa my stalo ze ked som mal printf tak sa my zmenila farba textu na posledny textcolor... jako nechapem jak(unbelievable), som si isty ze tam nebolo cprintf.
No ale robil som to v anglictine aby som si ju troska zdokonalil... ale fakt ja som to nestealol niekde z internetu, aj tak by to niekdo ako ja nesiril po internete .
Ako ja viem jak spravit ked zmacknem nejake pismeno tak to spravi to a to... ale ked sa my ma nieco opakovat ako printf tak to nefunguje lebo bud my to spravy len prvy printf a potom caka na zmacknutie klavesi alebo ked je zmacknutie klavesi prve tak to caka dokym zmacknem klavesu a potom vypritnfne a zase caka dokym zmacknem klavesu....
Lebo robim takyto projekticek. No a potreboval by som urobit to ze ked sa klikne klavesa, prikazy pre priseru stale bezia, a aj ked sa nezmackne klavesa tak prikazy pre priseru bezia... Lenze my to robilo to ako na tich starych hrach ze hrac spravi krok a potom prisera spravy....
Link pre projekticek : http://media0.webgarden.name/files/medi ... kticek.rar
Ano viem ze goto by sa nemalo skoro vobec pouzivat v programoch no ale... inaksie by som to nevedel prekoumat.
No je tam vela textcolor prikazov... lebo sa my stalo ze ked som mal printf tak sa my zmenila farba textu na posledny textcolor... jako nechapem jak(unbelievable), som si isty ze tam nebolo cprintf.
No ale robil som to v anglictine aby som si ju troska zdokonalil... ale fakt ja som to nestealol niekde z internetu, aj tak by to niekdo ako ja nesiril po internete .
Re: Borland C++ (pomoc plz)
wow, keby si v tom kode mal aspon jeden komentar, tak nepoviem....
ale pravdu povediac, len z toho kodu nedokazem pochopit co tam vlastne stvaras.
tolko goto-v som este nevidel nikdy
ale tak teraz k veci... ten textcolor(white); mas odkial? silne pochybujem ze bez enum-u vie komp zistit
co je white. Ako menit farbu si kukni tu.
gotoxy je trochu ina vec ako goto. gotoxy si musis napisat ako funkciu s parametrami ktore prevezmes
ako suradnice. tak ako to tam mas napisane, ti to nepojde.
inac celkovo, riesis to tam cele len v funcii main() ale ak by si si to rozlozil do viacerych, pracovalo by sa ti s tym ovela lepsie.
funkcie si urcite poriadne nastuduj.... na tom je postavene cele C.
ale pravdu povediac, len z toho kodu nedokazem pochopit co tam vlastne stvaras.
tolko goto-v som este nevidel nikdy
ale tak teraz k veci... ten textcolor(white); mas odkial? silne pochybujem ze bez enum-u vie komp zistit
co je white. Ako menit farbu si kukni tu.
gotoxy je trochu ina vec ako goto. gotoxy si musis napisat ako funkciu s parametrami ktore prevezmes
ako suradnice. tak ako to tam mas napisane, ti to nepojde.
Spoiler: ukázať
funkcie si urcite poriadne nastuduj.... na tom je postavene cele C.
PC -> Topping DX7 Pro+ -> Meze 109 PRO / Microlab B77
-
- Nový používateľ
- Príspevky: 40
- Dátum registrácie: So 27. Nov, 2010, 02:13
Re: Borland C++ (pomoc plz)
Mozes my prosim ta ukazat nejaky priklad lebo nedokazem si to nejak predstavit jak rozdelit do viacerych funkcii... Jako ja sa len zaucam do toho tak ja nvm jak to myslis. Preto tam mam tolko textcolor(WHITE); lebo ked som tam dal printf tak sa to nejak buglo a zmenilo my to zo standart sedobielej na predosle textcolor(CYAN); jako nvm preco.
Inac chcem povedat ze som tam dal jeden komentar // ze jak som ratal jedno gotoxy(x,y);
Ale dakujem.
Inac chcem povedat ze som tam dal jeden komentar // ze jak som ratal jedno gotoxy(x,y);
Ale dakujem.