PDA

Prikaži potpunu verziju : Pomoć oko strukture u C-u


Kevin_Garnett
16.1.2011, 20:05
Uradio sam sinoc neku bzv strukturu u kojoj sam radio sortiranje kosarkasa po imenu, prezimenu i visini. E sad ispravio sam par sintaksnih greskica koje sam napravio i nakon sto sam ponovo pokusao da kompajliram, izbacuje mi u dijelu koda koji vrsi rotiranje sledecu poruku, "''=' : incompatible types". Jel moze neko da mi pomogne oko ovoga, uopste ne razumijem na sta se ovo odnosi. Nisam nesto previse iskusan sa programiranjem, ali znam odraditi vecinu klasicnih skolskih zadataka, tipa rotiranje, ubacivanje, izbacivanje, nizovi, matrice, funkcije itd. Sa strukturama sam tek nedavno poceo da se bavim. Hvala unaprijed!!!

#include<stdio.h>
#include<string.h>

struct kosarkasi
{
char ime[15];
char prezime[20];
char pozicija[10];
int godina_rodjenja[10];
int visina[10];
} kosarkas[20];

main()
{
int i,j,broj_igraca,pom;

printf("Unesite broj igraca:\t");
scanf("%d",&broj_igraca);
for(i=0;i<broj_igraca;i++)
{
printf("Unesite podatke o %d. igracu:\n",i+1);
scanf("%s%s%s%d%d",kosarkas[i].ime,kosarkas[i].prezime,kosarkas[i].pozicija,
&kosarkas[i].godina_rodjenja,&kosarkas[i].visina);

}
for(i=0;i<broj_igraca-1;i++)
{
for(j=i+1;j<broj_igraca;j++)
{
if(strcmp(kosarkas[i].ime,kosarkas[j].ime)>0)
{
pom=kosarkas[i];
kosarkas[i]=kosarkas[j];
kosarkas[j]=pom;
}
else if(strcmp(kosarkas[i].ime,kosarkas[j].ime)==0)
{
if(strcmp(kosarkas[i].prezime,kosarkas[j].prezime)>0)
{
pom=kosarkas[i];
kosarkas[i]=kosarkas[j];
kosarkas[j]=pom;
}
}
}
}
for(i=0;i<broj_igraca-1;i++)
{
for(j=i+1;j<broj_igraca;j++)
{
if(kosarkas[i].visina<kosarkas[j].visina)
{
pom=kosarkas[j];
kosarkas[j]=kosarkas[i];
kosarkas[i]=pom;
}
}
}
printf("\n%-15s%-15s%-15s%-15d%-15f", kosarkas[i].ime,kosarkas[i].prezime,kosarkas[i].pozicija,
kosarkas[i].godina_rodjenja,kosarkas[i].visina);
printf("\n");

}

voodoo_
16.1.2011, 20:42
Aj drugi put obuhvati kod u code tag, ne može se čitati ovako.

Prvo, zašto u strukturi imaš int godina_rodjenja[10]? To je niz brojeva, tebi treba jedan broj za godinu a ne niz od deset brojeva. Razlikuj broj i cifru. Četvorocifreni broj sasvim lepo može da se upiše u jedan int, jer jedan int nije jedna cifra nego 32-bitni broj. Char je druga priča, tu jeste jedan znak = jedan char pa mora niz znakova za tekst.

Dalje, ako imaš niz struktura, ne možeš tek tako premeštati kompletne strukture navođenjem znaka jednakosti, jer znak jednakosti ne može da iskopira sadržaj cele strukture (koliko ja znam).
Ono što možeš da uradiš je da umesto niza struktura napraviš niz pokazivača na strukture, gde se sortiranje svodi samo na "prevezivanje" pokazivača na elemente niza.

Najtoplija preporuka, pošto očigledno imaš problema u razumevanju osnova C-a, kupi zbirku od Lasla Krausa "Rešeni zadaci iz programskog jezika C", ima je po knjižarama i skriptarnicama tehničkih fakulteta.

