Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Stavový automat pro pračku

cpp

#include <stdio.h>					//knihovny
#include<stdlib.h>
#include <windows.h>


void barvy(int);
int predpirka();
int odstati();
int zdimani();
int teplota();
int odklad();
void tiskStavu();
void loading();

typedef enum{			//tvorba noveho datového typu stav_t, který bude moct nabývat hodnot konstant
    KLID,				//konstanty
    ODKLAD,
    ODSTATI,
    OHREV,
    PREDPIRKA,
    PRANI,
    ZDIMANI
} sta_v;

int Ppredpirka = 0;
int Podstati = 0;
int Pzdimani = 0;
int Pteplota = 0;
int Podklad = 0;


sta_v stav = KLID;

int main() 				//hlavní funkce
{
	int i, rezim;
	
	loading();
	
    while(1)
	{
	system("cls");
    barvy(0);
	tiskStavu();
    barvy(1);    
	printf("\n\t\tZvolte program: \n");
			
    printf("\n\t\t1)""\tBavlna\n");
    printf("\n\t\t2)""\tSyntetika\n");
    printf("\n\t\t3)""\tJemna tkanina\n");
    printf("\n\t\tVolba: \t");
	 scanf("%d", &rezim);			//// uživatelský vstup
	 
	
	switch(rezim)
	{
			case 1:barvy(0); printf("\n\t\tProgram bude v rezimu Bavlny.\n");
		break;
			case 2:barvy(0); printf("\n\t\tProgram bude v rezimu Syntetika.\n");
		break;
			case 3:barvy(0); printf("\n\t\tProgram bude v rezimu Jemne tkaniny.\n");
		break;
			default:barvy(0); printf("\n\t\tBez programu.\n");
		break;
    	}
    	Sleep(1000);
    	
    	int Podklad = odklad();
    	int Pteplota = teplota();
        int Ppredpirka = predpirka();
        int Podstati = odstati();
        int Pzdimani = zdimani();
       
        

       	if(Podklad != 0) 
		{	stav = ODKLAD;}
        
        else if(Pteplota != 0)
		{	stav = OHREV;}
				
        else if(Ppredpirka != 0) 
		{	stav = PREDPIRKA;}
		
			else if(Podstati != 0) 
		{	stav = ODSTATI;}
		
        else
		{	stav = PRANI;}


        while(stav != KLID)
		{

            switch (stav)
			{
                case ODKLAD:
                    for( i = Podklad; i >=0; i--)
					{
						system("cls");
						barvy(0);	tiskStavu();  barvy(4);
                        printf("\n\t\tProgram zapocne za %d minut.\n", i);
                        Sleep(1000);
                    }
        
      			    if(Pteplota != 0)
					{	stav = OHREV;}
				
     			   else if(Ppredpirka != 0) 
					{	stav = PREDPIRKA;}
		
					else if(Podstati != 0) 
					{	stav = ODSTATI;}
		
    			    else
					{	stav = PRANI;}

				    break;
                       
                case OHREV:                	
                    for( i = 10; i <= Pteplota; i++)
					{
						system("cls");
						barvy(0);	tiskStavu(); barvy(4);
                        printf("\n\t\tTeplota vody nabiva %d stupnu celsia.\n", i);
                        Sleep(1000);
                    }
    
    				if(Ppredpirka != 0) 
					{	stav = PREDPIRKA;}
		
					else if(Podstati != 0) 
					{	stav = ODSTATI;}
		
    			    else
					{	stav = PRANI;}

                    break;
                    
                case PREDPIRKA:
                    for( i = 0; i <= Ppredpirka; i++)
					{

                        if(i == 2 || i ==4 || i ==6 || i ==8 || i ==10)
						{system("cls"); barvy(0); tiskStavu(); barvy(4);	printf("\n\t\tOtacim bubnem vpravo.\n");}
                        
						if(i == 1 || i ==3 || i ==5 || i ==7 || i ==9) 
						 {system("cls"); barvy(0); tiskStavu(); barvy(4);	printf("\n\t\tOtacim bubnem vlevo.\n");}

                        Sleep(1000);
                    }

                	if(Podstati != 0) 
					{	stav = ODSTATI;}
		
    			    else
					{	stav = PRANI;}

                    break;
                    
                     case ODSTATI:
                    for( i = 10; i > Podstati; i--)
					{
						system("cls");
						barvy(0);	tiskStavu(); barvy(4);
                        printf("\n\t\tProgram pozastaven na %d minut.\n", i);
                        Sleep(1000);
                    }

                    Podstati = 0;
                    stav = PRANI;

                    break;
                    
                case PRANI:
                    for( i = 0; i < 10; i++)
					{
                  	   if(i == 2 || i ==4 || i ==6 || i ==8 || i ==10)
						{ system("cls"); barvy(0); tiskStavu(); barvy(4);	printf("\n\t\tOtacim bubnem vlevo.\n");}
                        
						if(i == 1 || i ==3 || i ==5 || i ==7 || i ==9) 
						 {system("cls"); barvy(0); tiskStavu(); barvy(4);	printf("\n\t\tOtacim bubnem vpravo.\n");}
                        Sleep(1000);
                    }

                    if(Pzdimani != 0)
					{	stav = ZDIMANI;}
                    else
					{	stav = KLID;}

                    break;
                    
                case ZDIMANI:
                    for( i = 0; i < 10; i++)
					{
						if(i == 2 || i ==4 || i ==6 || i ==8 || i ==10)
						{system("cls"); barvy(0); tiskStavu(); barvy(4);	printf("\n\t\tZdimam vlevo %drpm.\n", Pzdimani);}
                        
						if(i == 1 || i ==3 || i ==5 || i ==7 || i ==9) 
						 {system("cls"); barvy(0); tiskStavu(); barvy(4);	printf("\n\t\tZdimam vpravo %drpm.\n", Pzdimani);}

                        Sleep(1000);
                    }

                    stav = KLID;

                    break;

                default:
                	system("cls");
                	barvy(2);
                    printf("\n\t\tError! Machine has been corrupted.\n");
                    return -1;
            }
        }
    }

    return 0;
}

