Pomoc za pocetnike u C-u

poruka: 36
|
čitano: 7.247
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
odjavljen
offline
Pomoc za pocetnike u C-u

Forumas Buffer Overflow mi je dao ideju, da bi bilo dobro otvorit posebnu temu za pomoc pocetnicima, pa mislim da je i posteno da to ovdje i navedem. :)

Tema je osmisljena tako, da svako tko nerazumije nesto u C-u il ima neki problema s tim jezikom il nesto slicno, posta u ovu temu.

 

Pozeljno je da svako tko ima neku ideju o rjesenju nekog problema to i rekne, ukoliko je to nesto konstruktivno. Nemojte postat gluposti, da nebi bilo odgovora kao: "ah kako je to glupo pitanje" i sl, nema glupi pitanja, samo glupi odgovora.

Eto, pocetnici, slobodno postajte svoja pitanja, ponudit cemo rjesenja i objasnjenja :)

When life gives you lemons throw them at the mean people and hope it gets them in the eyes.
 
0 0 hvala 0
16 godina
neaktivan
offline
Pomoc za pocetnike u C-u

nemoj me pogresno shvatit, al glupavo ti je ovo Izlanuo se..zato postoji poseban podforum gde svi pitaju sta im nije jasno, bla bla..svejedno pocetnici najvise postaju sta im nije jasno i tako to..i sada da sve to zguras u jednu temu..izgubilo bi debelo na preglednosti, ko bi se snasao u svemu tome...

Moj PC  
1 0 hvala 0
15 godina
neaktivan
offline
Pomoc za pocetnike u C-u

evo, jedan je redak podcrtan, tu mi neradi kaako želim, to je jer nema dovoljno prostora...

 

#include <stdio.h>
char tabla[3][3];
char *tablica1, *tablica2, *tablica3, *tablica4, *tablica5, *tablica6, *tablica7, *tablica8, *tablica9;
char ime1[20], ime2[20];
int x, y;
void cunter(void)
{
 printf ("%s|%s|%s\n------\n%s|%s|%s\n------\n%s|%s|%s\n", *tablica1, *tablica2, *tablica3, *tablica4, *tablica5, *tablica6, *tablica7, *tablica8, *tablica9 );
}
void xpunjenje (void)
{
 printf ("%s je na redu!", ime1);
 printf ("U koje polje želiš upisati X?\n");
 scanf ("%d %d", &x, &y);
 tabla [x][y] = 'X';
 cunter();
}
void ypunjenje (void)
{
 printf ("%s je ne redu!\nU koje polje želiš upisati O?\n", ime2);
 scanf ("%d %d", &x, &y);
 tabla [x][y] = 'O';
 cunter();
}
void punjenje(void)
{
 ypunjenje ();
 xpunjenje ();
}
 
int main ()
{
 int a;
 *tablica1 = tabla [1][1];
 *tablica2 = tabla [1][2];
 *tablica3 = tabla [1][3];
 *tablica4 = tabla [2][1];
 *tablica5 = tabla [2][2];
 *tablica6 = tabla [2][3];
 *tablica7 = tabla [3][1];
 *tablica8 = tabla [3][2];
 *tablica9 = tabla [3][3]; 
 a = 0;
 /*while (tabla[a] == false)
 {
  tabla [a] = 0;
  a++;
   }*/
 printf ("Molim unesite svoje ime i ime drugog igrača\n");
 scanf ("%s %s", ime1, ime2);
 /*
 if ( tabla [1][1] && tabla [2][1] && tabla [3][1] || tabla [1][2] && tabla [2][2] && tabla [2][3] || tabla [3][1] && tabla [3][2] && tabla [3][3] )
 */
 punjenje();
 system ("PAUSE");
 return 0;
}

 

imam još problem ali za sada mi je ovaj najvažniji...

