Programiranje u C-u - od svega pomalo izdvojena tema

poruka: 1.661
|
čitano: 386.975
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
g12356 kaže...
Probao sam malo C++ i mislim da je loš jezik.Za objekte je Java zakon.

Izvini, ali ova izjava pokaziva koliko znaš. C++ i Java nisu jezici za porediti, ovaj potonji je uzeo dosta lijepih stvari iz C++-a (naravno o sintaksi govorim). Ako ćemo tako gledati C#, po meni i po mnogima, ima ljepšu sintaksu od Jave. Ali nije sintaksa najbitnija kod jezika. Za C-om sumnjam da imaš ikakve potrebe, to je više iz nekih tvojih principa ili tako nešto, posebno ako se ozbiljnije misliš baviti programiranjem, OOP ti je must know. Ja sam OOP na C++u naučio i baš mi je super kasnije sam to sve za tren ukapirao u C#-u i Javi, ne znam šta tebi smeta kod C++a? Toplo ti preporučujem da 'pređeš' na C++, razvijati GUI aplikacije u C-u nije nimalo lako, a nije ni potrebno, no opet sve zavisi od toga šta aplikacija radi... Nećeš valjda doživotno ostati samo na jednom jeziku!?

 

Ovu izjavu da je C++ loš jezik ne treba ni komentarisati, svaki jezik ima svoju primjenu.  

17 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
g12356 kaže...

Ma ne,želim ansi c.Probao sam malo C++ i mislim da je loš jezik.Za objekte je Java zakon.Ok,budem i tako učio,ali za početak kao nekakav 'starting point' ću učit hardkodirano.

 

Cijeli cilj ovoga mi je da naučim C relativno ok,Javu npr. već relativno ok znam. A zašto objekte u C-u?jednostavno mislim da ako želim napredovati sa tim jezikom da bih trebao znati napraviti u njemu barem najosnovniji objekt.Iako ću za OOP uvijek koristiti Javu koliko god budem mogao.

 

A prvi korak za to sam već napravio(evo vam objekt u C-u :P):

...

Ako je C++ los jezik, onda je C jos gori. Svaki OO jezik je dobar za OOP. U C-u se moze forsati objektno (originalno je C++ zapoceo kao predprocesor koji je generirao C kod), ali on nije OO jezik jer po defaultu ne podrzava OO mehanizme. Mozes se ti sam igrati pa castati u void, raditi svoje vtablice itd., ali je to gnjavaza. Radile su se te stvari prije C++-a kao design patterni iliti oblikovni obrasci. To OOP u principu i jest, design pattern. U svakom jeziku (imperativnom, funkcijskom ne) mozes pisati oblikovne obrasce, pa tako i OO, pogledaj recimo GObject. Ali stvar je u tome sto se u hrpi C koda tesko vidi OO, bolje receno ne vidi se i vrlo je lako razbiti apstrakciju, zato su OO jezici popularni - jer je OO dizajn u njima jasan i koncizan.

 

Ako znas jezik i sve njegove cake, tada si ga naucio i napredovao u njemu, ovo sve ostalo su algoritmi i strukture podataka (koje mozes ionako oblikovati u bilo kojem drugom jeziku), dakle nisi pisanjem OO C-a naucio nista novo o jeziku niti si u njemu napredovao, vec si naucio koncept koji se moze primjeniti u drugim jezicima.

 

Kao vjezbu i zezanciju svakako to napravi, ako i ne znas sve cake, kroz to ces ih nauciti, a i naucit ces podlogu OO-a. Ali ako ista ozbiljno mislis raditi, nema previse smisla.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
royalhero kaže...
g12356 kaže...
Probao sam malo C++ i mislim da je loš jezik.Za objekte je Java zakon.

Izvini, ali ova izjava pokaziva koliko znaš. C++ i Java nisu jezici za porediti, ovaj potonji je uzeo dosta lijepih stvari iz C++-a (naravno o sintaksi govorim). Ako ćemo tako gledati C#, po meni i po mnogima, ima ljepšu sintaksu od Jave. Ali nije sintaksa najbitnija kod jezika. Za C-om sumnjam da imaš ikakve potrebe, to je više iz nekih tvojih principa ili tako nešto, posebno ako se ozbiljnije misliš baviti programiranjem, OOP ti je must know. Ja sam OOP na C++u naučio i baš mi je super kasnije sam to sve za tren ukapirao u C#-u i Javi, ne znam šta tebi smeta kod C++a? Toplo ti preporučujem da 'pređeš' na C++, razvijati GUI aplikacije u C-u nije nimalo lako, a nije ni potrebno, no opet sve zavisi od toga šta aplikacija radi... Nećeš valjda doživotno ostati samo na jednom jeziku!?

 