int odklad()
{
	int odkl;
   	system("cls");
	barvy(3);
    printf("\n\t\tZvolte dobu odkladu\n");
		
    printf("\n\t\t1)""\t10 minut\n");
    printf("\n\t\t2)""\t15 minut\n"); 
	printf("\n\t\t3)""\t30 minut\n");
    printf("\n\t\t4)""\t60 minut\n");
    printf("\n\t\t5)""\t90 minut\n");
	printf("\n\t\t0)""\tBez odkladu\n");
	printf("\n\t\tVyberte: \t");				
     scanf("%d", &odkl);					// uživatelský vstup
	
	switch(odkl)
	{
			case 1:barvy(0); printf("\n\t\tDoba odkladu je 30 minut.\n"); odkl=10; 
		break;
			case 2:barvy(0); printf("\n\t\tDoba odkladu je 60 minut.\n"); odkl=15;
		break;
			case 3:barvy(0); printf("\n\t\tDoba odkladu je 90 minut.\n"); odkl=30; 
		break;
			case 4:barvy(0); printf("\n\t\tDoba odkladu je 120 minut.\n"); odkl=60; 
		break;
			case 5:barvy(0); printf("\n\t\tDoba odkladu je 150 minut.\n"); odkl=90; 
		break;
				default:barvy(0); printf("\n\t\tPokracujte bez odkladu.\n"); odkl=0; 
		break;
    	}
    	
	Sleep(1000);
	
	return odkl;
}

int teplota()
{
	int temp;
	system("cls");
	barvy(2);
    printf("\n\t\tZvolte teplotu vody\n");
    printf("\n\t\t1)""\tTeplota vody 20 stupnu.\n");
    printf("\n\t\t2)""\tTeplota vody 40 stupnu.\n");
    printf("\n\t\t3)""\tTeplota vody 60 stupnu.\n");
    printf("\n\t\t4)""\tTeplota vody 90 stupnu.\n");
   	printf("\n\t\tVyberte: \t");
	 scanf("%d", &temp);					// uživatelský vstup
	
	switch(temp)
	{
			case 1: barvy(0); printf("\n\t\tVybrali jste teplotu 30 stupnu.\n"); temp=20; 
		break;
			case 2: barvy(0); printf("\n\t\tVybrali jste teplotu 40 stupnu.\n"); temp=40; 
		break;
			case 3: barvy(0); printf("\n\t\tVybrali jste teplotu 60 stupnu.\n");  temp=60;
		break;
			case 4: barvy(0); printf("\n\t\tVybrali jste teplotu 90 stupnu.\n");  temp=90; 
		break;
			default: barvy(0); printf("\n\t\tNastavena hodnota teploty na 40 stupnu.\n"); temp=40; 
		break;
    	}
    	
  	 Sleep(1000);

    return temp;
}

int predpirka()
{
	int predp;
	system("cls");
	barvy(2);
    printf("\n\t\tPrejete si pradlo predeprat?\n");
		
    printf("\n\t\t1)""\tAno\n");
    printf("\n\t\t2)""\tNe\n");
	printf("\n\t\tVyberte: \t");
     scanf("%d", &predp);				// uživatelský vstup
	
	switch(predp)
	{
			case 1:barvy(0); printf("\n\t\tPradlo bude predeprano.\n"); predp=10; 
		break;
			case 2:barvy(0); printf("\n\t\tPokracujte bez predeprani.\n"); predp=0;  
		break;
				default:barvy(0); printf("\n\t\tPokracujte bez predeprani.\n"); predp=0;  
		break;
    	}
   	 Sleep(1000);
    
   	 return predp;
}

