Chyba pri kompilacii

Programovacie jazyky, rady, poradňa...
dEVIANT
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 47
Registrovaný: 02 apr 2009, 20:18

Chyba pri kompilacii

Príspevok od používateľa dEVIANT »

zdravim...potrebujem s niecim pomoct...stale mi pri kompilacii vypisuje tuto chybu

zadanie.c: In function âmainâ:
zadanie.c:46: warning: passing argument 1 of âvytvorenie_uctuâ makes pointer from integer without a cast
zadanie.c:46: warning: assignment makes integer from pointer without a cast
-------------------------
tu je zdrojak...
--------------------------
#include <stdio.h>
#include <stdlib.h>

typedef struct _klient {
char meno[20],priezvisko[20],typ_uctu;
int cislouctu,popzvuctu;
float urokova_miera;
struct _klient *p_dalsi;
} klient; //Struktura klienta
klient *vytvorenie_uctu(klient *); //Deklaracia funkcii
klient *zmazat_ucet(klient *);

int main() {

char menu;
int ch=0;
int p;


do {

printf ("a) Vytvorit ucet\n");
printf ("b) Zmazat ucet\n");
printf ("c) Zobrazit stav uctu\n");
printf ("d) Vlozit na ucet\n");
printf ("e) Vybrat z uctu\n");
printf ("f) Prevod na iny ucet\n");
printf ("x) koniec\n");
scanf("%c",&menu);
getchar();
system("clear");


switch (menu) { //Listovanie v menu
case 'a':

ch=1; //Povoli dalsie operacie v menu
printf ("\n\n");
break;
p=vytvorenie_uctu(p);
case 'b':
if (ch==0) {
printf("Najprv vytvorte ucet!");
}
else {

printf ("\n\n");
} break;


case 'c':/*stav_uctu();*/printf ("\n\n");break;
case 'd':/*vlozit_naucet()*/;printf ("\n\n");break;
case 'e':/*vybrat_zuctu()*/;printf ("\n\n");break;
case 'f':/*prevod()*/;printf ("\n\n");break;
} } while (menu != 'x');
return 0;
}

klient *vytvorenie_uctu(klient *prvy)
{
klient *novy;
klient *last = prvy;

novy = (klient*) malloc(sizeof(klient));

printf ("\n\n Zadaj meno: ");
scanf ("%s",&novy->meno);
printf ("\n\n Zadaj priezvisko: ");
scanf ("%s",&novy->priezvisko);
printf ("\n\n Zadaj typ uctu (bezny,sporiaci,terminovany) : ");
scanf ("%s",&novy->typ_uctu);
printf ("\n\n Zadaj Cislo uctu 0900/ ");
scanf ("%d",&novy->cislouctu);
printf ("\n\n Zadaj poplatok za vedenie uctu: ");
scanf ("%d",&novy->popzvuctu);
printf ("\n\n Zadaj urokovu mieru: ");
scanf ("%f",&novy->urokova_miera);
printf ("\n\n");

novy->p_dalsi = NULL;

if (!last) return novy;

while (last->p_dalsi != NULL) last = last->p_dalsi;

last->p_dalsi = novy;
return prvy;
}
----------------------
povite mi pls co robim zle?alebo ako to prerobit aby to slo??vopred dakujem...velmi mi to pomoze v dalsom programovani tohoto programu
njoko
Light Expert
Light Expert
Príspevky: 50
Registrovaný: 09 okt 2008, 13:32

Príspevok od používateľa njoko »

Kód: Vybrať všetko

klient *vytvorenie_uctu(klient *);
int p;
p=vytvorenie_uctu(p); 
preco mas p int? ked vytvorenie uctu ti vracia klienta?
struktura moze byt aj takto , je to podla mna lepsie lebo si nepleties, ked uz chces mat silou mocou dve tak si to pomenuj aspon rozoznatelne, klient a KLIENT ale urcite nie _klient lebo je to lahko prehliadnutelne

Kód: Vybrať všetko

struct klient { 
char meno[20],priezvisko[20],typ_uctu; 
int cislouctu,popzvuctu; 
float urokova_miera; 
struct klient *p_dalsi; 
}; //Struktura klienta 

v maine si zmen to

Kód: Vybrať všetko

int p;
na

Kód: Vybrať všetko

klient *p=NULL; 
a aj tak ti to nikdy nevytvori klienta, pretoze mas break pred riadkom kde sa vytvara.

Kód: Vybrať všetko

break; 
p=vytvorenie_uctu(p);
A ked si das celu funkciu pred main, tak ju nemusis potom v tom jednom riadku tam deklarovat
dEVIANT
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 47
Registrovaný: 02 apr 2009, 20:18

Príspevok od používateľa dEVIANT »

diiky moc...tym pointrom stale tak dobre nechapem takze tak:D...ucim sa no...

edit // to s tym break viem to bol detajl ktory som hned opravil:D
njoko
Light Expert
Light Expert
Príspevky: 50
Registrovaný: 09 okt 2008, 13:32

Príspevok od používateľa njoko »

a este neviem co mas za IDEcko(ak nejake), mne devc++ hned napisal ze tam chces priradit intu klienta..tak ked nerozumies poriadne hentym warningom(co by mali byt skor errory) tak si nejake ine skus zaobstarat

edit : tebe napisalo
assignment makes integer from pointer without a cast
mne : invalid conversion from int to klient
je to vlastne to iste..ale jedno je tak zrozumitelnejsie,podla mna
dEVIANT
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 47
Registrovaný: 02 apr 2009, 20:18

Príspevok od používateľa dEVIANT »

ja to neprogramujem v dev c++ ale na linuxe cez putty...preto tie odlisnosti
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

V oboch prípadoch používaš ako kompilátor gcc, takže by ti to malo písať rovnaké chyby a upozornenia.
dEVIANT
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 47
Registrovaný: 02 apr 2009, 20:18

Príspevok od používateľa dEVIANT »

all done diky moc...uz to mam cele spravene :)
Napísať odpoveď