Ovu izjavu da je C++ loš jezik ne treba ni komentarisati, svaki jezik ima svoju primjenu.

  Ne nego smatram da jednostavno pošto znam Javu,da ne želim učit C++.Osim toga rekao sam riječ 'mislim'.Priznajem da nisam super programer,jjer onda nebi po forumima postavljao pitanja.A šta se tiče C++-a,pola godine sam se pokušavao mučiti s njime,blago rečeno,jedva sam naučio inheritance i gettere i settere napravit.Sa Javom sam sve u trenu shvatio.Ja govorim o tome koji mi je lakši bio za naučit.C želim naučit jer eto želim znati neki dobar mid level jezik.Usput sam se počeo učit i Python.Toliko o tome da planiram doživotno ostati na jednom jeziku.Neću preći razvijati GUI aplikacije na C++,nego ako baš moram odustati od C-a,radije ću to radit na Javi,Pythonu ili šta ja znam čemu već ne...

 

Pa da,možda mi se i je C++ zamjerio,ali dao sam mu dovoljno prilike.Java barem ima garbage collector.

 

Zašto se želim učit c?Nemam razloga.Jednostavno želim.Onako čisto hobistički rečeno:'I just wanna hack some shit.'

Ja sam Plavi zmaj.Form the future!Masa,društvo većina,''normalni'' su ništa bez onih pojedinaca koji ih čine.
Poruka je uređivana zadnji put uto 25.6.2013 0:55 (g12356).
17 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
g12356 kaže...

Ne nego smatram da jednostavno pošto znam Javu,da ne želim učit C++.Osim toga rekao sam riječ 'mislim'.Priznajem da nisam super programer,jjer onda nebi po forumima postavljao pitanja.A šta se tiče C++-a,pola godine sam se pokušavao mučiti s njime,blago rečeno,jedva sam naučio inheritance i gettere i settere napravit.Sa Javom sam sve u trenu shvatio.Ja govorim o tome koji mi je lakši bio za naučit.C želim naučit jer eto želim znati neki dobar mid level jezik.Usput sam se počeo učit i Python.Toliko o tome da planiram doživotno ostati na jednom jeziku.

 

Pa da,možda mi se i je C++ zamjerio,ali dao sam mu dovoljno prilike.Java barem ima garbage collector.

A daj, jedva naucio gettere i settere?

 

Po cemu se ovo:

// C++ getters and setters

private:
    int broj;

public:
    int getBroj() { return broj; } // Getter
    void setBroj(int br) { broj = br; } // Setter

toliko strasno razlikuje od ovoga:

// Java getters and setters

private int broj;

public int getBroj() { return this.broj; } // Getter
public void setBroj(int br) { this.broj = br; } // Setter

 

Meni se vise cini da nisi imao dovoljno dobru i jasnu literaturu.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
14 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
g12356 kaže...
Probao sam malo C++ i mislim da je loš jezik.Za objekte je Java zakon. 

