Close
Duke shfaqur rezultatin -9 deri 0 prej 2
  1. #1
    i/e regjistruar Maska e arianit_real
    Anėtarėsuar
    07-08-2006
    Postime
    134

    Pak ndihnme !!!

    A mund te jap idene ndokush pak a shume se si me perfundu kete program ...

    Te shkruhet nje program qe:

    1. Mundeson regjistrimin deri ne 20 studente (te perdoret nje vektor)
    2. Per secilin student ruhen: Emri, Mbiemri, Qyteti, Nota mesatare(struct)

    Pasi qe shfrytezuesi te kete dhene listen me studente, programi kryen keto veprime:

    a. Shtypjen ne ekran t; listes komplete, per shembull te formatuar si me poshte:

    .------------------------------------------.
    |Nr. |Emri |Mbiemri |Nota Mesatare|
    |----|----------|------------|-------------|
    |1 |Arta |Hoxha |8.3 |
    |----|----------|------------|-------------|
    |2 |Lule |Gashi |9.2 |
    |----|----------|------------|-------------|
    |3 |Arben |Hoxha |7.3 |
    |----|----------|------------|-------------|
    |4 |Agron |Gashi |9.3 |
    *------------------------------------------*

    ....

    (Per shtypje te listes te perdoret nje funksion void)

    b. Te shtypet ne ekran Emri, Mbiemri dhe Nota Mesatare e studentit me noten mesatare me te larte

    (Per shtypje te perdoret nje funksion qe merr parameter nje variabel te struktures studenti)

    c. Shtypjen e listes se studenteve te renditur sipas notes mesatare

    d. Shtypjen e listes se studenteve te renditur sipas alfabetit

    Sqarime:
    Ne program duhet te perdoren: konstantet, variablat globale, vektoret, strukturat, funksionet.

  2. #2
    i/e regjistruar
    Anėtarėsuar
    23-02-2010
    Postime
    713
    JE me fat se kam bere nje detyre pak a shume te tille per nje person tjeter,
    ja ku e ke kodin, eshte i komentuar ne detaje, merre shikoje, studioje dhe modifikoje per te permbushur kerkesat e tua.

    Kodi PHP:
    #include <stdlib.h>
    #include <stdio.h>

    /*
    Keshillohet qe per arsye te vizualizimit korrekt dhe pa shtremberime te 
    tabeles me te dhenat e listes dritarja(console) e programit te kete 
    nje gjeresi te bollshme prej 110-120 germa
    */

    /*
    * ne baze te sistemit operativ percaktojme komanden per te fshire ekranin
    * per fat te keq nuk ka asnje standart per te kryer kete veprim ne menyre
    * te thjeshte dhe te pavarur nga platforma
    * nese kemi te bejme me WINDOWS komanda eshte "cls"
    * perndryshe perdorim komanden "clear" per sistemet UNIX(Linux,Solaris,MacOS,etj..).
    * Komandat e sistemit(prompt) ekzekutohen nepermjet funksionit system()

    */
    //per windows
    const charpastro_ekranin "cls"
    //per sistemet unix like
    //const char* pastro_ekranin = "clear";



    //komandat
    charcmd_shto="shto";
    charcmd_shiko="shiko";
    charcmd_modifiko="modifiko";
    charcmd_fshi="fshi";
    charcmd_fshi_listen="rifillo";
    charcmd_ruaj_skedar="ruaj";
    charcmd_lexo_skedar="lexo"
    charcmd_dil="dil";


    //Struktura qe permban informacionet mbi personin si dhe nje fushe teper qe 
    //permban nje pointer per tek nje element tjeter i tipit person.
    struct list_element {
       
    char emri[40]; //maksimumi 40 germa
       
    char mbiemri[40];//maksimumi 40 germa
       
    char email[40]; //maksimumi 40 germa
       
    char telefoni[16]; //maksimumi 16 germa(shifra)
       
    char adresa[60]; //maksimumi 60 germa
       
    struct list_elementnext//pointer per tek elementi i rradhes
    };

    //krijojme tipin e ri "person"
    typedef struct list_element person;

    //per lehtesi krijojme edhe tipin pointer per strukturen person
    typedef personp_person;

    /*
    funksion qe krijon nje element te ri dhe na jep referimin(pointer) e struktures
    funksioni "malloc()" rezervon nje hapesire ne memorie me aq byte sa eshte 
    madhesia e struktures person, qe ne rastin tone eshte shuma e madhesive te 
    elementeve te saj struktura nuk eshte asgje tjeter  ve&ccedil; se nje array 
    heterogjen ku elementet jane te tipeve dhe madhesive te ndryshme.
    Kjo hapesire ne fillim eshte e pa tipizuar, pra e tipit "void" keshtu 
    qe bejme konvertim te tipit nga void ne p_person.
    Funksioni kthen nje pointer qe referon kete hapesire memorie bosh qe 
    pret te mbushet me te dhena 
    */
    p_person krijoElementTeRi(){
        return ((
    p_person)malloc(sizeof(person)));
    }

    /*
    funksion qe mbush me te dhena te marra nga inputi elementin personi.
    nese update eshte 1 atehere funksioni kryen modifikimin e nje elementi
    qe ka te dhena. Nese futen te dhena per nje element te caktuar gjate 
    modifikimit atehere funksioni e modifikon fushen, ne te kundert 
    nuk e modifikon duke lene vleren qe kishte.
    */
    void mbusheElementinNgaInput(p_person personi,int update){
        
    //string ndihmese e perkoheshme ku do te marrim input
        
    char temporary[60]; 
        
        
    printf("Shkruaj emrin: "); 
        
    gets(temporary); //marr input
        
    if(update){
            if(
    strlen(temporary)!=0){
                
    //kopjoj tek fusha vleren e "temporary"
                
    strcpy(personi->emri,temporary);
            }
        }else{
            
    strcpy(personi->emri,temporary);
        }
        
        
    printf("Shkruaj mbiemrin: "); 
        
    gets(temporary); //marr input
        
    if(update){
            if(
    strlen(temporary)!=0){
                
    //kopjoj tek fusha vleren e "temporary"
                
    strcpy(personi->mbiemri,temporary);
            }
        }else{
            
    strcpy(personi->mbiemri,temporary);
        }
        
        
    printf("Shkruaj adresen email: "); 
        
    gets(temporary); //marr input
        
    if(update){
            if(
    strlen(temporary)!=0){
                
    //kopjoj tek fusha vleren e "temporary"
                
    strcpy(personi->email,temporary);
            }
        }else{
            
    strcpy(personi->email,temporary);
        }
        
        
    printf("Shkruaj telefonin: "); 
        
    gets(temporary); //marr input
        
    if(update){
            if(
    strlen(temporary)!=0){
                
    //kopjoj tek fusha vleren e "temporary"
                
    strcpy(personi->telefoni,temporary);
            }
        }else{
            
    strcpy(personi->telefoni,temporary);
        }
        
        
    printf("Shkruaj adresen: "); 
        
    gets(temporary); //marr input
        
    if(update){
            if(
    strlen(temporary)!=0){
                
    //kopjoj tek fusha vleren e "temporary"
                
    strcpy(personi->adresa,temporary);
            }
        }else{
            
    strcpy(personi->adresa,temporary);
        }
        
    }

    //afishon listen
    void afishoListen(p_person lista) {
        
    int i;
        
    //perdorim nje variable qe e nisim me vleren e elementit te pare te listes 
        
    p_person iterator=lista
        
        if(
    iterator==NULL){
            
    printf("Lista eshte bosh\n");
        } else {
            
    printf("%-15s %-15s %-25s %-20s %-35s\n","Emri","Mbiemri","E-Mail","Telefoni","Adresa");
            for(
    i=0;i<110;i++) printf("-");
            
    printf("\n");
            while(
    iterator!=NULL){ //per sa kohe elementi nuk eshte null
                
    printf("%-15s %-15s %-25s %-20s %-35s\n",iterator->emri,iterator->mbiemri,iterator->email,iterator->telefoni,iterator->adresa);
                
    //spostohemi tek elementi i rradhes
                
    iterator=iterator->next;
            }
        }
        
    printf("\n");
    }

    //fshin element
    void fshiElement(p_person element){
        
    printf("Elementi qe do te fshihet eshte %s %s\n"element->emrielement->mbiemri);
        
    free(element);
    }      

    //fshin listen
    void fshilist(p_person lista) {
        
    p_person aux//auxiliary variable, ndryshore ndihmese
        
    p_person iterator=lista;
        
        while (
    iterator != NULL) {
           
    aux iterator-> next//shpetojme next
           
    fshiElement(iterator); //fshijme elementin e tanishem 
           
    iterator=aux//elementi qe ishte next tani eshte i pari
        
    }
    }

    /*
    Funksioni qe gjen nje element dhe e fshin nga lista
    gjithashtu kthen listen e modifikuar
    */
    p_person gjejDheFshi(p_person listacharemricharmbiemri){
        
    p_person iterator=lista;
        
    p_person prev=iterator//ketu do te shpetojme elementin para-ardhes
        
    p_person ret_value//vlera qe do te permbaje listen e re
        
        
    while(iterator!=NULL){
            
    //nese elementi i tanishem ka emrin=emri dhe mbiemrin=mbiemer
            
    if(strcmp(emri,iterator->emri)==&& strcmp(mbiemri,iterator->mbiemri)==0){
                if(
    prev==NULL){ //nese ky eshte elementi i pare
                    
    ret_value=iterator->next;
                    
    fshiElement(iterator);
                    return 
    ret_value;
                }else{
                    
    prev->next=iterator->next//lidhim elementin para-ardhes me ate pas-ardhes
                    
    fshiElement(iterator);
                    return 
    lista//koka e listes eshte po e njejta prandaj kthejme vete listen
                
    }
            }else{
                
    prev=iterator;
                
    iterator=iterator->next;
            }
        }
        
    //nese nuk e ka gjetur elementin qe permban ato te dhena thjesht kthjejme listen
        
    return lista;
    }


    /*
    Funksioni qe gjen nje element sipas emrit dhe mbiemrit dhe modifikon te dhenat
    */
    void gjejDheModifiko(p_person listacharemricharmbiemri){
        
    p_person iterator=lista;
        
        while(
    iterator!=NULL){
            
    //nese elementi i tanishem ka emrin=emri dhe mbiemrin=mbiemer
            
    if(strcmp(emri,iterator->emri)==&& strcmp(mbiemri,iterator->mbiemri)==0){
                
    mbusheElementinNgaInput(iterator,1);
                return;
            }else{
                
    iterator=iterator->next;
            }
        }
    }

    /*
    Funksioni qe shton nje element te ri ne liste
    */
    p_person shtoElement(p_person listap_person element){
        
    p_person iterator=lista;
        
        
    //elementi i fundit duhet te kete patjeter fushen "next" NULL
        
    element->next=NULL;
        
        
    //nese lista eshte bosh atehere elementi behet vete lista
        
    if(lista==NULL) return element;
        
        
    //shkojme deri tek elementi i fundit
        
    while(iterator->next!=NULLiterator=iterator->next;
        
        
    iterator->next=element;
        
        return 
    lista;
    }

    void ruajListenNeSkedar(p_person lista){
        
    FILE *skedari;
        
    char emri_skedarit[25];
        
        
    p_person iterator=lista
        
        if(
    iterator==NULL){
            
    printf("Lista eshte bosh, nuk mund t'a ruaj ne skedar!\n");
        } else {
            
    printf("Shkruaj emrin e skedarit ne te cilin do te ruash te dhenat:\n");
            
    gets(emri_skedarit); //marrim ne input emrin e skedarit
            
            //hapim skedarin ne binary mode me te drejta shkrimi
            //nese skedari nuk ekziston do te krijohet automatikisht
            
    skedari=fopen(emri_skedarit,"wb");
            
            while(
    iterator!=NULL){ //per sa kohe elementi nuk eshte null
            
                /*
                * shkruajme ne skedar te gjithe elementin
                * parametri i pare eshte nje pointer i nje array te tipit void
                * pra i pergjithshem
                * parametri i dyte eshte madhesia ne byte e nje elementi te array
                * ne rastin tone nje element eshte nje byte, pra madhesia eshte 1
                * parametri i trete eshte numri i elementeve te array
                * ne rastin tone eshte madhesia ne byte e struktures "list_element"
                * parametri i katert eshte skedari  
                */
                
    fwrite(iterator,1,sizeof(struct list_element),skedari);
                
                
    //spostohemi tek elementi i rradhes
                
    iterator=iterator->next;
            }
            
            
    //me anen e ketij funksioni detyrojme sistemin qe te shkruaje te dhenat 
            //fizikisht ne disk, zakonisht per skedare te vegjel sistemi vonon
            //shkrimin ne disk per te mos degraduar performancen e sistemit
            
    fflush(skedari);
            
    //mbyllim skedarin
            
    fclose(skedari);
        }
        
    }

    p_person lexoListenNgaSkedari(){
        
    p_person personi,lista=NULL;
        
    FILE *skedari;
        
    int size;
        
    char emri_skedarit[25];
        
    printf("Shkruaj emrin e skedarit nga i cili do te lexosh te dhenat:\n");
        
    gets(emri_skedarit); //marrim ne input emrin e skedarit
            
        //hapim skedarin ne binary mode me te drejta leximi
        
    skedari=fopen(emri_skedarit,"rb"); 
        
        
    //nje teknike per te kontrolluar madhesine e skedarit
        
    fseek(skedari,0,SEEK_END); //pozicionohemi ne fund te skedarit
        
    size=ftell(skedari); //kjo na jep pozicionin , rrjedhimisht madhesine e skedarit
        
        
    fseek(skedari,0,SEEK_SET); //ripozicionohemi ne fillim gati per te lexuar
        
        
    if(size==0){
            
    printf("Skedari eshte bosh, nuk mund t'a lexoj kete skedar!\n");
        } 
        
    //nese madhesia e dosjes nuk eshte nje shumefish i madhesise se struktures
        //atehere skedari nuk eshte i vlefshem
        
    else if(size%sizeof(struct list_element)!=0){
            
    printf("Skedari nuk eshte i vlefshem!\n");
        } else {
            
            while(
    ftell(skedari)<size){ //per sa kohe nuk kemi arritur fundin e skedarit
                
    printf("po krijoj nje element te ri\n");
                
    //krijo nje element te ri bosh
                
    personi=krijoElementTeRi();
                
                
    /*
                * lexojme nga skedari sizeof(struct list_element) byte
                * qe kopjohen tek struktura personi
                * parametri i dyte eshte madhesia ne byte e nje elementi te array
                * ne rastin tone nje element eshte nje byte, pra madhesia eshte 1
                * parametri i trete eshte numri i elementeve te array
                * ne rastin tone eshte madhesia ne byte e struktures "list_element"
                * parametri i katert eshte skedari  
                */
                
    fread(personi,1,sizeof(struct list_element),skedari);
                
                
    //shtojme elementin tek lista
                
    lista=shtoElement(lista,personi);
            }
            
            
    //mbyllim skedarin
            
    fclose(skedari);
        }
        return 
    lista;
    }

    //test
    int main(){
        
    p_person lista=NULL;
        
    p_person personi;
        
    char emri[40],mbiemri[40],komanda[10]; //input per te gjetur elementet
        
        //cikel infinit deri sa te jet dhene komanda e daljes
        
    while(1){
            
    printf("<komanda>");
            
    gets(komanda);
            
            if(
    strcmp(komanda,cmd_shto)==0) {
                
    personi=krijoElementTeRi();
                
    mbusheElementinNgaInput(personi,0); 
                
    lista=shtoElement(lista,personi);
                
    system(pastro_ekranin);
                
    afishoListen(lista);
                
            } else if(
    strcmp(komanda,cmd_shiko)==0) {
                
    system(pastro_ekranin);
                
    afishoListen(lista);
                
            } else if(
    strcmp(komanda,cmd_modifiko)==0) {
                
    system(pastro_ekranin);
                
    printf("Shkruaj emrin dhe mbiemrin e elementit qe do te modifikosh!\n");
                
    printf("Emri:");
                
    gets(emri);
                
    printf("Mbiemri:");
                
    gets(mbiemri);
                
    printf("Shkruaj te dhenat e reja te fushave, ose thjesht 'ENTER' per te mos modifikuar nje fushe!\n");
                
    gjejDheModifiko(lista,emri,mbiemri);
                
    system(pastro_ekranin);
                
    afishoListen(lista);
        
            } else if(
    strcmp(komanda,cmd_fshi)==0) {
                
    system(pastro_ekranin);
                
    printf("Shkruaj emrin dhe mbiemrin e elementit qe do te fshish!\n");
                
    printf("Emri:");
                
    gets(emri);
                
    printf("Mbiemri:");
                
    gets(mbiemri);
                
    gjejDheFshi(lista,emri,mbiemri);
                
    system(pastro_ekranin);
                
    afishoListen(lista);
                
            }else if(
    strcmp(komanda,cmd_fshi_listen)==0) {
                
    fshilist(lista);
                
    system(pastro_ekranin);
                
            } else if(
    strcmp(komanda,cmd_ruaj_skedar)==0) {
                
    system(pastro_ekranin);
                
    ruajListenNeSkedar(lista);
                
    system(pastro_ekranin);
                
            } else if(
    strcmp(komanda,cmd_lexo_skedar)==0) {
                
    lista=lexoListenNgaSkedari();
                
    afishoListen(lista);
                
            } else if(
    strcmp(komanda,cmd_dil)==0) {
                
    //dil nga cikli duke dale nga programi
                
    break;
                
            } else {
                
    system(pastro_ekranin);
                
    printf(" Komandat jane:\n");
                
    printf("--------------------------------------------\n");
                
    printf("shto    -> Shto nje rekord te ri ne liste.\n");
                
    printf("shiko   -> Vizualizo listen.\n");
                
    printf("modifiko-> Modifiko nje rekord.\n");
                
    printf("fshi    -> Fshi nje rekord.\n");
                
    printf("ruaj    -> Ruaj listen ne nje skedar.\n");
                
    printf("lexo    -> Lexo listen nga nje skerar.\n");
                
    printf("rifillo -> Fshi te gjithe listen.\n"); 
                
    printf("dil     -> Dil nga programi.\n");
            }
        }
        

    I support Papa Joseph Ratzinger.
    Me mire nje armik i zgjuar se nje mik budalla.

Regullat e Postimit

  • Ju nuk mund tė hapni tema tė reja.
  • Ju nuk mund tė postoni nė tema.
  • Ju nuk mund tė bashkėngjitni skedarė.
  • Ju nuk mund tė ndryshoni postimet tuaja.
  •