[ Miladinovic @ 30.01.2009. 13:55 ] @
Pozdrav,

Trebam da rešim problem koji izgleda ovako: Unositi studente (ime, prezime,ocenu) sortirano u listu po sledećim kriterijumima:
1. Po prosečnoj oceni;
2.Ukoliko je prosečna ocena ista kod studenata, njih sortirati leksikografski po imenu

Ja sam uradio samo za prosečnu ocenu, i posebno da sortira leksikografski, ali ne uspevam da uradim kombinaciju da radi kako treba, pa molim za pomoć.

Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _cvor
{
    char ime[100];
    char prezime[100];
    float ocena;
    struct _cvor *sl;
}CVOR;

CVOR* naparavi_cvor(char ime[],char* prezime,float ocena)
{
    CVOR*novi=(CVOR*)malloc(sizeof(CVOR));
    if (novi==NULL) exit(-1);
    strcpy(novi->ime,ime);
    strcpy(novi->prezime,prezime);
    novi->ocena=ocena;
    return novi;
}

void ubaci_na_pocetak_ime(CVOR**pl,char* ime,char*prezime,float ocena)
{
    CVOR*novi=naparavi_cvor(ime,prezime,ocena);

    if (*pl==NULL || strcmp(ime,(*pl)->ime)<0)
    {
        novi->sl=*pl;
        *pl=novi;
        return;
    }

    CVOR*t;
    for (t=*pl;t->sl!=NULL && strcmp(ime,t->sl->ime)>0;t=t->sl);
    novi->sl=t->sl;
    t->sl=novi;
}

void ubaci_na_pocetak_prosek(CVOR**pl,char* ime,char*prezime,float ocena)
{
    CVOR*novi=naparavi_cvor(ime,prezime,ocena);
    if (*pl==NULL || ocena > (*pl)->ocena)
    {
        novi->sl=*pl;
        *pl=novi;
        return;
    }
    CVOR*t;
    for (t=*pl;t->sl!=NULL && t->sl->ocena > ocena;t=t->sl);
    novi->sl=t->sl;
    t->sl=novi;
}

void ispis_liste(CVOR*l)
{
    CVOR*t;
    for (t=l;t!=NULL;t=t->sl)
        printf("%s\t%s\t%f\n",t->ime,t->prezime,t->ocena);
}

void oslobodi(CVOR*l)
{

    while (l)
    {
        CVOR*tmp=l->sl;
        free(l);
        l=tmp;
    }

}

int main()
{
    CVOR*l=NULL;
    CVOR*m=NULL;
    char ime[100];
    char prezime[100];
    float ocena;
    int i;
    for (i=0;i<3;i++)
    {
        printf("\nUnesite Ime Studenta:");
        scanf("%s",&ime);
        printf("\nUnesite Prezime Studenta:");
        scanf("%s",&prezime);
        printf("\nUnesite Prosecnu Ocenu:");
        scanf("%f",&ocena);
        ubaci_na_pocetak_ime(&l,ime,prezime,ocena);
        ubaci_na_pocetak_prosek(&m,ime,prezime,ocena);
    }
    printf("\n\n---------Ispis leksikografski po imenima----------\n");
    ispis_liste(l);
    printf("\n\n-----------Ispis po prosecnoj oceni-----------\n");
    ispis_liste(m);

    oslobodi(l);
    oslobodi(m);



    return 0;
}

[ dmilicev @ 28.03.2018. 08:01 ] @
http://dmilicev.freehostia.com...ing_string_int_float_v2.c.html
[ Branimir Maksimovic @ 28.03.2018. 11:08 ] @
Sta fali std::list? Osim ako nije excercize implementacija liste....
[ X Files @ 28.03.2018. 11:21 ] @
Tema je pokrenuta pre 111 meseci, ali svejedno, ako je rešenje ponuđeno - onda OK. Da, najčešće se radilo o vežbama na C jeziku.
[ Branimir Maksimovic @ 28.03.2018. 11:51 ] @
Heh, sad tek videh od kad je ;)
Ja video odgovor a nisam pogledao kad je pokrenuto pitanje ;p
[ Mihajlo Cvetanović @ 28.03.2018. 12:39 ] @
Koja li je verovatnoća da u Srbiji postoje dva odrasla čoveka imena Dragan Milićev, koji se bave kompjuterima? Jedan, profesor, postavlja zadatke studentima, a drugi omogućava studentima da ne muče mnogo svoje glavice, preuzimajući rešenja s interneta.
[ X Files @ 28.03.2018. 12:41 ] @
To je i meni palo na pamet... Mislim da je ipak koincidencija (ili neka rodbinska veza).

Pogledaj kod na linku koji je ostavio, ima neka struktura sa imenima i godištima. Otuda pretpostavka.

ALI ČLAN BROJ: 3501 !!!

Povlačim reč.