"Malo probao C++" a donosiš takve neke zaključke? Nije mi to baš nešto argumentirano {#}.

 

Eto, primjerice, meni je Java potpuno neupotrebljiva. Razvoj aplikacija prespor (u 90% slučajeva sve samo hard-codiranje), dok i same Java aplikacije se presporo izvršavaju. Čak smo na TVZ-u uspoređivali prof. Radovan i ja kad sam bio na spec. studiju. Ta glupost od Swing-a u kojemu se ljudi muče 4 sata da slože osnovnu aplikaciju za rad s derbi bazom je čisti gubitak vremena u usporedbi s C++om (C++ Builder), gdje je meni za tu istu vježbu trebalo svega 11 minuta.

 

Prednost Jave je jako puno vremena bila jednostavna portabilnost na različite platforme, garbage collector itd., no danas niti ostali programski jezici tu ne zaostaju. C++ ima smart pointere koji se sami dealociraju (što iz gornjeg posta vidim da nisi znao), a C++ Builder već ima direktnu podršku za Mac i IOS, a Android i Linux su tu za godinu dana. A i o samoj brzini izvršavanja C++ aplikacija vs. Java aplikacija neću trošiti previše riječi. Usto, tu je .NET koji svakim danom postaje sve popularniji i baca Javu u drugi plan.

 

g12356 kaže...
 

A prvi korak za to sam već napravio(evo vam objekt u C-u :P):

  #include <stdio.h>
#include<stdlib.h>
typedef struct stringStruct
{
char* internalRep;
void (*set) (void* ,char* newString);
char* (*get) (void* );
} String;
void set(void* obj,char* newString)
{
String* self=(String*) obj;
self->internalRep=newString;
}
char* get(void* obj)
{
String* self=(String*) obj;
return self->internalRep;
}
String* new_String()
{
String* newInstance=malloc(sizeof(String));
newInstance->set=&set;
newInstance->get=&get;
return newInstance;
}
int main (int argc, char** argv[a])
{
String* ourString=new_String();
ourString->set(ourString,"MyString");
printf(ourString->get(ourString));
free(ourString);
return 0;
}

 

Možda tvoje (ne)znanje najviše i govori {#}. C nema objekte (tek primitivne tipove podataka i strukture). Ovo je tek pokušaj da se simulira objekt funkcijskim pointerima koji se naknadno trebaju inicijalizirati. Baš me zanima kako bi onda napravio polimorfizam ili neko drugo OO svojstvo i koje bi to karafeke bile.

 

Od učenja C-a nećeš ništa previše dobiti jer C je proceduralni jezik. Zato i postoji C++ kao nadogradnja C-a sa mnoštvom GUI biblioteka (VCL, MFC, Wx..) da bi preko OO pristupa olakšao izradu GUI aplikacija. Slobodno pogledaj C++ Builder pa sam prosudi koliko je to "loše". Imaš hrpu videa u repozitoriju predmeta ili na mom youtube kanalu: link

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
Poruka je uređivana zadnji put uto 25.6.2013 1:06 (TracerCPP).
17 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
TracerCPP kaže...
...

 

Prednost Jave je jako puno vremena bila jednostavna portabilnost na različite platforme, garbage collector itd., no danas niti ostali programski jezici tu ne zaostaju. C++ ima smart pointere koji se sami dealociraju (što iz gornjeg posta vidim da nisi znao), a C++ Builder već ima direktnu podršku za Mac i IOS, a Android i Linux su tu za godinu dana. A i o samoj brzini izvršavanja C++ aplikacija vs. Java aplikacija neću trošiti previše riječi. Usto, tu je .NET koji svakim danom postaje sve popularniji i baca Javu u drugi plan.

Boldano: jel ovo znaci da ce C++ Builder sa svim svojim komponentama (ukljucujuci VCL) biti portan na Linux?

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Ok,porazili ste me. priznam poraz.Čestitam.Povlačim,C++ nije loš jezik,ali nije ni Java,niti C...

No hard feelings.

Svejedno,u bližoj budućnosti osatajem sa ovim jezicima,u daljnjoj možda opet dam C++-u priliku.

Ja sam Plavi zmaj.Form the future!Masa,društvo većina,''normalni'' su ništa bez onih pojedinaca koji ih čine.
Poruka je uređivana zadnji put uto 25.6.2013 1:15 (g12356).
Moj PC  
1 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
g12356 kaže...

Ok,porazili ste me. priznam poraz.Čestitam.

No hard feelings.

Svejedno,u bližoj budućnosti osatajem sa ovim jezicima,u daljnjoj možda opet dam C++-u priliku.

Gle, nemoj misliti da te odgovaram od necega, kao recimo emuliranje OO dizajna u C-u. Dapace.

Ali ti zelim reci da to nema smisla raditi u produkcijske svrhe, vec cisto iz neke osobne znatizelje i vlastitog zadovoljstva.

Za stvarno nesto napraviti tu su OO jezici koji su vec unaprijed dizajnirani s OO paradigmom na umu.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
14 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
1domagoj1 kaže...
TracerCPP kaže...
...

 

Prednost Jave je jako puno vremena bila jednostavna portabilnost na različite platforme, garbage collector itd., no danas niti ostali programski jezici tu ne zaostaju. C++ ima smart pointere koji se sami dealociraju (što iz gornjeg posta vidim da nisi znao), a C++ Builder već ima direktnu podršku za Mac i IOS, a Android i Linux su tu za godinu dana. A i o samoj brzini izvršavanja C++ aplikacija vs. Java aplikacija neću trošiti previše riječi. Usto, tu je .NET koji svakim danom postaje sve popularniji i baca Javu u drugi plan.

Boldano: jel ovo znaci da ce C++ Builder sa svim svojim komponentama (ukljucujuci VCL) biti portan na Linux?

VCL će ostati Windows only. Zapravo, u C++ Builderu sada postoji nova biblioteka: FireMonkey. Ona trenutno podržava Windows, OSX i IOS, a sada ju proširuju na Android i Linux. Znači, jedan te isti projekt i code, samo odabrati platformu koju želiš i compilirati. Npr. kako je to sada:

 

Izrada MAC aplikacije pod Windowsima (C++ Builder) Izrada MAC aplikacije pod Windowsima (C++ Builder)
 

Štoviše, moguće je iz Windowsa (iz C++ Buildera) vršiti pokretanje i debug aplikacije na MAC-u i tako direktno testirati rad aplikacije.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
13 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
g12356 kaže...

Ok,porazili ste me. priznam poraz.Čestitam.Povlačim,C++ nije loš jezik,ali nije ni Java,niti C...

No hard feelings.

Svejedno,u bližoj budućnosti osatajem sa ovim jezicima,u daljnjoj možda opet dam C++-u priliku.

Nismo te porazili, barem nam to nije bio cilj. Mi te ne odgovaramo od C-a, samo ti govorimo šta ti lakše/bolje/isplatljivije, ti ako želiš možeš razviti kompletan CRM sistem u C-u, niko ti ne brani.

15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
royalhero kaže...
g12356 kaže...

Ok,porazili ste me. priznam poraz.Čestitam.Povlačim,C++ nije loš jezik,ali nije ni Java,niti C...

No hard feelings.

Svejedno,u bližoj budućnosti osatajem sa ovim jezicima,u daljnjoj možda opet dam C++-u priliku.

Nismo te porazili, barem nam to nije bio cilj. Mi te ne odgovaramo od C-a, samo ti govorimo šta ti lakše/bolje/isplatljivije, ti ako želiš možeš razviti kompletan CRM sistem u C-u, niko ti ne brani.

  Ma mislim ovak u raspravi.Ma meni je bio problem što je postalo kasno i što sam počeo bezveznu filozofiju lupati,takav postanem kad sam umoran(ako nisam pod kofeinom).Zato se ispričavam radi neugodnosti.

Ja sam Plavi zmaj.Form the future!Masa,društvo većina,''normalni'' su ništa bez onih pojedinaca koji ih čine.
17 godina
offline
Programiranje u C-u - od svega pomalo

Ma nisi puno ni pogriješio, C++ jest pomalo hibrid, mada je moćniji i od Java i od C#  - ali ipak ima dva lica - proceduralno iz C i na to nadograđeno OOP. Pa ako ga učiš poslije čistog OOP jezika - zna zbuniti.

 

I C# i Java su napisali programeri C++ kojima je to smetalo.

Ali je C++ sveobuhvatniji jer radiš i sa pokaivačima, uz to i brži jer se ne vrti u virtualnoj mašini, ali produktivniji nije - ova dva su napisana od programera kojima su neke stvari u C++ smetale, točnije njegovo proceduralno nasljeđe.

 

Ipak, moje je osobno mišljenje da bi ga svi programeri trebali učiti - Algoritme i strukture podataka ja bi dao da se jedino u njemu i polažu. Razlog je jednostavan - brži je od Java i C#.

Poruka je uređivana zadnji put uto 25.6.2013 20:38 (Floki).
 
2 0 hvala 0
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

aj pomagajte ljudi, neznan kako da ovo izvedem :
znaci ovako, iman neku tekstualnu datoteku u kojoj prvih n redova su neke gluposti a onda od n+1. reda pa na dolje su stvari poslozene po stupcima, i sad kako bi ja pomakao pointer da mogu čitati od n+1. reda pa do određenog i kako da te podatke iz stupaca spreman u različita polja?
EDIT: i kako ide onda za binarne datoteke?  

Come to the dark side.... we have cookies :)
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Ako je riječ o binarnoj datoteci onda moraš čitati blokove bitova. Znači, trebala bi postojati neka struktura podataka koju bi čitao jednu po jednu ili s fseek pozicionira se na zapis koji ti treba.

 

Isto tako i za početne linije. Treba znati koliko je to točno bitova pa da se može preskočiti.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

a kako za tekstualne datoteke?

Come to the dark side.... we have cookies :)
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Čitaj znak po znak, riječ po riječ, redak po redak.. kako god ti odgovara.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
13 godina
offline
Re: Programiranje u C-u - od svega pomalo
alias_noname kaže...