thunder in my room :prijevod: Moja mama viče!92% tinejđera sluša turbo folk. Ako si ti među onih 8% koji još uvijek slušaju pravu glazbu kopiraj si ovo u potpis.Da se Facebook server sruši 90% m
 
0 0 hvala 0
16 godina
neaktivan
offline
Pomoc za pocetnike u C-u

printfu proslijeđuješ adresu onoga što želiš ispisati

 

nisam detaljnije gledao kod, ali ako želiš ispisati string (char*), umjesto tablicax napiši &tablicax

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
 
0 0 hvala 0
15 godina
neaktivan
offline
RE: Pomoc za pocetnike u C-u
itf4n kaže...

printfu proslijeđuješ adresu onoga što želiš ispisati

 

To je nešto novo? Po kojem je to standardu?

16 godina
neaktivan
offline
Pomoc za pocetnike u C-u

Umm, zar nije uvijek tako bilo?

 

edit: ah, fail s moje strane. Pomiješao sam printf i scanf. Ugl, samo makni *, jer to uzima prvo slovo.

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
Poruka je uređivana zadnji put uto 29.9.2009 15:22 (itf4n).
 
0 0 hvala 0
15 godina
protjeran
offline
RE: Pomoc za pocetnike u C-u
itf4n kaže...

Umm, zar nije uvijek tako bilo?

Zamjenio si printf i scanf

16 godina
neaktivan
offline
RE: Pomoc za pocetnike u C-u
Tracer kaže...
itf4n kaže...

Umm, zar nije uvijek tako bilo?

Zamjenio si printf i scanf

Da, lol, baš sam editirao sad...

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
14 godina
neaktivan
offline
Pomoc za pocetnike u C-u

Zna tko kako mogu u c-u mijenjeti boju, veličinu i ostale stvari sa textom...

 
0 0 hvala 0
14 godina
offline
Pomoc za pocetnike u C-u

imam isto jedno pitanje u vezi c-ea...kako se radi auto run...ako mi netko može poslati kod u kojem je koišten

raise your hands to the sky
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Pomoc za pocetnike u C-u

Kako u c-u riješiti overflow?

 
0 0 hvala 0
15 godina
protjeran
offline
RE: Pomoc za pocetnike u C-u
random89 kaže...

Kako u c-u riješiti overflow?

dinamičkom alokacijom memorije.

14 godina
neaktivan
offline
Pomoc za pocetnike u C-u

Postovanje svima!

Imam pitanje vezano za jedan pointer u primjerima u visual C-u:

Primjer A1: Ovdje je sve jasno, skolski.

#include <stdio.h>//POINTER sa char SA deklaracijom i inicijalizacijom!
int main(){//ovaj primjer je jasam
    int i=0;
    char *p_ime;
    char ime[20];
    p_ime=ime;
    printf("Unesi svoje ime: ");
    scanf("%s", ime);
    printf("Dobar dan: ");
    printf("%s\n", p_ime);   
}

 

E sad dolazi pointer koje ne razumijem!

Primjer A2:

#include <stdio.h>//POINTER sa char BER DEKLARACIJE I INICIJALIZACIJE!!???
int main(){
    char ime[20];
    int i=0;
    printf("Unesi svoje ime: ");
    scanf("%s", ime);
    printf("Dobar dan: ");
    do{
        printf("%c", *(ime+i));//ZASTO OVO RADI??
        i++;
    }while(*(ime+i)!='\0');
    putchar('\n');
}

Dakle ne zazumijem kako pointer *(ime+i) radi a ne postoji?? Nigdje ga nisam kreiro!

 

Evo sa brojevima!

Primjer B1: Sve jasno!

#include <stdio.h>//POINTER sa int SA deklaracijom i inicijalizacijom!
int main(){//ovaj primjer je jasam
    int broj[3];
    int i=0;
    int *p_broj;
    p_broj=&broj;
    while(i<3){
        printf("Unesi 3 brojeva: ");
        scanf("%d", &broj[i]);
        i++;
    }
    i=0;
    do{
        p_broj=&broj[i++];
        printf("Tri bojeva su %d\n", *p_broj);
        }while(i<3);
}

 