int odstati()
{
	int odst;
   	system("cls");
	barvy(3);
    printf("\n\t\tPrejete si pradlo nechat odstat?\n");
		
    printf("\n\t\t1)""\tAno\n");
    printf("\n\t\t2)""\tNe\n");
    printf("\n\t\tVyberte: \t");
     scanf("%d", &odst);					// uživatelský vstup
	
	switch(odst)
	{
			case 1:barvy(0); printf("\n\t\tBude provedeno odstani programu.\n"); odst=0; 
		break;
			case 2:barvy(0); printf("\n\t\tPokracujte bez odstani.\n"); odst=10; 
		break;
			default:barvy(0); printf("\n\t\tPokracujte bez odstani.\n");odst=10; 
		break;
    	}
    	
    	Sleep(1000);
	
	    return odst;
}

int zdimani()
{
	int zdim;
   	system("cls");
	barvy(4);
    printf("\n\t\tZvolte otacky pri zdimani\n");
		
    printf("\n\t\t1)""\t200\n");
    printf("\n\t\t2)""\t400\n"); 
	printf("\n\t\t3)""\t600\n");
    printf("\n\t\t4)""\t800\n");
    printf("\n\t\t5)""\t1000\n");
	printf("\n\t\t0)""\tBez zdimani\n");
	printf("\n\t\tVyberte: \t");
     scanf("%d", &zdim);					// uživatelský vstup
	
	switch(zdim)
	{
			case 1:barvy(0); printf("\n\t\tZdimani bude provedeno pri 200rpm.\n"); zdim=200;
		break;
			case 2:barvy(0); printf("\n\t\tZdimani bude provedeno pri 400rpm.\n"); zdim=400;
		break;
			case 3:barvy(0); printf("\n\t\tZdimani bude provedeno pri 600rpm.\n"); zdim=600;
		break;
			case 4:barvy(0); printf("\n\t\tZdimani bude provedeno pri 800rpm.\n"); zdim=800;
		break;
			case 5:barvy(0); printf("\n\t\tZdimani bude provedeno pri 1000rpm.\n"); zdim=1000;
		break;
			default:barvy(0); printf("\n\t\tPokracujte bez zdimani.\n"); zdim=0;
		break;
    	}
    	
	Sleep(1000);
	
	return zdim;
}

void tiskStavu()
{
	barvy(0);
    switch (stav){

        case KLID:
            printf("\n\t\tKLID\n");
            break;
        case ODKLAD:
            printf("\n\t\tODKLAD\n");
            break;
        case ODSTATI:
            printf("\n\t\tODSTATI\n");
            break;
        case OHREV:
            printf("\n\t\tOHREV\n");
            break;
        case PREDPIRKA:
            printf("\n\t\tPREDPIRKA\n");
            break;
        case PRANI:
            printf("\n\t\tPRANI\n");
            break;
        case ZDIMANI:
            printf("\n\t\tZDIMANI\n");
            break;
    }
}

void barvy(int barvy)
{
    switch(barvy)
    {
        case -1: // black
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0);
        break;
        case 0: // white on black
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
        FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
        break;
        case 1: // green on black
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
        FOREGROUND_GREEN);
        break;
        case 2: // red on black
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
        FOREGROUND_RED);
        break;
        case 3: // blue on black
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
        FOREGROUND_BLUE);
        break;
        case 4: // yellow on black
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
        FOREGROUND_GREEN | FOREGROUND_RED);
        break;

        default : // white on black
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
        FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
        break;

    }
}

void loading()
{
    system("cls");
    printf("\n\n\n\n\n\n\n");
	 barvy(0);
    printf("\n\t\t\tVita Vas inteligentni pracka\n");
    printf("\n\n\n\n\n\n\n");
    FILE *soubor;
    barvy(1);
    soubor = fopen("load.txt","r");
    char radek[5000];
    int i;
    while ((fscanf(soubor, "%[^\n]", radek)) != EOF)
    {
       fgetc(soubor);
       printf("%s \n", radek);
    }
    
    sleep(1);
    barvy(4);
    printf("\t\t____________________________________________\n\t\t");
    
    barvy(2);
    for(i=0;i<22;i++)
    {
    	printf("||");
    	sleep(1);
    	
    }
    fclose(soubor);
    barvy(0);
    
    sleep(1);
    system("cls");
    
    
}

Neformátovaný

Přidáno: 29.4.2017
Expirace: Neuvedeno

Aktivity