Rad

Riešenie


Úloha 14

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

typedef struct uloha {
	char nazov[30];
	struct uloha *dalsi;
} TUloha;

------------------------------------------------------------------------------
void pridaj(TUloha **z, TUloha **k)
{
	TUloha *p;

	clrscr();

	if (*z == NULL) {
		*z = (TUloha*)malloc(sizeof(TUloha));
		printf("nazov ulohy: ");
		gets((*z)->nazov);
		(*z)->dalsi = NULL;
		*k = *z;
	}
	else {
		p = (TUloha*)malloc(sizeof(TUloha));
		printf("nazov ulohy: ");
		gets(p->nazov);
		p->dalsi = NULL;
		(*k)->dalsi = p;
		(*k) = p;
	}
}
------------------------------------------------------------------------------
void vypis(TUloha *z1, TUloha *z2)
{
	clrscr();
	printf("Zoznam uloh – Front 1\n");
	while (z1 != NULL) {
		printf("\nuloha: %s", z1->nazov);
		z1 = z1->dalsi;
	}

	printf("\n\nZoznam uloh – Front 2\n");
	while (z2 != NULL) {
		printf("\nuloha: %s", z2->nazov);
		z2 = z2->dalsi;
	}
	getch();
}
------------------------------------------------------------------------------
void vybavenie(TUloha *z1, TUloha *z2) /* „tlač“ úloh */
{
	TUloha *pom;

	clrscr();
	printf("Prebieha tlac!!!\n");
	while (z1 != NULL) {
		pom = z1;
		z1  = z1->dalsi;
		printf("\nTlacim z F1:  %s", pom->nazov);
		free((void*)pom);
	}

	while (z2 != NULL) {
		pom = z2;
		z2  = z2->dalsi;
		printf("\nTlacim z F2:  %s", pom->nazov);
		free((void*)pom);
	}

	getch();
}
------------------------------------------------------------------------------
int main(void)
{
	TUloha *zac1, *kon1;  /* prvý front */
	TUloha *zac2, *kon2;  /* druhý front */
	int c;

	zac1 = kon1 = NULL;
	zac2 = kon2 = NULL;

	/* menu */
	do {
		clrscr();
		printf("Praca s dvoma tlacovymi frontami \n\n");
		printf("Pridaj do F1................ 1\n");
		printf("Pridaj do F2................ 2\n");
		printf("Vybavenie................... 3\n");
		printf("Vypis....................... 4\n\n");
		printf("Koniec...................... k\n");

		switch (c = getch()) {
			case '1': pridaj(&zac1, &kon1); break;
			case '2': pridaj(&zac2, &kon2); break;
			case '3': {
				vybavenie(zac1, zac2);
				zac1 = kon1 = NULL;
				zac2 = kon2 = NULL;
			}
			break;
			case '4': vypis(zac1, zac2); break;
			default: break;
		}
	} while (c != 'k');

	return (0);
}