Primjer B2: Evo ista stvar! A fino mi rekose nakon deklaracije ne koristi pointer ako nije inicijaliziran inace dodje baba roga i ubije mi kompjuter!

Ali ja ga uopce nisam ni deklariro u prvom planu! Pa opet radi!

#include <stdio.h>//POINTER sa int BEZ DEKLARACIJE I INICIJALIZACIJE!!???
int main(){
    int broj[3];
    int i=0;
    while(i<3){
        printf("Unesi 3 brojeva: ");
        scanf("%d", &broj[i]);
        i++;
    }
    i=0;
    do{
        printf("Tri bojeva su %d\n", *(broj+i));//ZASTO OVO RADI??
        i++;
    }while(i<3);
}

Eto opet ista stvar zasto *(broj+i) radi?

 
0 0 hvala 0
16 godina
neaktivan
offline
Pomoc za pocetnike u C-u

To radi zbog prirode polja u C++u.

 

Naime, svako polje u C++u je ustvari pokazivač na dio memorije veličine (broj_elemenata*veličina_elementa_određena_tipom).

 

Ono s čime si se ti koristio je aritmetika pokazivača. Ako pokazivaču pribrojiš cjelobrojni broj X, on će biti uvećan za X veličina određenih tipom. Npr. pokazivač P na int polje, zbrojen sa brojem "2" pokazivat će najčešće na lokaciju 8 bajta udaljenu od onoga na što je prije pokazivao. A ta lokacija je upravo lokacija 2. elementa polja.

 

*(polje + X) = polje[X]

 

oba izraza vraćaju referencu na sadržaj X.tog elementa polja, te su potpuno ekvivalentna.

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
 
0 0 hvala 0
14 godina
neaktivan
offline
Pomoc za pocetnike u C-u

Pozdrav!

Relativno sam nov u C-u, baš u C-u. Učimo ga u školi već nekoliko mjeseci.

Nitko nam nije objasnio što se sve može sa C-om, ne C++-om niti C#. Ako može neka pomoć oko toga, zašto nevalja C, jer sam čuo da je blesavo što učimo C.

I da, je li postoji neki Visual C, di se može pisat i C, a ne samo neki Visual Studio itd. gdje se piše C++ isl.

 

 

Nista nije sveto sve je bruto i neto, sve je zabava!
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: Pomoc za pocetnike u C-u
Shody_1994 kaže...

Pozdrav!

Relativno sam nov u C-u, baš u C-u. Učimo ga u školi već nekoliko mjeseci.

Nitko nam nije objasnio što se sve može sa C-om, ne C++-om niti C#. Ako može neka pomoć oko toga, zašto nevalja C, jer sam čuo da je blesavo što učimo C.

I da, je li postoji neki Visual C, di se može pisat i C, a ne samo neki Visual Studio itd. gdje se piše C++ isl.

 

 

Osobno ne mislim da je blesavo uciti C.

 

Postoji Visual C++ Express u kojem se moze kompajlirati osim C++ koda i C kod. :)

Rjesava jednostavne probleme u podforumu Programiranje od 2008. xD http://irale.deviantart.com
14 godina
neaktivan
offline
Pomoc za pocetnike u C-u

AAA hvala puno!

 

Ma, izgubljen sam u posljednje vrijeme, ima toliko tih jezika da je to bože sačuvaj postalo.

Od QBasica do PHP-a, pa se ti misli...

A jel se može baš u čistom C-u radit programi ono kao što je neznam bilo koji program sa sučeljem, tipa kalkulator, notepad isl. Nadam se da kužiš??

Program koji ima svoje sučelje, tijek, instalaciju...