a kako za tekstualne datoteke?

Izaberi što ti najviše odgovara:

 

/* f je neki file pointer */

1.

char c;

while((c = fgetc(f)) != EOF)

{

//...

}

 

2.

fscanf(f, "%bla %bla...", var1, var2);

 

3.

fgets(f, velicina_buffera, buffer); //buffer je neki C-string

sscanf(buffer, "%bla %bla...", var1, var2);

 

0100011001000001010100000010000000110100001000000100110001001001010001100100010100100001
Poruka je uređivana zadnji put sri 26.6.2013 12:18 (pr0n_addict).
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

evo snašao se za to, sad ugl trebam iz tekst datoteke preuzeti prvo string pa onda 2 broja i spremat ih u niz struktura dinamički alociran

tekst u datoteci izgleda ovako
"

blablalbalblablablalbalblablablalbalbla

blablalbalblablablalbalblablablalbalbla

blablalbalblablablalbalbla

 

ime1      12 13

ime2      45 1

ime3      0 0

 

"

 

struktura je definirana ovako

 

typedef struct {

char ime[50];

int GF;

int GA;

}klub;

 

niz sam alocirao ovako

 

kl=(klub *) realloc (kl,(n+1) * sizeof(klub));

 

i sad kad zelim da mi se učita 1 red podataka korisim ovako


fscanf ( fp ," %s %d %d" , (kl+n)->ime , (kl+n)->GF , (kl+n)->GA ) ; 

 