typedef struct {
char ime[15];
char prezime[20];
char pozicija[10];
int godina_rodjenja;
int visina;
} kosarkas;

// Niz od 10 pokazivača na košarkaše
kosarkas* kosarkasi = (kosarkas*) malloc(10 * sizeof(kosarkas*));

// Alociranje memorije za deset košarkaša
for (int i=0; i<10; i++) kosarkasi[i] = malloc(sizeof(kosarkas));

// Sortiranje

kosarkas* pom;

for(i=0; i<10;i++)
{
for(j=i+1;j<10;j++)
{
if(strcmp(*(kosarkasi[i]).ime, *(kosarkasi[j]).ime) > 0)
{
pom = kosarkasi[i];
kosarkasi[i] = kosarkasi[j];
kosarkasi[j] = pom;
}

// Oslobađanje memorije koju zauzimaju košarkaši
for (int i=0; i<10; i++) (free(kosarkasi[i]));

// Oslobađanje memorije koju zauzima niz pokazivača na košarkaše
free(kosarkasi);

Nisam probavao da li radi.

Flash91
16.1.2011, 21:09
Topla preporuka za Krausovu knjigu, posle jednog prolaza (sa sve zadacima i primerima) mozes da naucis kompletne osnove, iz C-a. Sve je lepo i koncizno objasnjeno, sa vrlo dobro uradjenim primerima koji ti zaista pomognu u shvatanju jezika. Pricam to iz iskustva :)

Kevin_Garnett
16.1.2011, 23:37
Aj drugi put obuhvati kod u code tag, ne može se čitati ovako.

Prvo, zašto u strukturi imaš int godina_rodjenja[10]? To je niz brojeva, tebi treba jedan broj za godinu a ne niz od deset brojeva. Razlikuj broj i cifru. Četvorocifreni broj sasvim lepo može da se upiše u jedan int, jer jedan int nije jedna cifra nego 32-bitni broj. Char je druga priča, tu jeste jedan znak = jedan char pa mora niz znakova za tekst.

Dalje, ako imaš niz struktura, ne možeš tek tako premeštati kompletne strukture navođenjem znaka jednakosti, jer znak jednakosti ne može da iskopira sadržaj cele strukture (koliko ja znam).
Ono što možeš da uradiš je da umesto niza struktura napraviš niz pokazivača na strukture, gde se sortiranje svodi samo na "prevezivanje" pokazivača na elemente niza.

Najtoplija preporuka, pošto očigledno imaš problema u razumevanju osnova C-a, kupi zbirku od Lasla Krausa "Rešeni zadaci iz programskog jezika C", ima je po knjižarama i skriptarnicama tehničkih fakulteta.

typedef struct {
char ime[15];
char prezime[20];
char pozicija[10];
int godina_rodjenja;
int visina;
} kosarkas;

// Niz od 10 pokazivača na košarkaše
kosarkas* kosarkasi = (kosarkas*) malloc(10 * sizeof(kosarkas*));

// Alociranje memorije za deset košarkaša
for (int i=0; i<10; i++) kosarkasi[i] = malloc(sizeof(kosarkas));

// Sortiranje

kosarkas* pom;

for(i=0; i<10;i++)
{
for(j=i+1;j<10;j++)
{
if(strcmp(*(kosarkasi[i]).ime, *(kosarkasi[j]).ime) > 0)
{
pom = kosarkasi[i];
kosarkasi[i] = kosarkasi[j];
kosarkasi[j] = pom;
}

// Oslobađanje memorije koju zauzimaju košarkaši
for (int i=0; i<10; i++) (free(kosarkasi[i]));

// Oslobađanje memorije koju zauzima niz pokazivača na košarkaše
free(kosarkasi);

Nisam probavao da li radi.

Hvala na savjetima i na svemu, al moram da kazem par stvari u vezi svega ovoga. Kao prvo sto se tice ove godine rodjenja, nesvjesno sam je oznacio kao niz brojeva a ne kao jednu cifru, mada koliko ja znam to nece da utice na rad programa, jer taj clan strukture ionako nisam iskoristio nigdje u kodu i skroz je svejedno da li je cifra ili niz. Mene u svemu ovome najvise buni to sto sam ja na predavanjima i lab vjezbama odradio masu ovakvih struktura i sve su pisane na slican nacin. Zadaci koji su se trazili su uglavnom neka grupisanja i sortiranja clanova strukture, i vazno je da napomenem da ni u jednom zadatku nismo koristili pokazivace. Radili smo ih u sklopu nekih drugih oblasti ali konkretno u zadacima sa strukturama nismo. Svi su ti kodovi znaci napisani na ovakav nacin kao ovaj moj i zato mi nije jasno zasto mi kompajler izbacuje non stop istu poruku u dijelu gdje sam odradio sortiranje. Kodovi sa vjezbi rade kako treba. Studiram elektrotehniku i imam ispita preko glave tako da nemam vremena da se maksimalno posvetim C-u, zato mi stvarno smetaju komentari koje sam znao dobijati na raznim forumima, tipa druze ako si mislio da se bavis prog bolje odustani i sl. Btw Krausa sam procitao na prvoj godini i knjiga je odlicna, mada opet kazem nisam imao toliko vremena da to sve fino predjem. Hvala jos jednom na pomoci, pokusacu da odradim preko pokazivaca.

enaB
17.1.2011, 10:03
Može da se iskopira struktura znakom = ako se radi o strukturama istog tipa, kao što je ovde slučaj(niz struktura), ali ne može da se iskopira u tip int (promenljiva "pom") kao što ti radiš :)
Stavi umesto int pom struct kosarkasi pom

voodoo_
17.1.2011, 10:33
Ne mogu da verujem kakav banalan previd :) Ne daj bože da uzmemo da debagujemo neki složeniji program :D

irreal
17.1.2011, 10:58
Može da se iskopira struktura znakom = ako se radi o strukturama istog tipa, kao što je ovde slučaj(niz struktura), ali ne može da se iskopira u tip int (promenljiva "pom") kao što ti radiš :)
Stavi umesto int pom struct kosarkasi pom