Nista nije sveto sve je bruto i neto, sve je zabava!
Poruka je uređivana zadnji put uto 24.11.2009 22:55 (Shody_1994).
Moj PC  
0 0 hvala 0
16 godina
moderator
offline
RE: Pomoc za pocetnike u C-u
Shody_1994 kaže...
A jel se može baš u čistom C-u radit programi ono kao što je neznam bilo koji program sa sučeljem, tipa kalkulator, notepad isl. Nadam se da kužiš??

Program koji ima svoje sučelje, tijek, instalaciju...

Ne razlikuješ programski jezik od alata/razvojne okoline. Pomoću C-a se može većina (sve?) ono što se može i pomoću C++-a, samo u pravilu na značajno teži i/ili lošiji način. Objektno orijentirano programiranje je zakon i kad čovjek shvati bit OOP-a, ne vraća se više na proceduralno programiranje.

 

A sad, hoćeš li ti moći imati sučelje - to ovisi o GUI frameworku kojeg koristiš (ili ne koristiš). Nisam previše upoznat s C/C++ frameworkovima tako da će ti to objasniti netko drugi.

15 godina
protjeran
offline
RE: Pomoc za pocetnike u C-u
Shody_1994 kaže...

AAA hvala puno!

 

Ma, izgubljen sam u posljednje vrijeme, ima toliko tih jezika da je to bože sačuvaj postalo.

Od QBasica do PHP-a, pa se ti misli...

A jel se može baš u čistom C-u radit programi ono kao što je neznam bilo koji program sa sučeljem, tipa kalkulator, notepad isl. Nadam se da kužiš??

Program koji ima svoje sučelje, tijek, instalaciju...

Naravno da može. Evo baš primjera instalacijskog programa pisanog u C++u. Ima i source code:

 

http://www.box.net/shared/st7ylphz87

14 godina
neaktivan
offline
Pomoc za pocetnike u C-u

Hvala puno svima!

Sad samo treba učit :)

Nista nije sveto sve je bruto i neto, sve je zabava!
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Pomoc za pocetnike u C-u

Jos imam 2 pitanja:

 

U Visual C++ 2008, sam napisao program u  C-u, ali kad kompajliram neće, a program je 100% točan jer je najobičniji. Je li Visual C++ može kompajlirat C ili ne?

 

I

 

Je li moguće promjenit izgled onog prozora nakon kompajla, živcira me crna podloga u Dev-C++.

Kako ću napravit da program npr.  kalkulator.exe ima svoj oblik, tj. da nije crna podloga nego da ima gumbe i ost. Znam da treba puno učit za to napravit ali ako me možete uputit kako, novi projekt--Win aplication ili kako to već ide?

 

Hvala, i oprostite na ovako glupim pitanjima, tek sam počeo ... :D

Nista nije sveto sve je bruto i neto, sve je zabava!
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: Pomoc za pocetnike u C-u
Shody_1994 kaže...

Jos imam 2 pitanja:

 

U Visual C++ 2008, sam napisao program u  C-u, ali kad kompajliram neće, a program je 100% točan jer je najobičniji. Je li Visual C++ može kompajlirat C ili ne?

 

I

 

Je li moguće promjenit izgled onog prozora nakon kompajla, živcira me crna podloga u Dev-C++.

Kako ću napravit da program npr.  kalkulator.exe ima svoj oblik, tj. da nije crna podloga nego da ima gumbe i ost. Znam da treba puno učit za to napravit ali ako me možete uputit kako, novi projekt--Win aplication ili kako to već ide?

 

Hvala, i oprostite na ovako glupim pitanjima, tek sam počeo ... :D

(1) - koliko mi je poznato, standardni MSov kompajler ne podržava C. No ako ti se da, skini neki C kompajler, i u postavkama VSa sredi adrese...

 