i sad mi izbacuje error oko ovo %s, kako popravit?
ako treba poslat cu puni kod 

Come to the dark side.... we have cookies :)
Moj PC  
0 0 hvala 0
13 godina
offline
Programiranje u C-u - od svega pomalo

Ne znam što će ti realloc, on se uglavnom koristi kada ti treba veći blok memorije pa ga realociraš. Dovoljan ti je malloc ili calloc (ako želiš inicijalizirati vrijednosti).

Isto tako, u C-u ne moraš eksplicitno castati void pointere, dapače - implicitna pretvorba se čak i preporuča. Vjerojatno koristiš Visual Studio pa se IntelliSense nešto buni glede toga (bez razloga), to je inače dosta poznati bug.

Probaj kompajlirati bez castanja pa ćeš vidjeti da compiler ništa ne javlja.

 

Ne razumijem što ti je ovo (kl + n), daj ti nama C/P-aj cijeli kod ovdje.

 

 

0100011001000001010100000010000000110100001000000100110001001001010001100100010100100001
Poruka je uređivana zadnji put sri 26.6.2013 13:03 (pr0n_addict).
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

ma realloc moran koristit jer tako je zadano u zadatku al evo koda

 

 

#include <stdio.h>

#include <stdlib.h>

 

 

typedef struct {

char ime[50];

int GF;

int GA;

}klub;

 

int main ()

{

int i,n=0;

FILE * fp; 

klub *kl=NULL;

 

 

  fp = fopen("hello.txt", "r"); 

 

  if( fp == NULL) 

printf("Greska pri otvaranju datoteke"); 

 

do

{

kl=(klub *) realloc (kl,(n+1) * sizeof(klub));

 

/*preskakanje prvog reda */

for(int i=0;i<1;i++)

while(fgetc(fp)!='\n');

 

/*ucitavanje podataka u niz kl */

fscanf(fp,"%s %d %d",(kl+n)->ime,(kl+n)->GF,(kl+n)->GA);

n++;

}while(feof(fp)==0);

 

 

for (i=0;i<n;i++) 

printf("%c %d %d",(kl+i)->ime,(kl+i)->GF,(kl+i)->GA);

 

printf("\n");

 

fclose(fp);

 

return 0;

}

Come to the dark side.... we have cookies :)
Moj PC  
0 0 hvala 0
13 godina
offline
Programiranje u C-u - od svega pomalo

Nisam probao pokretati, ali poslije ovih promjena mi gcc ne javlja nikakve warninge:

 

fscanf(fp,"%s %d %d", kl[i].ime, &kl[i].GF, &kl[i].GA);

printf("%s %d %d", kl[i].ime, kl[i].GF, kl[i].GA);

 

Savjet - za ispis charova radije koristi putchar jer je daleko "lakša" funkcija od printf-a.

0100011001000001010100000010000000110100001000000100110001001001010001100100010100100001
Poruka je uređivana zadnji put sri 26.6.2013 13:34 (pr0n_addict).
Moj PC  
0 0 hvala 1
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

hvala ti puno, ja debil uvik zaboravim & {#}

Come to the dark side.... we have cookies :)
Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Eo ovako, malo se igram opet i napisao sam bezveze program koji bez rekurzivne funkcije racuna Fibonaccijeve brojeve...i sve radi samo zanima me koji je najbolji format za esktremno velike brojeve?

Nesto sam gledao po netu i iskoristio sam unsigned long long, ali svejedno polude tamo oko 12znamenkastom broju....zar ne bi trebalo vise izdrzat?

Ako nekog zanima kako to izgleda, evo kod

 

#include<stdio.h>

int main(){

   int i, poredak,index=0, kolicina;

   unsigned long long prethodni=0,iduci=1,pom,trazeni;

   printf("Koliko Fibonaccijevh brojeva zelite?\n");

   scanf("%d",&kolicina);

 

   printf("Koji vas po redu zanima?\n");

    scanf("%d",&poredak);

    printf("\n\nLista:\n");

   for (i=0;i<kolicina;i++){

     index++;

    printf("%d\n",prethodni+iduci);

  if (index==poredak) {

   printf("OVAJ IZNAD JE VAS TRAZENI\n");

   trazeni=prethodni+iduci;

  }

    pom=prethodni;

    prethodni=iduci;

    iduci=prethodni+pom;

    }

   printf("Opet, vas trazeni broj je %d\n",trazeni);

   }

 

 

GoogleSearch Is Your Friend
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
lazy_punk kaže...

Eo ovako, malo se igram opet i napisao sam bezveze program koji bez rekurzivne funkcije racuna Fibonaccijeve brojeve...i sve radi samo zanima me koji je najbolji format za esktremno velike brojeve?