Ne kopiraju se sami podaci vec "nova" struktura samo pokazuje ka istom nizu kao i stara.

ako izmenite nesto u staroj promena ce biti vidljiva i u novoj.

enaB
17.1.2011, 11:31
Ne kopiraju se sami podaci vec "nova" struktura samo pokazuje ka istom nizu kao i stara.

ako izmenite nesto u staroj promena ce biti vidljiva i u novoj.

Ne znam, kod mene ne radi tako :)
Ako napišem
struct s {
int a,b;
} s1, s2;

void main() {

s1.a=10;
s1.b=20;

s2.a=30;
s2.b=40;

s1=s2;

printf ("a=%d, b=%d\n", s1.a, s1.b); //a=30, b=40

s2.a=35;
s2.b=45;

printf ("a=%d, b=%d\n", s1.a, s1.b); //a=30, b=40
}

Kevin_Garnett
17.1.2011, 21:04
Može da se iskopira struktura znakom = ako se radi o strukturama istog tipa, kao što je ovde slučaj(niz struktura), ali ne može da se iskopira u tip int (promenljiva "pom") kao što ti radiš :)
Stavi umesto int pom struct kosarkasi pom

Hvala puno na pomoci, ispravio sam i sad sve radi kako treba. Greska jeste bila bezveze, ali ja jos jednom kazem, tek sam poceo da se bavim strukturama i treba mi malo vremena da skontam kako sta radi i da steknem rutinu u tome. Ovakav sam odgovor i trazio, da mi neko konkretno pomogne kako da rijesim svoj problem! HVALA JOS JEDNOM, POZZZ!!!!!! :)))

irreal
17.1.2011, 21:07
boze me sacuvaj, kolko sam ja odlutao kada sam to pisao.
apsolutno sam se prebacio na nizove, ne strukture!

ja se izvinjavam, ovih dana sam jedva prisutan kada citam postove, svasta se izdogadjalo.

enaB je apsolutno upravu.

