zadatak sa listama

Teme vezane za console/GUI programiranje u C/C++ jeziku
2 post(ov)a • Stranica: 1/1.

zadatak sa listama

PostPostao/la maricuj » 08 lip 2013, 19:30

Molim vas za pomoc:

Napišite program koji u jednostruko povezanoj listi sadrži podatke o predmetima
koji se predaju na nekom fakultetu: šifru predmeta, naziv predmeta,
broj sati predavanja tjedno i broj sati vježbi tjedno. Lista je sortirana
silazno prema šifri predmeta. Napišite funkciju za unos novog
predmeta tako da je lista sortirana. Funkcija treba vratiti 1 ako je zapis
uspješno dodan u listu, a 0 inace, a prototip funkcije treba biti:
int ubaci(zapis *&predmeti, zapis *noviPredmet);
Interakcija korisnika s programom odvija se sve dok on to želi. Nakon
svakog unosa, ispisuje se proširena lista.


cpp code
#include <iostream>
using namespace std;
struct zapis
{
int sifra;
char naziv[50];
int predavanja;
int vjezbe;
zapis *veza;
};
void ispis(zapis *&glava) {
zapis *trenutni=glava;
while(trenutni)

{
cout<<trenutni->sifra<<" ";
trenutni=trenutni->veza;
}}
void dealokacija(zapis *glava){
zapis *trenutni=glava;
while(trenutni){
zapis *brisanje = trenutni;
trenutni=trenutni->veza;
delete brisanje;
}
}
int ubaci(zapis *&predmeti, zapis *noviPredmet)
{

}
int main()
{
zapis *glava=0;
char odg;
do
{
zapis * novi = new zapis;
cout<<"unesi sifra: " ;
cin>>novi->sifra;
cout<<"unesi naziv: " ;
cin>>novi->naziv;
cout<<"unesi predavanja: " ;
cin>>novi->predavanja;
cout<<"unesi vjezbe: " ;
cin>>novi->vjezbe;


if (glava == 0)
{
glava= novi;
novi->veza=0;
}
else {
zapis *trenutni=glava, *prethodni=0;
while(trenutni && trenutni->sifra< novi->sifra)
{
prethodni=trenutni;
trenutni= trenutni->veza;
}
novi->veza=trenutni;
if(prethodni!=0)
prethodni->veza=novi;
else
glava=novi;

}
cout<<"zelite li jos jedan zapis?";
cin>>odg;
}
while(odg == 'd');

ispis(glava);
dealokacija(glava);
return 0;
}


fakat ne kuzin sta triba u toj funkciji int ubaci, ako moze samo usmjerenje sta pisat tu?
Hvala! :D

Re: zadatak sa listama

PostPostao/la HepeK » 18 lip 2013, 14:21

Sorry ako je kasno za odgovor ali očito da funkcija prilikom dodavanja treba i da sortira.

Pretpostavimo da su dveć dodani predmeti sortirani npr:

Sifra Predmet
051 Naziv predmeta 1
062 Naziv predmeta 2


I ti sada zelis dodati Predmet 3 sa sifrom 059. ta funkcija mora da doda poredmet ali na mjesto između predmeta 1 i predmeta 2.

Nakon dodavanja treba da bude ovakva situacija:

Sifra Predmet
051 Naziv predmeta 1
059 Naziv predmeta 3
062 Naziv predmeta 2

Nadam se da je jasnije.
"Ko nema u glavi ima na internetu"
Što čujem - poštujem, dok ne vidim - ne vjerujem.


2 post(ov)a • Stranica: 1/1.

Na mreži

Trenutno korisnika/ca: / i 1 gost.