All pastes #286386 Raw Edit

Unnamed

public c v1 · immutable
#286386 ·published 2006-12-20 16:57 UTC
rendered paste body
/* Domas JokubauskisKF I k.*/#include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>#define EILUTES_ILGIS 999#define ZODZIO_ILGIS 99typedef struct ingredientas{	char	pav[ZODZIO_ILGIS];	float	kiekis;	struct	ingredientas *kitas;} ingredientas;typedef struct receptas{		char   pav[ZODZIO_ILGIS];		struct ingredientas *ingr;        struct receptas *kitas;} receptas;receptas * AddR (receptas * ds_r, char pav[ZODZIO_ILGIS]);ingredientas * AddI (receptas * ds_r, ingredientas * ds_i, char pav[ZODZIO_ILGIS], float kiekis);void PrintR (receptas * ds_r);void Valyti (receptas * ds_r);receptas * SalintiR (receptas * ds_r);ingredientas * SalintiI (ingredientas * ds_i);int main(int argc, char **argv){	float kiekis;	int pavadinimas_buvo = 0;	char *eilute;	char *zodis;	char *laikinas;	receptas *ds_r = NULL; /* duomen&#371; strukt&#363;ros rodykl&#279; */	ingredientas *ds_i = NULL;	        //programos argument&#371; patikrinimas    if (argc!=2)    {        printf("Programai neteisingai perduoti parametrai!\n");        printf("Programos naudojimas: programa kelias_iki_bylos\n");        exit(EXIT_FAILURE);    }    //bylos atv&#279;rimas    FILE *byla;    byla = fopen(argv[1],"r");    if (byla==NULL)    {        printf("Nepavyko atverti „%s“ bylos! Programa baigiama.\n", argv[1]);        exit(EXIT_FAILURE);    }    else        printf("„%s“ byla s&#279;kmingai atverta.\n", argv[1]);	    while(!feof(byla))    {		eilute = malloc(sizeof(char)*EILUTES_ILGIS);        fgets(eilute, EILUTES_ILGIS, byla);		if (feof(byla)) break;        zodis = malloc(sizeof(char)*ZODZIO_ILGIS);		        /* pakei&#269;ia \n &#303; \0 simbol&#303; */        if ((laikinas = strchr(eilute, '\n')) != NULL)            *laikinas = ' ';		//printf("\neilute: %s\n", eilute);                if (sscanf(eilute, "%s", zodis)<1)            pavadinimas_buvo = 0;            /* receptas */        else if (sscanf(eilute, "%s", zodis)>=1 && pavadinimas_buvo == 0)        {            ds_i = NULL;            ds_r = AddR(ds_r, zodis);            //printf("\n\nsiaip:%s\n", ds_r->pav);            //printf("\nReceptas: %s", zodis);            pavadinimas_buvo = 1;        }        	/* ingredientas */        else if (sscanf(eilute, "%s %f", zodis, &kiekis)>=1 && pavadinimas_buvo == 1)        {	            ds_i = AddI(ds_r, ds_i, zodis, kiekis);            //printf("\n\tIngredientas: %s, kiekis: %.2f", zodis, kiekis);        }		free(eilute);		free(zodis);    }    PrintR(ds_r);    getchar();    Valyti(ds_r);    getchar();    if (!fclose(byla))    {        printf("\n\nPrograma s&#279;kmingai baigta.\n");        exit(EXIT_SUCCESS);    }    else    {        printf("Nepavyko uždaryti bylos.\n");        exit(EXIT_FAILURE);    }}receptas * AddR (receptas * ds_r, char pav[ZODZIO_ILGIS]){	receptas * lp = ds_r;    if (ds_r != NULL)    {		while (ds_r-> kitas != NULL)			ds_r = ds_r -> kitas;		ds_r -> kitas = (struct receptas *) malloc (sizeof (receptas));		ds_r =  ds_r -> kitas;		ds_r -> kitas = NULL;		ds_r -> ingr = NULL;		strcpy(ds_r -> pav, pav);		//printf("\n\nkitas:%s\n", pav);		return lp;    }    else    {		ds_r = (struct receptas  *) malloc (sizeof (receptas));		ds_r -> kitas = NULL;		ds_r -> ingr = NULL;		strcpy(ds_r -> pav, pav);		//printf("\n\nds_r:%s\n", ds_r -> pav);		return ds_r;    }}ingredientas * AddI (receptas * ds_r, ingredientas * ds_i, char pav[ZODZIO_ILGIS], float kiekis){	ingredientas * lp = ds_i;    if (lp != NULL)    {		while (ds_i-> kitas != NULL)			ds_i = ds_i -> kitas;		ds_i -> kitas = (struct ingredientas *) malloc (sizeof (ingredientas));		ds_i =  ds_i -> kitas;		ds_i -> kitas = NULL;		strcpy(ds_i -> pav, pav);		ds_i -> kiekis = kiekis;		//printf("\n\n\tkitas:%s\n", pav);		return lp;    }    else    {		while (ds_r-> kitas != NULL)			ds_r = ds_r -> kitas;		ds_r -> ingr = (struct ingredientas *) malloc (sizeof (ingredientas));		ds_i = ds_r -> ingr;		strcpy(ds_i -> pav, pav);		ds_i -> kiekis = kiekis;		ds_i -> kitas = NULL;		//printf("\n\n\tds_i:%s, %f\n", ds_i -> pav, ds_i -> kiekis);		return ds_i;    }}void PrintR (receptas * ds_r) {		ingredientas * ds_i;    if (ds_r == NULL)		printf ("Recept&#371; n&#279;ra!\n");    else	while (ds_r != NULL) {	    printf ("\nReceptas „%s“:", ds_r -> pav);	    if (ds_r -> ingr != NULL)	    {	    	ds_i = ds_r -> ingr;	    	while (ds_i != NULL)	    	{	    		printf("\n\t* %s\t%0.2f", ds_i -> pav, ds_i -> kiekis);	    		ds_i = ds_i -> kitas;	    	}	    }	    else	    	printf(" (recepte ingredientai nenurodyti!)");	    ds_r = ds_r -> kitas;	}    printf ("\n");}receptas * SalintiR (receptas * ds_r){	receptas * tempp;    printf ("Receptas %s pasalintas\n", ds_r -> pav);    tempp = ds_r -> kitas;    free (ds_r);    return tempp;}ingredientas * SalintiI (ingredientas * ds_i){	ingredientas * tempp;    printf ("\tIngredientas %s pasalintas\n", ds_i -> pav);    tempp = ds_i -> kitas;    free (ds_i);    return tempp;}void Valyti (receptas * ds_r){	ingredientas * ds_i;	if (ds_r == NULL)		printf ("Recept&#371; n&#279;ra!\n");    else	while (ds_r != NULL) {		if (ds_r -> ingr != NULL)	    {	    	ds_i = ds_r -> ingr;	    	while (ds_i != NULL)	    	{	    		ds_i = SalintiI(ds_i);	    	}	    }    		ds_r = SalintiR(ds_r);	    	}    printf ("\n");}