Kevin_Garnett
17.1.2011, 21:16
Ne mogu da verujem kakav banalan previd :) Ne daj bože da uzmemo da debagujemo neki složeniji program :D

Ja ne znam zasto si ti uopste odgovarao na ovo moje pitanje ako ces da me provociras ovde!!? Ja sam lijepo postavio pitanje, objasnio problem, i fino naveo da sam tek poceo da radim sa strukturama. Zamolicu te jednu stvar samo, kad sledeci put postavim neki post na ovaj forum, molim te nemoj da mi odgovaras, jer ne mogu da se raspravljam stvarno!

Kevin_Garnett
17.1.2011, 21:26
boze me sacuvaj, kolko sam ja odlutao kada sam to pisao.
apsolutno sam se prebacio na nizove, ne strukture!

ja se izvinjavam, ovih dana sam jedva prisutan kada citam postove, svasta se izdogadjalo.

enaB je apsolutno upravu.
Tebi hvala u svakom slucaju sto si htio da pomognes, a desava se da covjek pogrijesi. Eto ja sam napravio bzv gresku, al zato drugi put necu. Pozzz

irreal
17.1.2011, 22:45
Ja ne znam zasto si ti uopste odgovarao na ovo moje pitanje ako ces da me provociras ovde!!? Ja sam lijepo postavio pitanje, objasnio problem, i fino naveo da sam tek poceo da radim sa strukturama. Zamolicu te jednu stvar samo, kad sledeci put postavim neki post na ovaj forum, molim te nemoj da mi odgovaras, jer ne mogu da se raspravljam stvarno!

Covece, smiri se, sta ti je?!

On je naveo da je glup previd i da mu je smesno kako ni on sam to nije primetio.
Nije rekao nista lose tebi ili te prozivao, samo se nasalio sta bi tek bilo da je neki komplikovaniji program kada ovakvu gresku nije spazio.

Ja mislim da si ti jedini koji je primetio neku agresivnost i provociranje u njegovom postu.
Relaksiraj se, svakome se desi i niko tebe nije prozivao.

voodoo_
17.1.2011, 22:58
Ja ne znam zasto si ti uopste odgovarao na ovo moje pitanje ako ces da me provociras ovde!!? Ja sam lijepo postavio pitanje, objasnio problem, i fino naveo da sam tek poceo da radim sa strukturama. Zamolicu te jednu stvar samo, kad sledeci put postavim neki post na ovaj forum, molim te nemoj da mi odgovaras, jer ne mogu da se raspravljam stvarno!
Ovo što je rekao irreal, ja se krstim što sam JA propustio da uočim pogrešno napisan tip i da me je sramota, šta se odma žestiš a niko ti reč nije rekao...

Todors
17.1.2011, 23:44
Što bi naš narod rekao: "Relax, take it easy". :opanachke

Belphegor
18.1.2011, 0:43
Izvinjavam se na upadu u post.
Imam jedno pitanje, posto nikad nisam ucio/radio sa C jezikom, interesuje me da li u C-u ima operatora u struct-ovima? i da li ima referen(a)ca?
Mislim da u primeru gore od enaB u kodu:

...
s1=s2;
...
se implicitno poziva operator = koji radi memberwise copy, doduse u ovom primeru se radi sa primitivnim tipovima tako da ovo radi kako bi bilo logicno, ali sta ako u struct-u imamo pokazivac ili/i neki drugi objekat, zar ne bi bilo bolje explicitno dodati taj operator

struct S
{
int a, b;
S& operator = (const S& other)
{
if(this != &other)
{
a = other.a;
b = other.b;
}
return *this;
}
};
ili kako se vec u C-u resavaju ti problemi? Ako moze neko da objasni.

Kevin_Garnett
18.1.2011, 1:49
Ovo što je rekao irreal, ja se krstim što sam JA propustio da uočim pogrešno napisan tip i da me je sramota, šta se odma žestiš a niko ti reč nije rekao...

