1 /* autor: Krzysztof Zmijewski
  2  *
  3  * prog: " kolejka.c " - Program zapisuje/zdejmuje liczby do kolejki z uzyciem tablicy
  4  *			tzw. kolejka FIFO
  5  * 
  6  * Kompilator: gcc 4.3.3
  7  */
  8 
  9 /*
 10  * This program is free software; you can redistribute it and/or modify
 11  * it under the terms of the GNU General Public License as published by
 12  * the Free Software Foundation; either version 2 of the License, or
 13  * (at your option) any later version.
 14  * 
 15  * This program is distributed in the hope that it will be useful,
 16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 18  * GNU General Public License for more details.
 19  * 
 20  * You should have received a copy of the GNU General Public License
 21  * along with this program; if not, write to the Free Software
 22  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 23  * MA 02110-1301, USA.
 24  * 
 25  */
 26 
 27 #include <stdio.h>
 28 #include <ctype.h>
 29 
 30 const int rozmiarKolejki = 5;  	/* rozmiar kolejki */
 31 int liczbaElementow = 0; 		/* poczatkowa ilosc elemetow */
 32 
 33 /* wstawienie elementu do kolejki */
 34 int enqueue(int kolejka[], int nowy) {  
 35 	
 36 	if(liczbaElementow < rozmiarKolejki) {	
 37 		kolejka[liczbaElementow] = nowy;		/* dodaj do kolejki */
 38 		liczbaElementow++;
 39 	
 40 	
 41 	} else if (full(kolejka)==0) {	/* kolejka jest juz pelna */
 42 			printf("przepelnienie kolejki!!! \n");
 43 	} 
 44 }
 45 
 46 /* pobranie elementu z kolejki */
 47 int dequeue(int kolejka[]) {
 48 	
 49 	if(liczbaElementow != 0) {		/* zdejmij z kolejki */
 50 		kolejka[liczbaElementow+1] =0;  /* zdjety element zerujemy */
 51 		liczbaElementow--;
 52 	} else if (empty(kolejka)==1) {	/* kolejka jest juz pusta */
 53 			printf("kolejka jest pusta!!! \n");
 54 	}
 55 }
 56 
 57 /* sprawdzamy czy kolejka jest pusta */
 58 int empty(int kolejka[]) {
 59 
 60 	if(liczbaElementow == 0) {  /* jesli elementy na stosie sa rowne 0 to: */
 61 		return 1; /* pusty */
 62 	} else {	
 63 		return 0; /* pelny */
 64 	}
 65 }
 66 
 67 /* sprawdzamy czy kolejka jest pelna */
 68 int full(int kolejka[]) {
 69 
 70 	if(liczbaElementow == 0) { /* jesli caly stos jest pelny to: */
 71 		return 1; /* pusty */
 72 	} else {	
 73 		return 0; /* pelny */
 74 	}
 75 }
 76 
 77 /* wyswietlamy kolejke */
 78 int wyswietl(int kolejka[]) {
 79 int j;
 80 
 81 	for(j=0; j<liczbaElementow; j++) { /* wyswietlamy kazdy element tablicy */
 82 		printf("Elementy znajdujace sie w kolejce: %d ", kolejka[j]);
 83 	}
 84 	puts("\n");
 85 return;
 86 }
 87 
 88 int main(void) {
 89 int err, i, ch, kolejka[rozmiarKolejki];
 90 char opcja;
 91 
 92 system("clear");	/* instrukcja systemowa czyszczaca ekran */
 93 
 94 	while(1) {	
 95 		printf("\n\t\tMENU:\n");
 96 		printf("'=' - by dodac element do kolejki\n");
 97 		printf("'-' - by zdjac element do kolejki\n");
 98 		printf("'w' - by wyswietla kolejkie\n");
 99 		printf("'q' - wyjscie z programu\n\nPodaj opcje: ");
100 		
101 			scanf("%s", &opcja);	
102 		switch(opcja) {
103 	case '=':	/* opcja dodawania elementu */
104 		printf("podaj liczbe: ");
105 			err=scanf("%d", &ch);
106 		if (err==1) {	/* warunek sprawdza czy scanf zwrocil wartosc 1 czyli ze pobral liczbe */
107 			enqueue(kolejka, ch);
108 			break;
109 		} else if (err==0) {	/* jezeli scanf pobral znak nastapi warunkowe zakonczenie programu */
110 				printf("Wpisano znak... Nastapilo wyjscie z programu !!!\n\n");
111 			return 0;	
112 		}
113 	case '-':		/* opcja zdejmowania elementu */
114 		dequeue(kolejka);
115 			break;
116 	case 'w':	/* opcja wyswietlania kolejki */
117 		wyswietl(kolejka);
118 			break;
119 	case 'q':	/* opcja wyjscia z programu */
120 		printf("\n\tBye...\n\n");
121 		return 0;
122 		}
123 	}
124 
125 	for(i=0; i<rozmiarKolejki; i++) /* tworzymy kolejkie o rozmiarze "rozmiarKolejki" o stalym rozmiarze */
126 		kolejka[i] =0;	/* zerujemy kazdy element tablicy (kolejki) */
127 	
128 return 0;
129 }


syntax highlighted by Code2HTML, v. 0.9.1