(2) - gdje je nestalo ono uzbuđenje crnim konzolnim ekranom? :( Ugl. i nije tako teško, ako se okoristiš kvalitetnim GUI frameworkom (npr. http://www.wxwidgets.org/), ali bilo bi dobro da prvo uhvatiš osnove jezika, a to je najlakše kroz konzolu.

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
15 godina
neaktivan
offline
RE: Pomoc za pocetnike u C-u

Može kompajlirati "običan" c kod jer to podržava Visual studio ,moraš ići pod empty project i tamo u source desni klik i add .cpp
i piši čisti C i prijevod je bez problema ,a što se tiče tvog pitanja o vizualnom u c-u ,bilo bi pametno da kreneš od početka a ne odmah na Windows programiranje .
Naravno i to imaš u C-u.Daj kod koji si napisao i pokrenut ću ga iz VS-a najnormalnije .Gore kako sam ti napisao.

 

Private
Poruka je uređivana zadnji put sri 25.11.2009 18:27 (Private).
14 godina
neaktivan
offline
RE: Pomoc za pocetnike u C-u

Ma uspio sam u međuvremenu u Visualu :)

 

ma obični kod

#include<stdio.h>

#include<conio.h>

main()

{

printf(" bezveze");

getch();

}

 

 

 

Ma nisam potpuni početnik u C.u, učim ga već nekoliko mjeseci, učili smo ulaz, izlaz podataka, if i else, uvjete, case-ove...Učimo ga u školi, i učit ćemo ga dokraja školovanja. (MIOC program školovanja)

Nista nije sveto sve je bruto i neto, sve je zabava!
Poruka je uređivana zadnji put sri 25.11.2009 18:48 (Shody_1994).
15 godina
neaktivan
offline
RE: Pomoc za pocetnike u C-u

Kako sam ti i rekao ,samo empty project i dolje je slika tvog koda i normalno se izvršava u VS 2008....samo stavi int  ispred main za VS.

Ukratko .Samo pročitaj uvijek što ti kaže tamo dolje u greškama kod buildanja.

...samo int main() ...samo int main()
Private
14 godina
neaktivan
offline
RE: Pomoc za pocetnike u C-u
Private kaže...

Kako sam ti i rekao ,samo empty project i dolje je slika tvog koda i normalno se izvršava u VS 2008....samo stavi int  ispred main za VS.

Ukratko .Samo pročitaj uvijek što ti kaže tamo dolje u greškama kod buildanja.

Eh, da. To sam htio pitat.

Zašto "svi" programeri u C-u stavljaju taj int ispred main-a. Nas u školi uče samo main.

Nista nije sveto sve je bruto i neto, sve je zabava!
15 godina
offline
RE: Pomoc za pocetnike u C-u

da i ja nešto ostavim... ja studiram matematiku, i jedan od asistenata je napravio odličnu skriptu za C, koja je slobodna za korištenje... puno je riješenih primjera, odlično objašnjeno... i ne bojte se kaj je za fax, nema baš puno nekog naprednog programiranja.

 

Linkovi:

 

početak C-a ovdje (od strane 46) : http://degiorgi.math.hr/prog1/materijali/p1-vjezbe.pdf

nastavak : http://degiorgi.math.hr/prog2/materijali/p2-vjezbe.pdf

 

Nadam se da će pomoći :D

 

A što se tiče onog int main(), to je samo zbog samog karaj programa, di se stavi return 0; ili tako nešto. Da efektivno program završi.

Poruka je uređivana zadnji put čet 26.11.2009 22:41 (Luuka).
16 godina
neaktivan
offline
RE: Pomoc za pocetnike u C-u
Shody_1994 kaže...
Private kaže...

Kako sam ti i rekao ,samo empty project i dolje je slika tvog koda i normalno se izvršava u VS 2008....samo stavi int  ispred main za VS.

Ukratko .Samo pročitaj uvijek što ti kaže tamo dolje u greškama kod buildanja.

Eh, da. To sam htio pitat.

Zašto "svi" programeri u C-u stavljaju taj int ispred main-a. Nas u školi uče samo main.

konkretno: http://www.cprogramming.com/faq/cgi-bin/smartfaq.cgi?id=1043284376&answer=1044841143

 

plus: http://users.aber.ac.uk/auj/voidmain.shtml

Rjesava jednostavne probleme u podforumu Programiranje od 2008. xD http://irale.deviantart.com
Poruka je uređivana zadnji put čet 26.11.2009 22:41 (RaLe).
16 godina
moderator
offline
RE: Pomoc za pocetnike u C-u
Shody_1994 kaže...
Private kaže...

Kako sam ti i rekao ,samo empty project i dolje je slika tvog koda i normalno se izvršava u VS 2008....samo stavi int  ispred main za VS.

Ukratko .Samo pročitaj uvijek što ti kaže tamo dolje u greškama kod buildanja.

Eh, da. To sam htio pitat.

Zašto "svi" programeri u C-u stavljaju taj int ispred main-a. Nas u školi uče samo main.

Zato sto funkcija main moze vratiti vrijednost programu koji je pozvao nas program. Znaci, na kraju programa "rucno" izadjes iz njega pomocu return 0 ili exit(0). Medjutim, drugom programu ili operacijskom sustavu mozes signalizirati da je doslo do nekakve greske tako da vratis vrijednost razlicitu od nule. Imas ovdje nesto vise o tome. Usput receno, nasao sam na vise mjesta da u C++-u funkcija main mora vracati vrijednost tima int.

15 godina
neaktivan
offline
RE: Pomoc za pocetnike u C-u

Svaki konzolni program mora imati funkciju kao ulaznu točku (pokretač) ,u C-u i C++-u je to funkcija main koja može imati ili jedan(int) ili drugi(void-prazan:engl.prjevod) povratni tip.
Znači može biti int tipa povratni tip ili void main() . Shvati main kao glavnu funkciju iz koje se sve pokreće ,sav kod koji pišeš u nju stvljaš ,njoj proslijeđuješ.

Kad ima povratni tip tad se funkcija završava return povratni_tip;

Kad je void u pitanju -samo return;   A neki kompjaleri toleriraju i bez return  ,jer kao podrazumjevano imaju ,ako ne naglasiš int da se radi o int main().
To je jako općenito , zato prvo bi trebao proći funkcije i na koji način one vraćaju ili ne vraćaju vrijednost ...očito još niste došli do toga  a to je od iznimne važnosti dobro objasniti!

 


EDIT :Vidim da je bilo dosta odgovora ,a također to pitanje lijepo postavi i u školi jer onaj koji vas to uči treba i dobro objasniti,a ne samo pisati i pisati!

Evo dolje primjera  kako radi u jednom slučaju return u funkcijama ..pokreni ga i pogledaj koju vrijednost vraća prva ,a koju druga ,  povratni tip kao i tip koji se vraća mora biti jedank tip ...to je samo jedan od mnogih primjera koji se mogu napisati da bi se objasnilo return i povratni tipovi ,namjerno sam stavio void main().

 

#include<stdio.h>

 

#include<conio.h>

#include<math.h>//   nije potreban u ovom slucaju (koristi se za sqrt(),abs() i slicne "gotove" funkcije

double Zbroj(double a,double b); //deklaracija funkcija

double Zbroj2(double a,double b);

 

void main()

 

{

double a,b,c,d;

 

printf("Prvi broj:");

scanf("%lf",&a);

printf("Drugi  broj:");

scanf("%lf",&b);

c=Zbroj(a,b);

printf("Zbroj je %f.",c);

d=Zbroj2(a,b);

printf("Zbroj je %f.",d);

 

getch();

return;

 

 

}

 //definicje funkcija

 

double Zbroj(double a,double b)

{

return a+b;

}

double Zbroj2(double a,double b)

{

return a;

}

Private
Poruka je uređivana zadnji put pet 27.11.2009 14:28 (Private).
Nova poruka
E-mail:
Lozinka:
 
vrh stranice