E drug izvini molim te ako mozes, nervozan sam toliko ovih dana. Ucim od jutra do mraka a ispita imam preko glave. Ovakve me stvari izuzetno nerviraju kad napisem neki kod i ne mogu da uocim gresku neku bzv. A ako mi vjerujes desavalo mi se vise puta na drugim forumima, da umjesto odgovora dobijem samo neke kritike i savjete da se prestanem baviti programiranjem i sl. Nisam ja ocigledno shvatio ovaj tvoj post, tako da se izvinjavam i tebi i svima ostalim na agresivnosti!!! Sve ok???? :)

ivan90BG
19.1.2011, 15:57
// Niz od 10 pokazivača na košarkaše
kosarkas* kosarkasi = (kosarkas*) malloc(10 * sizeof(kosarkas*));

// Alociranje memorije za deset košarkaša
for (int i=0; i<10; i++) kosarkasi[i] = malloc(sizeof(kosarkas));
.
.
.
// Oslobađanje memorije koju zauzimaju košarkaši
for (int i=0; i<10; i++) (free(kosarkasi[i]));

// Oslobađanje memorije koju zauzima niz pokazivača na košarkaše
free(kosarkasi);

Ako smem da kažem, može ovo da se napiše i vako:


//alocirati niz od 10 pointera za kosarkase
kosarkas** kosarkasi = (kosarkas**)malloc(10 * sizeof(kosarkas*));

//alocirati memoriju za kosarkase u jednom koraku, a ne u 10
kosarkas* mem_za_kosarkase = (kosarkas*)malloc(10 * sizeof(kosarkas));

for (int i = 0; i < 10; i++)
{
kosarkasi[i] = mem_za_kosarkase + i;
}
.
.
.
free(kosarkasi); //oslobađanje memorije za niz pointera
free(mem_za_kosarkase); //oslobađanje memorije za kosarkase u jednom koraku, umesto u 10

:) :ciao:

Luigi
7.2.2011, 19:52
Da ne otvaram novu temu...
Isto imam problema sa strukturama, radili smo u školi primerčić i dobili domaći. Treba napisati modul za rad sa kompleksnim brojevima. Modul sadrži definiciju strukture "kompleksniBroj" i funkcije za sabiranje i oduzimanje, množenje i deljenje. I programčić za testiranje istih, ali na žalost neradi :mad:
kompbroj.h struct kompBroj
{
float re, im;
};

struct kompBroj sabiranje ( struct kompBroj z1, struct kompBroj z2);
struct kompBroj oduzimanje ( struct kompBroj z1, struct kompBroj z2);
struct kompBroj deljenje ( struct kompBroj z1, struct kompBroj z2);
struct kompBroj mnozenje ( struct kompBroj z1, struct kompBroj z2);

kompbroj.c #include "kompbroj.h"
struct kompBroj sabiranje ( struct kompBroj z1 , struct kompBroj z2)
{
struct kompBroj z;
z.re=z1.re+z2.re;
z.im=z1.im+z2.im;
return z;
}

struct kompBroj oduzimanje ( struct kompBroj z1 , struct kompBroj z2)
{
struct kompBroj z;
z.re=z1.re-z2.re;
z.im=z1.im-z2.im;
return z;
}
struct kompBroj deljenje ( struct kompBroj z1 , struct kompBroj z2)
{
struct kompBroj z;
z.re=(z1.re*z2.re+z1.im*z2.im)/(z2.re*z2.re+z2.im*z2.im);
z.im=(z1.im*z2.re-z1.re*z2.im)/(z2.re*z2.re+z2.im*z2.im);
return z;
}
struct kompBroj mnozenje ( struct kompBroj z1 , struct kompBroj z2)
{
struct kompBroj z;
z.re=z1.re*z2.re-z1.im*z2.im;
z.im=z1.re*z2.im+z1.im*z2.re;
return z;
}

Pozivanjem funkcija javljaju se glupavi rezultati... Možete li mi pomoći, i reći gde grešim? Jer ja grešku stvarno nevidim :n-cc2: ponavljam ovo sam tek učio...

enaB
7.2.2011, 22:41
Jel ispisuješ rezultat kao float, da slučajno ne stavljaš %d?

