| | |
Autor | Správa |
---|
Registrovaný: 08.03.09 Prihlásený: 06.10.20 Príspevky: 1116 Témy: 88 Bydlisko: 00100100 | Napísal autor témy reDo: 04.06.2009 18:29 | |
|
tou alokacio som myslel ze ako funguyju funkcie a ako to pouzit
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
Registrovaný: 08.03.09 Prihlásený: 06.10.20 Príspevky: 1116 Témy: 88 Bydlisko: 00100100 | Napísal autor témy reDo: 12.06.2009 21:06 | |
|
vysvetli mi nekdo ako ta funkcia gotoxy presne funguje a ako sa to nastavuje ?
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
Registrovaný: 27.06.08 Prihlásený: 04.07.11 Príspevky: 114 Témy: 12 | Napísal Watik: 13.06.2009 9:15 | |
|
funkcia goto je skok na navestie v C toto pouzivat je najvacsia prasacina aku mozes pouzit toto by som pouzil v krajnom pripade nijak inak a ked chces nieco take vidiet tak napriklad
Kód: #include<stdio.h>
int main() {
int c;
start: c++;
if (c < 5)
goto start;
else
return 0;
}
|
|
Registrovaný: 11.01.09 Prihlásený: 19.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 13.06.2009 10:34 | |
|
reDo sa pýtal na GotoXY - nastaví pozícou kurzora na súradnicu X a Y (horizontálnu a vertikálnu).
Kód: gotoxy(5,10); printf("Text vypísaný do desiateho riadka od piateho znaku.");
Ale tuším, že GotoXY nie je štandardná funkcia.
|
|
Registrovaný: 27.06.08 Prihlásený: 04.07.11 Príspevky: 114 Témy: 12 | Napísal Watik: 13.06.2009 14:06 | |
|
aha tak som zle pochopil co sa pytal ale aspon som mu vysvetlil skok
|
|
Registrovaný: 08.03.09 Prihlásený: 06.10.20 Príspevky: 1116 Témy: 88 Bydlisko: 00100100 | Napísal autor témy reDo: 13.06.2009 19:03 | |
|
dakujem fico alebo kenny ci nie?
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
Registrovaný: 19.09.06 Prihlásený: 17.01.24 Príspevky: 749 Témy: 31 Bydlisko: Ružomberok&... |
heh, ked tu uz bol priklad s zahadnou pracou s polom, kto vie preco
Kód: int i=0; printf("%d %d %d\n",i++,i++,i++);
vypise to co vypise? A este predtym, kto vie z hlavy, co to vlastne vypise?
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 14.06.2009 14:25 | |
|
Tipujem 0 1 2... je tak? Pretoze najprv by sa malo vypisat i a az potom sa inkrementovat.
|
|
Registrovaný: 19.09.06 Prihlásený: 17.01.24 Príspevky: 749 Témy: 31 Bydlisko: Ružomberok&... | |
Registrovaný: 08.03.09 Prihlásený: 06.10.20 Príspevky: 1116 Témy: 88 Bydlisko: 00100100 | Napísal autor témy reDo: 14.06.2009 14:40 | |
|
tak potom tovzpise 1 2 3 ?
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
Registrovaný: 19.09.06 Prihlásený: 17.01.24 Príspevky: 749 Témy: 31 Bydlisko: Ružomberok&... | |
Registrovaný: 30.05.07 Prihlásený: 29.03.14 Príspevky: 641 Témy: 46 |
vypise to 0 0 0 lebo operator ++ za premennou sa vyhodnocuje az po prikaze
keby tam bolo ++i vsade tak to vypise asi 1 2 3
je to tak?
|
|
Registrovaný: 19.09.06 Prihlásený: 17.01.24 Príspevky: 749 Témy: 31 Bydlisko: Ružomberok&... | |
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 14.06.2009 14:49 | |
|
Uz som si to vyskusal. Mozem prezradit? ale mohol by si vysvetlit, preco to tak je, nechapem.
Naposledy upravil Ďuri dňa 14.06.2009 14:50, celkovo upravené 1
|
|
Registrovaný: 30.05.07 Prihlásený: 29.03.14 Príspevky: 641 Témy: 46 |
hmm ty vole to som necakal, zaujimave, tak ja uz viem, nech este ostatni hadaju
edit: inak hento sme sa ucili ze to v specifikacii cecka nie je pevne stanovene a na roznych kompileroch sa to moze spravat inak... ja viem co to robi na gcc
|
|
Registrovaný: 19.09.06 Prihlásený: 17.01.24 Príspevky: 749 Témy: 31 Bydlisko: Ružomberok&... |
Kedze v stdcall konvencii sa parametre funkcii ukladaju na zasobnik odzadu, na zasobnik sa ulozi treti parameter i,rovny nule, potom sa inkrementuje, ulozi sa na zasobnik ako druhy parameter, rovny 1, a potom sa inkrementuje a ulozi na zasobnik ako prve i, rovne 2.
http://www.gymrk.iglu.cz/cpp.png
od adresy 804847D na obrazku
i=0
uloz na zasobnik polsedny parameter (0)
i++ (i=1)
uloz na zasobnik druhy parameter (1)
i++ (i=2)
uloz na zasovnik prvy parameter (2)
i++ (i=3)
dufam, ze to z tohto niekto pochopi
A je to relativne, pouzity prekladac g++, v visual c++ mi to myslim hadzalo nieco trochu ine, ale podstata zostala
//edit : je tam oproti obrazku ista nezrovnalost, kedze ja som pisal o tom, ze sa to uklada na zasobnik, ono sa to ulozi do registra a az potom tesne pred volanim funkcie sa to ulozi na zasobnik. Len pre upresnenie.
|
|
Registrovaný: 08.03.09 Prihlásený: 06.10.20 Príspevky: 1116 Témy: 88 Bydlisko: 00100100 | Napísal autor témy reDo: 14.06.2009 17:45 | |
|
preco mi toto nefunguje? pomozte
Kód: #include <stdio.h>
int main() { i nt i=0, pocet=0; char slovo[101]; char znak;
printf("Zadajte slovo\n"); scanf("%s",slovo);
printf("Zadajte znak\n"); scanf("%c",&znak);
while(slovo[i]!='/0') { if(slovo[i]==znak) pocet++; i++; }
printf("Znak: %c Sa v slove opakuje %d krat\n",znak, pocet);
getch(); }
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 14.06.2009 18:03 | |
|
Nemalo by miesto '/0' byt '\0' ? Resp. co znamena "nefunguje"?
edit: ehm?
|
|
Registrovaný: 08.03.09 Prihlásený: 06.10.20 Príspevky: 1116 Témy: 88 Bydlisko: 00100100 | Napísal autor témy reDo: 14.06.2009 18:15 | |
|
ano ja viem hento je trochu starsie dakujem to bol nejaky preklep ten /0
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
Registrovaný: 08.03.09 Prihlásený: 06.10.20 Príspevky: 1116 Témy: 88 Bydlisko: 00100100 | Napísal autor témy reDo: 20.06.2009 18:38 | |
|
ked vsetci vravia ake je C vsestranne ake je dobre a podobne preco sa tak malo pouziva?
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 20.06.2009 19:05 | |
|
Nemám pocit, že by sa "málo" používalo. Prečo si to myslíš?
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 08.03.09 Prihlásený: 06.10.20 Príspevky: 1116 Témy: 88 Bydlisko: 00100100 | Napísal autor témy reDo: 20.06.2009 19:34 | |
|
lrbo vecsiou su moderne programy v C++,C#,Java a ine ci nie?
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
Registrovaný: 30.05.07 Prihlásený: 29.03.14 Príspevky: 641 Témy: 46 |
C sa pouziva tam kde sa hodi, ked je lepsie pouzit C++ alebo javu tak preco to neurobit - ide o to ze C je nizsi jazyk a v zasade v nom urobis to iste co vo vyssich ale s omnoho vacsim usilim - rovnako sa mozes opytat preco sa nepouziva assembler ale C - lebo pisat vsetko v assemblery by vacsinu ludi priviedlo do blazinca
dalsi pohlad je aj ten ze C nema podporu objektoveho programovania ktore sa v sucasnosti zacina povazovat za taziskovy pristup pri vyvoji systemov - dovoluje realistickejsi navrh systemu lebo objekty v programovani sa viac podobaju objektom v realnom svete nez iba nejake premenne, polia a rozne struktury ktore podporuje C
takze preto sa C pouziva menej - vytlaca sa proceduralny pristup a nie je potrebny taky nizky jazyk, samozrejme stale je dost oblasti kde sa C pouziva a nema nahradu, hlavne operacne systemy, firmware, ovladace...
|
|
Registrovaný: 08.03.09 Prihlásený: 06.10.20 Príspevky: 1116 Témy: 88 Bydlisko: 00100100 | Napísal autor témy reDo: 21.06.2009 6:31 | |
|
aha dakujem to som nevedel
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
Registrovaný: 08.03.09 Prihlásený: 06.10.20 Príspevky: 1116 Témy: 88 Bydlisko: 00100100 | Napísal autor témy reDo: 19.07.2009 13:47 | |
|
cawte kde je tu chyba nebezi to tak jak ma Kód: #include <stdio.h> #include <string.h> #include <stdlib.h>
#define P printf #define S scanf #define CLEAR system("cls");
typedef struct kniha { char nazov[101]; char autor[101]; char cena[21]; char rokv[5]; char pstr[6];
} KNIHA;
KNIHA pole[50];
int pocet=0;
void Cisti(void) { CLEAR while(getchar()!='\n') ; int i=0; for(i=0; i<50;i++) { strcpy(pole[i].nazov, '\0'); strcpy(pole[i].autor, '\0'); strcpy(pole[i].cena, '\0'); strcpy(pole[i].rokv, '\0'); strcpy(pole[i].pstr, '\0'); }
}
void Pridaj(void) { CLEAR while(getchar()!='\n') ;
P("Zadajte nazov knihy:\n"); gets(pole[pocet].nazov); P("Zadajte meno autora:\n"); gets(pole[pocet].autor); P("Zadajte cenu knihy:\n"); gets(pole[pocet].cena); P("Zadajte rok vydania:\n"); gets(pole[pocet].rokv); P("Zadajte pocet stran:\n"); gets(pole[pocet].pstr);
pocet++; }
void Zmen(void) { CLEAR while(getchar()!='\n') ; int cislo=0; P("Zadajte cislo knihy:\n"); scanf("%d",&cislo); P("Zadajte nazov knihy:\n"); gets(pole[cislo].nazov); P("Zadajte meno autora:\n"); gets(pole[cislo].autor); P("Zadajte cenu knihy:\n"); gets(pole[cislo].cena); P("Zadajte rok vydania:\n"); gets(pole[cislo].rokv); P("Zadajte pocet stran:\n"); gets(pole[cislo].pstr);
}
void Zmaz(void) { CLEAR while(getchar()!='\n') ; for(int i=0; i<50;i++) { strcpy(pole[i].nazov, '\0'); strcpy(pole[i].autor, '\0'); strcpy(pole[i].cena, '\0'); strcpy(pole[i].rokv, '\0'); strcpy(pole[i].pstr, '\0'); }
}
void Nacitaj(void) { CLEAR while(getchar()!='\n') ;
}
void Zapis(void) { CLEAR while(getchar()!='\n') ; }
void Vypis(void) { CLEAR while(getchar()!='\n') ; for(int i=0;i<50;i++){ P("==========%d==========\n",i); P("Nazov:%s\nAutor:%s\nCena:%s\nRok vydania:%s\nPocet stran:%s\n",pole[i].nazov, pole[i].autor, pole[i].cena, pole[i].rokv, pole[i].pstr); P("==========%d==========\n",i); }
}
int main(void) { Cisti(); char volba='0';
while(volba!='q'&&volba!='Q') { while(getchar()!='\n') ; P("\n\n\n **********KNIZNICA**********\n"); P(" .::Created By reDo::.\n"); P(" Vyberte si z ponuky:\n"); P(" --------------------\n"); P(" 1 < Pridaj knihu \n"); P(" 2 < Zmen knihu\n"); P(" 3 < Odstran knihu\n"); P(" 4 < Vypis vsetky knihy\n"); P(" 5 < Nacitaj zo suboru\n"); P(" 6 < Zapis do suboru\n"); P(" ****************************\n"); S("%c",&volba); switch(volba) { case '1': Pridaj(); break; case '2': Zmen(); break; case '3': Zmaz(); break; case '4': Vypis(); break; case '5': Nacitaj(); break; case '6': Zapis(); break;
default: P("Chybna volba!!!\n"); } } return 0; }
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
Registrovaný: 14.02.08 Prihlásený: 04.01.15 Príspevky: 1272 Témy: 46 Bydlisko: Bratislava | Napísal petos: 19.07.2009 15:06 | |
|
Citácia: int main(void) { Cisti(); char volba='0'; ...
ked odstranis funkciu cistic() na zaciatku tak to funguje
EDIT: funkcia strcpy caka ako druhy argument retazec a nie znak, cize daj to takto :
Kód: strcpy(pole[i].nazov, "\0"); strcpy(pole[i].autor, "\0"); strcpy(pole[i].cena, "\0"); strcpy(pole[i].rokv, "\0"); strcpy(pole[i].pstr, "\0");
a uz to funguje
_________________ CPU:AMD Phenom II X4 960T MB: GA-MA78GM S2H VGA: ASUS EAH4850 512MB DDR3 & AC L2 PRO RAM: 4x 1GB Kingstone 800Mhz PSU: CX400W HDD: SEAGATE Barracuda 7200.10 160GB + Seagate 320GB Monitor :19"LCD ASUS VB191T OS: Win 7 Ultimate 64 bit |
|
Registrovaný: 14.02.08 Prihlásený: 04.01.15 Príspevky: 1272 Témy: 46 Bydlisko: Bratislava | Napísal petos: 19.07.2009 15:25 | |
|
takze ja mam teiz jeden mensi problem, tu je kod:
Kód: # include<stdio.h> # include<ctype.h>
int c; typedef int (*p_fce) (); int x=0;
int cislica(char c); int male_pismeno(int c); int velke_pismeno(int c); int biely(int c); int zisti(int (*p_fc)(),FILE *f);
p_fce pole[]={cislica,male_pismeno,velke_pismeno,biely,zisti};
int main(void) { int y=0,m; int (*p_fd) (); FILE *f; char ret01[]="cislic"; char ret02[]="malych pismen"; char ret03[]="velkych pismen"; char ret04[]="bielych pismen"; char s[50]; printf("Zadaj cestu k suboru : "); scanf("%s",s); if ((f=fopen(s,"r")) == NULL) { printf("Nepodarilo sa otvorit subor\n"); system("pause"); } else printf("Subor uspesne otvoreny\n"); printf("MENU :\n"); putchar('\n'); printf("Zistit pocet cislic v subore (STLAC 1)\n"); printf("Zistit pocet malych pismen v subore (STLAC 2)\n"); printf("Zistit pocet velkych pismen v subore (STLAC 3)\n"); printf("Zistit pocet bielych pismen v subore (STLAC 4)\n"); putchar('\n'); printf("Zadaj cislo co chces urobit : "); scanf("%d",&m); putchar('\n'); p_fd=pole[m-1]; y=zisti(p_fd,f); switch (m) { case (1) : printf("Pocet %s v subore je : %d\n",ret01,y); break; case (2) : printf("Pocet %s v subore je : %d\n",ret02,y); break; case (3) : printf("Pocet %s v subore je : %d\n",ret03,y); break; case (4) : printf("Pocet %s v subore je : %d\n",ret04,y); break; default : break; } fclose(f); system("pause"); return 0; }
int cislica(char c) { if ((c<='9') && (c>='0')) return 1; else return 0; }
int male_pismeno(int c) { if ((c<='z') && (c>='a')) return 1; else return 0; }
int velke_pismeno(int c) { if (isupper(c)) return 1; else return 0; }
int biely(int c) { if (isspace(c)) return 1; else return 0; }
int zisti(int (*p_fc) (),FILE *f) { while ((c=getc(f)) != EOF) x+=(*p_fc)(c); return (x); } ked dam prelozit, tak program funguje, ale pise mi to ze: Kód: initialization from incompatible pointer type a ukazuje na tento riadok: Kód: p_fce pole[]={cislica,male_pismeno,velke_pismeno,biely,zisti}; a ked nastavim v uplnom funkcnom prototype z tohto : Kód: int cislica(int c); na toto: Kód: int cislica(char c);
a este aj v hlavicke funkcie zmenim tiez toto iste, tak pise tento error, ale program funguje dobre aj napriek tomu. v zadani mam aby kazda funkcia mala v hlavicke char c a nie int c, ale ked to prepisem tak pise tento error, viete preco? a ked tam necham int c ta to ide vpohode.
viem ze v poli pointerov na funkcie musia byt vsetky funkcie vracat ten isty typ, v mojom pripade int, ale ked zmenim argumenty na iny typ ako int tak pise errror
EDIT: este jedna mohli by ste napisat ako sa nastavuju farby v C-cku? myslim farbu pozadia programu, farby textov atd.
_________________ CPU:AMD Phenom II X4 960T MB: GA-MA78GM S2H VGA: ASUS EAH4850 512MB DDR3 & AC L2 PRO RAM: 4x 1GB Kingstone 800Mhz PSU: CX400W HDD: SEAGATE Barracuda 7200.10 160GB + Seagate 320GB Monitor :19"LCD ASUS VB191T OS: Win 7 Ultimate 64 bit |
|
Registrovaný: 30.04.08 Prihlásený: 15.05.15 Príspevky: 884 Témy: 3 |
Problem je v tom, ze nemozes priradit pointru typu int (*) () funkciu s
parametrom typu int, teda
Kód: int f(int); int (*p) (); p = f;
nebude fungovat.
Na zmenu pisma a pozadia mozes pouzit prikaz color xy, kde x je hodnota farby pisma, y pozadia. http://ss64.com/nt/color.html
napr. system("color 0a");
_________________ Empty your memory, with a free()… like a pointer! If you cast a pointer to an integer, it becomes the integer, if you cast a pointer to a struct, it becomes the struct… The pointer can crash…, and can overflow… Be a pointer my friend… |
|
Registrovaný: 14.02.08 Prihlásený: 04.01.15 Príspevky: 1272 Témy: 46 Bydlisko: Bratislava | Napísal petos: 23.07.2009 13:04 | |
|
diky,
a ako by sa to teda dalo spravit? napr. takto ze namiesto tohto
Kód: y=zisti(p_fd,f); by sa dalo toto: Kód: y=zisti(pole[m-1],f);
lebo v zadani mam zadane tak aby som vo funkciach daval char c.
cize adresa tej funkcie, a vo funkcii zistit, by pracovala s adresou ako pointer na funkciu vracajuca int. skusal som toto aj funguje to len pise zas warning: initialization from incompatible pointer type a ukazuje na riadok s pole pointerov na funkcie, no ale to nic aspon ze funguje
_________________ CPU:AMD Phenom II X4 960T MB: GA-MA78GM S2H VGA: ASUS EAH4850 512MB DDR3 & AC L2 PRO RAM: 4x 1GB Kingstone 800Mhz PSU: CX400W HDD: SEAGATE Barracuda 7200.10 160GB + Seagate 320GB Monitor :19"LCD ASUS VB191T OS: Win 7 Ultimate 64 bit |
|
Registrovaný: 08.03.09 Prihlásený: 06.10.20 Príspevky: 1116 Témy: 88 Bydlisko: 00100100 | Napísal autor témy reDo: 26.07.2009 20:38 | |
|
mam tu jeden problem ako sparvit oddeleny preklad nejde mi to nem preco tu je moj napad ako to rozkuskovat http://rapidshare.com/files/260325464/KNIZNICA.rar.html poradte ako na to
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|