Užduotis : Nr. 31 Į vienos juostos 12 vietų aikštelę automobiliai gali įvažiuoti ir išvažiuoti per rytų ir vakarų pusės duris. Įvažiuojant nurodomas automobilio Nr. ir pusė, iš kurios įvažiuojama. Jeigu iš įvažiavimo pusės vietų nėra, tai bandoma įvažiuoti (automatiškai) iš kitos pusės. Įvažiuojant pasirenkama ta pusė, kurioje mažiau automobilių užstoja įvažiavimą. Praleidę išvažiuojantįjį automobiliai grįžta atgal ta pačia tvarka. Turi būti galimybės • įvažiuoti į aikštelę; • išvažiuoti iš aikštelės nurodant automobilio Nr.; • atlaisvinti aikštelę; • išvesti automobilių skaičių aikštelėje ir tuščių vietų skaičių iš vienos ir kitos pusių. Programos aprašymas: Duomenų struktūrų, konstantų, sukurtų klasių ir kintamųjų aprašymas: Struktūros aprašymas C kalba: Struktūros grafinė iliustracija: typedef struct mas{ char *nr[7], *puse[10]; struct mas *kitas; } MAS; Konstantų ir sukurtųjų kintamųjų aprašymas: Pavadinimas Paskirtis Duomenų tipas MAS Duomenų struktūros mas duomenų tipo aprašymas Duomenų struktūra Programoje naudojamų kintamųjų aprašymas: Kintamojo pavadinimas Kintamojo paskirtis Duomenų tipas Priklausomybė R, V Pradinės ir pagrindinės rodyklės į sąrašą MAS Pagrindinė programa (main()); R1, V1, PAG Pagalbinė rodyklė į sąrašą MAS Pagrindinė programa (main()); ryta, vakar Įsiminti puse pro kurią įvažiuoja mašina Int (sveikojo tipo kintamieji) Pagrindinė programa (main()); viso Įvažiuojančių mašinų suma Int (sveikojo tipo kintamasis) Pagrindinė programa (main()); lvisov, lvisor Skaičiuoja laisvų vietų sk. Int (sveikojo tipo kintamasis) Pagrindinė programa (main()); taip1, taip2 Skaičiuoja ieškomų mašinų sk. Int (sveikojo tipo kintamasis) Pagrindinė programa (main()); nr[7],puse[10] Kintamieji į kuriuos įrašomi mašinos duomenys. Char tipo kintamieji Pagrindinė programa (main()); n Fiksuoja paspausto mygtuko reikšmę. Char tipo kintamieji Pagrindinė programa (main()); *ryt="rytu" Kintamasis su nurodyta reikšme skirtas tam, kad vėliau palygintume reikiamus duomenis Char tipo kintamieji Pagrindinė programa (main()); ies[7] Įvedama reikšmė pagal kurią vykdoma paieška Char tipo kintamieji Pagrindinė programa (main()); Meniu struktūros aprašymas: Programoje naudojamo meniu fragmentas ir trumpi komentarai kam kiekvienas meniu punktas reikalingas: clrscr(); printf("\n\n 1. Atvaziavo masina i garaza, iveskite jos duomenis"); // spaudžiamas vienetas kad įvestume duomenis. printf("\n\n 2. Vietos garaze:"); // dvejetas jei norime sužinoti apie aikštelėje esamas tuščias ir užimtas vietas. printf("\n\n 3. Parodyti kokios masinos yra garaze:"); // surandama mašina pagal numerį, kuri išvažiuoja ir ji „išimama" iš garažo. printf("\n\n 4. Atlaisvinti garaza"); // atlaisvinamas visas garažas, tarkim darbo pabaigoje. printf("\n\n 5. Surasti masina pagal numeri ir ja pasalinti"); // salinama surasta masina. printf("\n\n Paspauskite meniu skaiciu, o noredami baigti spauskite esc:"); // isėjimas iš meniu paspaudus mygtuką ‘esc‘. Pagrindinių duomenų struktūros apdorojimo algoritmų aprašymas: Case ‘1’ esantį algoritmą skiriame į duomenų įvedimą(A) (1 pav.) ir tų duomenų struktūros apdorojimą(B) (2 pav. ir 3 pav.): A) Clrscr(); printf("\n Nurodykite ivaziavusios masinos nr: "); scanf("%s",&nr); printf("\n Nurodykite masinos ivaziavimo puse r/v): "); scanf("%s",&puse); getch(); printf("\n\n %s, %s",nr,puse); // patikrinama palyg=strcmp(ryt,puse); if(palyg==0){ ryta++; }else{ vakar++; } viso=ryta+vakar; lvisor=6-ryta; lvisov=6-vakar; B) if (viso>12){ // duomenu struktūros apdorojimas clrscr(); printf("Grarazas jau pilnas"); getch(); }else{ if (ryta>=vakar){ if (R==NULL){ R=malloc (sizeof (MAS)); R->kitas=NULL; strcpy(R->nr,nr); strcpy(R->puse,puse); }else{ R1=R; //pagalbiniam R1 priskiriamas R while (R1->kitas!=NULL) R1=R1->kitas; R1->kitas=malloc(sizeof(MAS)); R1=R1->kitas; R1->kitas=NULL; strcpy(R1->nr,nr); strcpy(R1->puse,puse); } }else{ if (V==NULL){ V=malloc (sizeof (MAS)); V->kitas=NULL; strcpy(V->nr,nr); strcpy(V->puse,puse); }else{ V1=V; //pagalbiniam R1 priskiriamas R while (V1->kitas!=NULL) V1=V1->kitas; V1->kitas=malloc(sizeof(MAS)); V1=V1->kitas; V1->kitas=NULL; strcpy(V1->nr,nr); strcpy(V1->puse,puse); } } } B dalies blokinė schema (2 pav.): B dalies algoritmo (duomenų struktūros apdorojimo) grafinė iliustracija (pagrindinė schema) (3 pav.) : Case‘3‘ esančio algoritmo veikimo principą atvaizduojanti schema bei pats algoritmas (atvaizduotas po blokine schema 4 pav.): 4 pav. atvaizduojantis algoritmas: if (R == NULL && V==NULL){ clrscr(); printf ("\n Garazas tuscias. \n"); getch(); }else { R1=R; while (R1 != NULL){ printf ("\n \n %s masina ivaziavo is %s puses \t", &R1 -> nr, &R1->puse); getch(); R1 = R1 -> kitas; } V1=V; while (V1 != NULL) { printf ("\n %s masina ivaziavo is %s puses \t", &V1 -> nr, &V1->puse); getch(); V1 = V1 -> kitas; } } Case‘4‘ esančio algoritmo veikimo principą atvaizduojanti schema bei pats algoritmas (atvaizduotas po blokine schema 5 pav.): 5 pav. atvaizduojantis algoritmas: if (R==NULL && V==NULL) { clrscr(); printf("Garazas tuscias nera ka laisvinti"); getch(); }else { while(R!= NULL){ R1=R; R = R->kitas; free (R1); } while(V!=NULL) { V1=V; V = V->kitas; free (V1); } } ryta=0; vakar=0; clrscr(); printf("Garazas tuscias"); getch(); Case‘5‘ esančio algoritmo veikimo principą atvaizduojanti schema bei pats algoritmas (atvaizduotas po blokine schema 6 pav.): 6 pav. atvaizduojantis algoritmas: taip1=0; taip2=0; clrscr(); printf("\n Iveskite masina kurios ieskote: "); getch(); scanf("%s",&ies); if (R == NULL && V==NULL){ clrscr(); printf ("\n Garaze visai nera jokiu masinu. \n"); getch(); }else { R1=R; PAG = NULL; while (R1 != NULL){ if (strcmp(ies,R1->nr)==0) { taip1++; if (PAG==NULL) { PAG = R1; R1 = R1->kitas; R = R1; free(PAG); PAG = NULL; }else{ PAG->kitas = R1->kitas; free(R1); R1 = PAG->kitas; } }else{ PAG = R1; R1 = R1 -> kitas; } } V1=V; PAG = NULL; while (V1 != NULL){ if (strcmp(ies,V1->nr)==0) { taip2++; if (PAG==NULL) { PAG = V1; V1 = V1->kitas; V = V1; free(PAG); PAG = NULL; }else{ PAG->kitas = V1->kitas; free(V1); V1 = PAG->kitas; } }else{ PAG = V1; V1 = V1 -> kitas; } } if (taip1>0 ||taip2>0){ printf("Tokia masina yra"); getch(); }else{ printf("Tokios masinos garaze nera"); getch(); } } Išvados Atliktame darbe, darbo struktūros suformavimas yra pagrįstas dviejų eilių sukūrimu. Programoje nėra naudojamos funkcijos ar procedūros. Norint gražiai suformuoti struktūrą ir, kad sukurta programa sklandžiai atliktų savo darbą, buvo vykdoma viskas paeiliui. Programa geba atlikti reikiamus uždavinius, kurių reikalauja užduotis. Literatūra 1. Blonskis J. ir kt Programavimas C ++. Technologija, 2005. 2. Juozapavičius A. Duomenų struktūros ir algoritmai. – Vilnius: Vilniaus universiteto leidykla, 1997. 3. Programavimas. – Kaunas: Technologijos, 1999. Priedai: Čia pateikiamas programos pilnas algoritmas: #include
Šį darbą sudaro 1437 žodžiai, tikrai rasi tai, ko ieškai!
★ Klientai rekomenduoja
Šį rašto darbą rekomenduoja mūsų klientai. Ką tai reiškia?
Mūsų svetainėje pateikiama dešimtys tūkstančių skirtingų rašto darbų, kuriuos įkėlė daugybė moksleivių ir studentų su skirtingais gabumais. Būtent šis rašto darbas yra patikrintas specialistų ir rekomenduojamas kitų klientų, kurie po atsisiuntimo įvertino šį mokslo darbą teigiamai. Todėl galite būti tikri, kad šis pasirinkimas geriausias!
Norint atsisiųsti šį darbą spausk ☞ Peržiūrėti darbą mygtuką!
Mūsų mokslo darbų bazėje yra daugybė įvairių mokslo darbų, todėl tikrai atrasi sau tinkamą!
Panašūs darbai
Atsisiuntei rašto darbą ir neradai jame reikalingos informacijos? Pakeisime jį kitu nemokamai.
Pirkdamas daugiau nei vieną darbą, nuo sekančių darbų gausi 25% nuolaidą.
Išsirink norimus rašto darbus ir gauk juos akimirksniu po sėkmingo apmokėjimo!