Luigi
7.2.2011, 23:24
Ne, ispisujem rezultat kao float. Evo i programčeta za testiranje.
#include "kompbroj.h"
#include <stdio.h>
main ()
{
struct kompBroj z1, z2;
scanf_s("%f %f",&z1.re,&z1.im);
scanf_s("%f %f",&z2.re,&z2.im);
printf("%f %f",oduzimanje (z1, z2));
getch();
}

Sass Drake
7.2.2011, 23:37
Možda da pošalješ kao argument pokazivač na strukturu.

EclipsE
7.2.2011, 23:44
Uhm... what?

z3 = oduzimanje(z1, z2);
printf("%f %f", z3.re, z3.im);

enaB
7.2.2011, 23:51
" printf("%f %f",oduzimanje (z1, z2)); "

to ne valja.

Pogledaj još jednom deklaraciju funkcije oduzimanje, vidiš da je povratna vrednost tipa struct kompBroj, a ne dva zasebna floata.


void main () {

struct kompBroj z1, z2, rez;

scanf("%f %f",&z1.re,&z1.im);
scanf("%f %f",&z2.re,&z2.im);

rez=oduzimanje(z1, z2);

printf("%.1f%+.1fj\n",rez.re, rez.im);

getchar();
}



update:
Preteče me :)

Luigi
7.2.2011, 23:51
:o Radi, hvala na pomoći, izvinjavam se stvarno sam mislio da to nije problem :facepalm

Sass Drake
8.2.2011, 16:05
A ja položio C i ne primjeti gdje je problem. :facepalm

Luigi
8.2.2011, 23:28
Ako u header fajlu imam sledeće deklaracije:
struct par
{
int sifra;
char domacin [50];
char gost [50];
enum TIP tip;
float kvota;
};

struct tiket
{
struct par parovi [16];
int broj_parova;
float ulog;
};

float dobitak (struct par kolo [], int broj_utakmica, struct tiket);
Dali u definiciji funkcije mogu koristiti identifikatore:
tiket.parovi [i].sifra
tiket.parovi [i].kvota
Ako ne, kako drugčije da pristupim istim. Napisao sam kod ali pri kompajliranju se izbacuje sledeće greške:
error C2055: expected formal parameter list, not a type list
error C2065: 'tiket' : undeclared identifier
error C2224: left of '.broj_parova' must have struct/union type
error C2065: 'tiket' : undeclared identifier
error C2224: left of '.parovi' must have struct/union type
error C2065: 'tiket' : undeclared identifier
error C2224: left of '.parovi' must have struct/union type
...
:confused: Nerazumem kako nevidi da je to deo strukture, koja je deo strukture...

boshkodj
9.2.2011, 1:06
float dobitak (struct par kolo [], int broj_utakmica, struct tiket);[/CODE]
Pogresio si kod postavljanja argumenta :

float dobitak(struct par kolo [], int broj_utakmica, struct tiket ime)
{
float a = ime.ulog;
for(int i = 0;i < 16;i++)
{
struct par a = ime.parovi[i];
}
}

EclipsE
9.2.2011, 2:48
Vidiš da ima ";" na kraju, tako da je to prototype funkcije i nije bitno što je izostavio ime promenljive.

Iz ovoga što si nam dao nemamo pojma o čemu se radi, tako da ćeš morati da okačiš ceo kod.

voodoo_
9.2.2011, 11:40
Zašto ne definišete novi tip na početku sa typedef struct pa ga koristite regularno u toku programa, umesto svaki put da pišete struct tip ime?

NISAM NESTO SMART
9.2.2011, 14:37
Pa ja mislim da moze i sada normalno da definise bez struct ispred, ili sam se ja nesto istripovao...koliko se secam to typedef je potrebno samo u C?
@Luigi: kao sto su vec rekli postavi ceo kod da vidimo :)

Luigi
9.2.2011, 18:03
Bio je problem sa imenom, u definiciji mora ici ime promenljive. Napisao sam i ostatak koda, ali pogađate... :n-cc2:
-header enum TIP
{
X, //neresheno-X
D, //1
G, //2
};