Nesto sam gledao po netu i iskoristio sam unsigned long long, ali svejedno polude tamo oko 12znamenkastom broju....zar ne bi trebalo vise izdrzat?

...

Koristi neku bignum/bigint biblioteku.

Ovdje imas popis nekih biblioteka, ovdje ti je GNU Multi-Precision Bignum Library.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
12 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

U pokusaju da svom "jadnom" prijatelju koji se muci na feru pomognem oko necega, zapnem...

 

/*

Ispit se sastoji od pitanja s ponuđenim odgovorima. Odgovori studenata pohranjeni su u dvodimenzionalnom polju

znakova, za svakog studenta po jedan redak s njegovim odgovorima. Točni odgovori po pitanjima pohranjeni su u jednodimenzionalnom polju znakova koje za svako

pitanje sadrži točan odgovor.

a) (20 bodova) Napisati funkciju ocijeni koja će kao parametre primiti odgovore studenata i točne odgovore

po pitanjima te u pozivajući program vratiti ostvareni broj bodova za sve studente kao jednodimenzionalno

polje realnih brojeva (zar moze funkcija vratiti niz? [pokazivac valjda treba?]).

U odgovorima studenta može se naći i znak '-' koji označava da student nije odabrao niti jedan odgovor. Ako

je odgovor točan student dobiva 1 bod, ako odgovor nije točan student dobiva -0,5 bodova a 0 bodova

dobiva ako nije odabrao niti jedan odgovor.

b) (20 bodova) Napisati program u kojem će se iz tekstualne datoteke rezultati.txt pročitati odgovori studenata

na ispitu sa 6 pitanja i 4 moguća odgovora i pohraniti u dvodimenzionalno polje znakova. Možete

pretpostaviti da je maksimalan broj studenata 100. U datoteci se nalaze odgovori studenata (u svakom retku

odgovori jednog studenta) koji su međusobno odvojeni jednom prazninom. Npr. ako se u datoteci nalaze

odgovori za 2 studenta datoteka će imati sljedeći sadržaj:

A D C A B C

D - B A - C

Uz definirane točne odgovore za 6 pitanja

D B C A A C

potrebno je pozvati funkciju ocijeni i njen rezultat ispisati na ekranu tako da se broj bodova za svakog

studenta ispisuje u novom retku. Za gore navedene primjere odgovora studenata ispis bi bio:

1.5

2.5

jer prvi student ima 3 točna odgovora i 3 netočna odgovora. Drugi student ima 3 točna odgovora, 1 netočan

odgovor i 2 neodgovorena pitanja.

*/

//ja sam stavio 10 studenata i nabacio random ocjene u .txt

 

#include <time.h>

#include <stdlib.h>

#include <stdio.h>

 

void random_ocjene();

float *ocijeni (char tocni[], char stud_odgovori[][6]);

 

   int main (){

 

    random_ocjene();

    int i,j;

    FILE *dat;

    char tocni_odgovori[6]={'D', 'B', 'C', 'A', 'A', 'C'};

    char student[10][6];

    float *rezultati;

    char temp;

 

    dat = fopen("rezultati.txt","r");

    if (dat==NULL){

     printf("Greska pri otvaranj\n");

     exit(1);

    }

 

 

   for (i=0;i<10;i++){

     for (j=0;j<12;j++){

     temp=getc(dat);

     if (temp!=' '){

       student[i][j/2]=temp;

     }

   }

 

   rezultati=ocijeni(tocni_odgovori, student);

 

   for (i=0;i<10;i++){

     printf("Student broj %d postigao je %.2f bodova.\n",i+1, rezultati[i]);

   }

   }

  fclose(dat);

 

}

 

void random_ocjene(){

 

 srand(time(NULL));

 FILE *dat;

 dat = fopen("rezultati.txt","w");

 int i,j;

 int broj;

 

 for (i=0;i<10;i++){

 

   for (j=0;j<6;j++){

       broj = (rand() % 5) + 1;

     switch (broj){

     case 1:

       putc('A', dat);

     break;

     case 2:

       putc('B', dat);

     break;

     case 3:

       putc('C', dat);

     break;

     case 4:

       putc ('D', dat);

     break;

 

     case 5:

       putc('-', dat);

     break;

 

     }

     putc(' ', dat);

   }

 

   putc('\n',dat);

 }

 

 fclose(dat);

 

}

 

float *ocijeni (char tocni[], char stud_odgovori[][6]){

int i,j;

float rezultati[10];

 

 

for(i=0;i<10;i++){

     rezultati[i]=0;

for (j=0;j<6;j++){

   if (tocni[j]==*(stud_odgovori[j]))

     rezultati[i]+=1;

   else if (*(stud_odgovori[j])=='-')

     continue;

   else rezultati[i]-=0.5;

}

}

float *pokazivac = &rezultati[0];

return pokazivac;

 

}

 

 

