[ petar karacic @ 12.07.2006. 00:42 ] @
Imam jedan problem. Kada dodajem novu strukturu u listu nikako neće da mi se unese decimalni broj float. U ovom slucaju čim unesem neki broj pojavljiva mi se dobug error. Evo vam citav algoritam pa vi to pogledajte, mislim da je problem u funkciji void dodaj() i to 8 linija koda (scanf("%f",&novi->ocjena); ) ali za svaki slucaj. Bio bih zahvalan kada bi netko znao u čemu mi je problem unaprjed hvala.



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

struct student {
char ime[20];
float ocjena;
struct student *veza;
} *glava=NULL;


void dodaj();
void main(){
char izbor;


do{
printf("izaberite\n");
printf("a) dodavanje nove liste\n");
printf("d) izlaz iz programa\n\n\n");


fflush(stdin);
scanf("%c",&izbor);

switch(izbor){


case 'a':{
dodaj();
break;
}
case 'd':{
break;
}

default:{
printf("\n\n\nPogresan izbor! Pokusaj ponovo!\n\n\n");
break;
}
}
}
while(izbor!='d');

}
void dodaj(){


struct student *novi, *pom, *pred;


novi=(struct student*)malloc(sizeof(struct student));
printf("\n\n\nunesite podatke o studentu:\n\n\n");

printf("unesite ime studenta:");
fflush(stdin);
gets(novi->ime);

printf("\n\nunesite ocjenu studentu:");
scanf("%f",&novi->ocjena);
printf("\n\n");



if(glava==NULL){
glava=novi;
novi->veza=NULL;

}

else{
pom=glava;

while(pom!=NULL){

if(strcmp(pom->ime,novi->ime)>0){


if(pom==glava){
novi->veza=glava;
glava=novi;
break;
}
else{
pred->veza=novi;
novi->veza=pom;
break;
}
}

else{
if(pom->veza==NULL){
pom->veza=novi;
novi->veza=NULL;
}
}
pred=pom;
pom=pom->veza;
}
}
}
]
[ dume @ 12.07.2006. 13:01 ] @
imas dosta greska sa zagradama '{}' i ';' ,ispravi to za sad. nisam te dobro razumeo koj je tvoj problem. u koju listu hoces de smestis strukturu, jer hoces da pridruzis imena strukturnim tipovima? objasni mi problem ili jos bolje posalji mi zadatak pa kad ga budem uradio poslacu ti ga.
[ petar karacic @ 12.07.2006. 15:51 ] @
Ne nema ni jedne greske s {} i ; jedino na početku koda ima nepotrebna zagrada [ također i na kraju ] nemam pojma ni odakle ih.
Problem je u ovome
struct student {
char ime[20];
float ocjena; //broj s decimalnom točkom
struct student *veza;
} *glava=NULL;
Ja kompajliram i bildujem program i nema ni jedne greške ali kada unosim u program ocjenu s decimalnom točkom recimo 2,3 onda mi samo prekine rad programa i izbaci upozorenje dubug error i runtime error.

Kada imam ocjenu kao cjeli broj int ocjena;
Na primjer.

struct student {
char ime[20];
int ocjena; //cjeli broj
struct student *veza;
} *glava=NULL;


onda sve radi ok (naravno i u codu programa promjeni se unos ocjene iz scanf("%f",&novi->ocjena); u scanf("%d",&novi->ocjena);.).

Znači problem je u tome što neće nikako da mi program unosi brojeve s decimalnom točkom (čim unesem broj program se prekida), ali kada unosim cjeli broj sve je ok.
Ajd oprobaj ti u sebe pa vidi ima li ikakvo rjesenje.
P.S dodam i funkciju za ispis i sve ispisuje normalno kada je int ocjena


[ peromalosutra @ 18.07.2006. 16:23 ] @
Uvijek stavljaj kode izmedju code tagova i tako da neces imati problema sa prikazom koda na forumu.
Citat:
ali kada unosim u program ocjenu s decimalnom točkom recimo 2,3 ...

Ti si napisao 2,3 sa zarezom a ne sa tackom, mozda je u ovome problem, ako uneses zarez to ce biti dodjela pogresnog tipa (kao da dodjeljujes char) i to bi objasnjavalo runtime error. Dakle stavi na 2.3 umjesto 2,3
[ petar karacic @ 20.07.2006. 19:26 ] @
Nije u tome problem, unosim decimalne brojeve s točkom ali hvala na pokusaju.
Ima li itko ideju u čemu je problem, aajjjjjjjjjjjjjjjjjjde ljudi daj molim vas oprobajte rjesiti to.
[ mikson @ 23.07.2006. 17:57 ] @
Interesting....

Code:
printf("\n\nunesite ocjenu studentu:");
scanf("%f",&novi->ocjena);
printf("\n\n%f",novi->ocjena);



Ovako prolazi.... hm?!
[ petar karacic @ 26.07.2006. 16:34 ] @
E hvala ti, sada radi.
Najgolemije od toga je to što prije ono moje nije radilo a sada kada sam unio tvoj kod proradilo je ono tvoje, i kada sam opet vratio na svoje proradilo i moje. ČUDNO
Hvala jos jedanput mikson