struct par
{
int sifra;
char domacin [50];
char gost [50];
enum TIP tip;
float kvota;
};

struct tiket
{
struct par parovi [16];
int broj_parova;
float ulog;
};

float dobitak (struct par kolo [], int broj_utakmica, struct tiket);


-definicija funkcije
#include "kladionica.h"

float dobitak (struct par kolo [], int broj_utakmica, struct tiket ime)
{
float x=1;
int i,j;
for(i=0;i<ime.broj_parova;i++)
{
j=0;
while(kolo [j].sifra!=ime.parovi [i].sifra)
{
j++;
}
if(kolo[j].tip==ime.parovi [i].tip)
x=x*kolo[j].kvota;
else
x=0;
}
return ime.ulog*x;
}



-testiranje
#include <stdio.h>
#include "kladionica.h"
main()
{
int i,j,br,ulog;
struct par kolo [20];
struct tiket ime;
printf("Koliko utakmica ima u trenutnom kolu?");
scanf_s("%d",&br);
printf("Unesite sve utakmice kola:"); //unos svih utakmica kola
for(i=0;i<br;i++)
{
scanf_s("%d",&kolo[i].sifra); //ovo nije u sklopu jedne funkije jer je pravilo probleme
printf("\n");
scanf_s("%c",&kolo[i].domacin);
printf("\n");
scanf_s("%c",&kolo[i].gost);
printf("\n");
scanf_s("%d",&kolo[i].tip);
printf("\n");
scanf_s("%f",&kolo[i].kvota);
printf("\n");
}
printf("Unesite broj utakmica na tiketu:");
scanf_s("%",&j);
for(i=0;i<j;i++)
{
scanf_s("%d %d",&ime.parovi[i].sifra,&ime.parovi[i].tip);
}
printf("Ulog:");
scanf_s("%d",&ulog);

printf("Osvojili ste %f dinara",dobitak (kolo, br,ime) );
}

Pri kompajliranju neukazuje na problem ali po pokretanju programa i unosu brojeva i karaktera ibacuje alert Invalid input format (ne samo ovako ima celi pasus) i ubacuje me u input.c .
U čemu je sada problem?
P.S: Doskora sam koristio DEV C++ ali sada koristim Microsoftov, pa se nesnalazim najbolje. :o

EclipsE
9.2.2011, 19:38
scanf_s("%",&j);

scanf_s("%d",&j);

voodoo_
9.2.2011, 21:04
Pa ja mislim da moze i sada normalno da definise bez struct ispred
U C++ može, u C-u ne može. Mora ili typedef struct ili struct ime svaki put.

mctoxic88
11.2.2011, 17:14
Ne mogu da verujem kakav banalan previd :) Ne daj bože da uzmemo da debagujemo neki složeniji program :D
Ko nauci da debaguje ovako bez samog dibagera je kralj programiranja :)
Debuging je najtezi deo programiranja za savladati, ali kad savladas onda znas na cemu si :aplauz:

Luigi
19.4.2011, 22:34
Eto mene opet sa pitanjem. Kada imam dvostruko spregnutu listu i funkciju dodaj_na_pocetak koja dodaje jedan element na početak te liste. Nazovimo taj elementr prviel. prvi.el će pokazivati na ono što je pokazivao pokazivac liste, podatak će biti neki koji smo uneli ali na šta će pokazivati kao na prethodni? Na NULL? :confused:

#include<stdio.h>
#include<stdlib.h>
struct elem
{
int podatak;
struct elem * prethodni;
struct elem * sledeci;
};

struct elem * dodaj_na_pocetak (struct elem * prvi,int x)
{
struct elem * prviel;
prviel=(struct elem *)malloc(sizeof(struct elem));
prviel->podatak=x;
prviel->sledeci=prvi;
prviel->prethodni=NULL;
prvi=prviel;
return prvi;
}

enaB
19.4.2011, 23:44
Da, to se vidi i iz koda

prviel->prethodni=NULL;

Luigi
20.4.2011, 14:50
Pa da, ja stavio tako ali nisam bio siguran dali je tačno...