Nakon par prepravki, kada pokrenem zadatak radi, samo sto cudne stvari ispisuje. Negdje -3.00, negdje 0.00, negdje 3514534600000.00

Help please, ty!{#}

GoogleSearch Is Your Friend
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
lazy_punk kaže...

U pokusaju da svom "jadnom" prijatelju koji se muci na feru pomognem oko necega, zapnem...

 

/*

Ispit se sastoji od pitanja s ponuđenim odgovorima. Odgovori studenata pohranjeni su u dvodimenzionalnom polju

znakova, za svakog studenta po jedan redak s njegovim odgovorima. Točni odgovori po pitanjima pohranjeni su u jednodimenzionalnom polju znakova koje za svako

pitanje sadrži točan odgovor.

a) (20 bodova) Napisati funkciju ocijeni koja će kao parametre primiti odgovore studenata i točne odgovore

po pitanjima te u pozivajući program vratiti ostvareni broj bodova za sve studente kao jednodimenzionalno

polje realnih brojeva (zar moze funkcija vratiti niz? [pokazivac valjda treba?]).

U odgovorima studenta može se naći i znak '-' koji označava da student nije odabrao niti jedan odgovor. Ako

je odgovor točan student dobiva 1 bod, ako odgovor nije točan student dobiva -0,5 bodova a 0 bodova

dobiva ako nije odabrao niti jedan odgovor.

b) (20 bodova) Napisati program u kojem će se iz tekstualne datoteke rezultati.txt pročitati odgovori studenata

na ispitu sa 6 pitanja i 4 moguća odgovora i pohraniti u dvodimenzionalno polje znakova. Možete

pretpostaviti da je maksimalan broj studenata 100. U datoteci se nalaze odgovori studenata (u svakom retku

odgovori jednog studenta) koji su međusobno odvojeni jednom prazninom. Npr. ako se u datoteci nalaze

odgovori za 2 studenta datoteka će imati sljedeći sadržaj:

A D C A B C

D - B A - C

Uz definirane točne odgovore za 6 pitanja

D B C A A C

potrebno je pozvati funkciju ocijeni i njen rezultat ispisati na ekranu tako da se broj bodova za svakog

studenta ispisuje u novom retku. Za gore navedene primjere odgovora studenata ispis bi bio:

1.5

2.5

jer prvi student ima 3 točna odgovora i 3 netočna odgovora. Drugi student ima 3 točna odgovora, 1 netočan

odgovor i 2 neodgovorena pitanja.

*/

//ja sam stavio 10 studenata i nabacio random ocjene u .txt

 

#include <time.h>

#include <stdlib.h>

#include <stdio.h>

 

void random_ocjene();

float *ocijeni (char tocni[], char stud_odgovori[][6]);

 

   int main (){

 

    random_ocjene();

    int i,j;

    FILE *dat;

    char tocni_odgovori[6]={'D', 'B', 'C', 'A', 'A', 'C'};

    char student[10][6];

    float *rezultati;

    char temp;

 

    dat = fopen("rezultati.txt","r");

    if (dat==NULL){

     printf("Greska pri otvaranj\n");

     exit(1);

    }

 

 

   for (i=0;i<10;i++){

     for (j=0;j<12;j++){

     temp=getc(dat);

     if (temp!=' '){

       student[i][j/2]=temp;

     }

   }

 

   rezultati=ocijeni(tocni_odgovori, student);

 

   for (i=0;i<10;i++){

     printf("Student broj %d postigao je %.2f bodova.\n",i+1, rezultati[i]);

   }

   }

  fclose(dat);

 

}

 

void random_ocjene(){

 

 srand(time(NULL));

 FILE *dat;

 dat = fopen("rezultati.txt","w");

 int i,j;

 int broj;

 

 for (i=0;i<10;i++){

 

   for (j=0;j<6;j++){

       broj = (rand() % 5) + 1;

     switch (broj){

     case 1:

       putc('A', dat);

     break;

     case 2:

       putc('B', dat);

     break;

     case 3:

       putc('C', dat);

     break;

     case 4:

       putc ('D', dat);

     break;

 

     case 5:

       putc('-', dat);

     break;

 

     }

     putc(' ', dat);

   }

 

   putc('\n',dat);

 }

 

 fclose(dat);

 

}

 

float *ocijeni (char tocni[], char stud_odgovori[][6]){

int i,j;

float rezultati[10];

 

 

for(i=0;i<10;i++){

     rezultati[i]=0;

for (j=0;j<6;j++){

   if (tocni[j]==*(stud_odgovori[j]))

     rezultati[i]+=1;

   else if (*(stud_odgovori[j])=='-')

     continue;

   else rezultati[i]-=0.5;

}

}

float *pokazivac = &rezultati[0];

return pokazivac;

 

}

 

 

Nakon par prepravki, kada pokrenem zadatak radi, samo sto cudne stvari ispisuje. Negdje -3.00, negdje 0.00, negdje 3514534600000.00

Help please, ty!{#}

 

Glede istaknutog zutog.

Moze , uzmi npr. sljedeci banalan primjer

 

http://ideone.com/tFumMi

http:/https://play.google.com/store/apps/details?id=org.kde.necessitas.example.SMASHHH
Poruka je uređivana zadnji put čet 1.8.2013 0:36 (nik_02).
16 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Meni se cini da si fulao tamo s zagradama na kraju kad punis studenta prije ispisa ili mi nije jasno sto zelis napraviti.

Mozes probati ovako: http://pastebin.com/zJk84Jed

 

U tvom primjeru je komplicirano mijenjati broj studenta/pitanja, a to ce vjerovatno biti zahtjev, bar mi se cini po nacinu kako je postavljen zadatak.

Mozes ako hoces ukrasti stogod iz ovoga: http://pastebin.com/n6faqgCJ

Al nema potrebe da odustanes od svoga, rijesenje ti je ok, bolje korisiti kod kojeg si sam napisao pa znas kako radi.

All problems in computer science can be solved by another level of indirection
Poruka je uređivana zadnji put čet 1.8.2013 11:46 (drnde).
 
0 0 hvala 1
12 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
drnde kaže...

Meni se cini da si fulao tamo s zagradama na kraju kad punis studenta prije ispisa ili mi nije jasno sto zelis napraviti.

Mozes probati ovako: http://pastebin.com/zJk84Jed

 

U tvom primjeru je komplicirano mijenjati broj studenta/pitanja, a to ce vjerovatno biti zahtjev, bar mi se cini po nacinu kako je postavljen zadatak.

Mozes ako hoces ukrasti stogod iz ovoga: http://pastebin.com/n6faqgCJ

Al nema potrebe da odustanes od svoga, rijesenje ti je ok, bolje korisiti kod kojeg si sam napisao pa znas kako radi.

Thanks, izgleda da je greska sa zagradom [if (tocni[j]==stud_odgovori[i][j])] - stavio [stud_odgovorio[j]], lol.

Mozes li mi samo objasniti zasto static float rezultati[10]? Funkcija se pozove samo jednom?

 

GoogleSearch Is Your Friend
16 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
lazy_punk kaže...
drnde kaže...

Meni se cini da si fulao tamo s zagradama na kraju kad punis studenta prije ispisa ili mi nije jasno sto zelis napraviti.

Mozes probati ovako: http://pastebin.com/zJk84Jed

 

U tvom primjeru je komplicirano mijenjati broj studenta/pitanja, a to ce vjerovatno biti zahtjev, bar mi se cini po nacinu kako je postavljen zadatak.

Mozes ako hoces ukrasti stogod iz ovoga: http://pastebin.com/n6faqgCJ

Al nema potrebe da odustanes od svoga, rijesenje ti je ok, bolje korisiti kod kojeg si sam napisao pa znas kako radi.

Thanks, izgleda da je greska sa zagradom [if (tocni[j]==stud_odgovori[i][j])] - stavio [stud_odgovorio[j]], lol.

Mozes li mi samo objasniti zasto static float rezultati[10]? Funkcija se pozove samo jednom?

 

Ne smijes iz funkcije vracati pointer na lokalnu variablu, nakon sto se izvrsi funkcija memorija koju je bila rezervirana za varijablu rezultati je oslobodena, tj. deklarirana kao slobodna.

Pointer i dalje pokazuje na iste adresa kao prije sto si ga vratio medutim kad ga dereferenciras vrijednost na tim adresama moze biti bilo sto, zato si i dobivao te neke

cudne brojke na ispisu rezultata. Varijabla deklarirana kao static "zivi" dalje neovisno o scope-u funkcije.

 

BTW. jesi siguran da ovaj zadatak trebas rjesavati bez dinamicke alokacije memorije, pretpostavlja da ako bi trebao da bi spomenuli ?

All problems in computer science can be solved by another level of indirection
Poruka je uređivana zadnji put čet 1.8.2013 14:36 (drnde).
12 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
drnde kaže...

 

BTW. jesi siguran da ovaj zadatak trebas rjesavati bez dinamicke alokacije memorije, pretpostavlja da ako bi trebao da bi spomenuli ?

Nisam siguran, ovako mi je prijatelj c/p zadatak. Palo mi je napamet kad sam vidio ono "pretpostavite da je max broj studenata 100", ali ja sam stavio 10 studenata...reda radi{#}..

zadatak sam radio vise iz znatizelje..

GoogleSearch Is Your Friend
Poruka je uređivana zadnji put čet 1.8.2013 14:47 (lazy_punk).
Nova poruka
E-mail:
Lozinka:
 
vrh stranice