Ejemplo n.º 1
0
//Funckia na skladanie vody
void bond(char prvok,unsigned ID)
{
    //Vypis hlasky begin bonding
    sem_wait(&premenne->sem);
    vypis("%u\t: %c %u\t:begin bonding\n",prvok,ID);
    sem_post(&premenne->sem);

    //Simulacia trvania skladania
    go_to_sleep(Bond_max_wait);

    //Samotne bondovanie
    sem_wait(&premenne->sem); //Pripoji sa na premenne
    premenne->bonding--;
    if(premenne->bonding==3)
    {
        vypis("%u\t: %c %u\t:bonded\n",prvok,ID);
        premenne->bonding--;
        sem_post(&semafory->Bonding);
        sem_post(&semafory->Bonding);
    }
    else
    {
        sem_post(&premenne->sem);
        sem_wait(&semafory->Bonding);
        sem_wait(&premenne->sem);
        vypis("%u\t: %c %u\t:bonded\n",prvok,ID);
        premenne->bonding--;
    }
    if(premenne->bonding==0)
    {
        sem_post(&semafory->Next_Create_Bond);
    }
    sem_post(&premenne->sem);
}
Ejemplo n.º 2
0
int main() {
    char **obdlznik, *buf, *empty;
    int i, pocet = 0;
    POLIA *novy_polia, *prvy_polia = NULL, *aktualny_polia, *predchadzajuci_polia;
    buf = (char*)malloc(1000 * sizeof(char));
    while (scanf("%100[^\n\r]", buf) > 0) {
        getchar();
        //kym nemam cislo
        if (!strtol(buf, &empty, 10)) {
            pocet++;
            //ukladanie prveho
            if (!prvy_polia) {
                prvy_polia = (POLIA*)malloc(sizeof(POLIA));
                prvy_polia->dalsi = NULL;
                strcpy(prvy_polia->meno, buf);
            }
            //ukladanie dalsieho
            else {
                novy_polia = (POLIA*)malloc(sizeof(POLIA));
                novy_polia->dalsi = NULL;
                strcpy(novy_polia->meno, buf);
                aktualny_polia = prvy_polia;
                predchadzajuci_polia = prvy_polia;
                //insert sort
                //prechadzam zoznam kym nenajdem kam pridat dalsiu polozku
                while (aktualny_polia != NULL && strcmp(aktualny_polia->meno, novy_polia->meno)<0) {
                    aktualny_polia = aktualny_polia->dalsi;
                    //skipnem prvy presun aktualneho, aby som bol o krok pozadu
                    if (predchadzajuci_polia->dalsi != aktualny_polia) {
                        predchadzajuci_polia = predchadzajuci_polia->dalsi;
                    }
                }
                //ak pridavam na prve miesto
                if (aktualny_polia == prvy_polia) {
                    novy_polia->dalsi = prvy_polia;
                    prvy_polia = novy_polia;
                }
                else {
                    novy_polia->dalsi = predchadzajuci_polia->dalsi;
                    predchadzajuci_polia->dalsi = novy_polia;
                }
            }
        }
        //ked mam cislo
        else {
            //prekopirujem zoznam do obdlznika
            obdlznik = nahraj(prvy_polia, pocet);
            break;
        }
    }
    //vycistim posledný nacitany riadok s cislami
    while ((i = strtol(buf, &buf, 10)) != 0) {
        vypis(obdlznik, pocet, i);
    }
    //uz len scanfujem do konca
    while (scanf("%d", &i) > 0) {
        vypis(obdlznik, pocet, i);
    }
    return 0;
}
Ejemplo n.º 3
0
//Proces prvku
int atom(unsigned ID,char prvok)
{
    //Vypis hlasky started
    //moze sa vypisat prakticky kedykolvek, preto je pred semaforom
    sem_wait(&premenne->sem);
    vypis("%u\t: %c %u\t:started\n",prvok,ID);
    sem_post(&premenne->sem);

    //Semafor aby sme nenarusili proces bondovania
    sem_wait(&semafory->Next_Create_Bond);
    //Ziskame si pristup do zdielanej pamate
    sem_wait(&premenne->sem);

    //Zapiseme si do zdielanej premennej ze mame proces vhodny na bondovanie, danej kategorie
    if ( prvok == 'H' )
        premenne->amount_H++;
    else
        premenne->amount_O++;

    //Zistenie ci sa da viazat
    if( premenne->amount_H >= 2 && premenne->amount_O >= 1 ) //Ak je dost atomov na viazanie
        {
            vypis("%u\t: %c %u\t:ready\n",prvok,ID);
            premenne->bonding=6;
            sem_post(&semafory->H_queue);
            //Podla toho ci bond spustil vodik alebo kyslik sa prebudzaju procesi s ktorimi sa budeme bondovat
            if ( prvok == 'O' )
                sem_post(&semafory->H_queue);
            else
                sem_post(&semafory->O_queue);
            premenne->amount_H-=2;
            premenne->amount_O--;
            sem_post(&premenne->sem); //Koniec kritickej sekcie ak je dost na viazanie
        }
        else
        {
            vypis("%u\t: %c %u\t:waiting\n",prvok,ID);
            sem_post(&premenne->sem); //Koniec kritickej sekcie ak nie je dost na viazanie
            sem_post(&semafory->Next_Create_Bond);
            if ( prvok == 'O' )
                sem_wait(&semafory->O_queue);
            else
                sem_wait(&semafory->H_queue);
        }

    //Proces bondovania
    bond(prvok,ID);

    //Vypis hlasky finished
    finished(prvok,ID);

    exit(EXIT_SUCCESS);
}
Ejemplo n.º 4
0
void vypis(char x)
{
if(x <= 'z'){
printf("%c",x);
vypis(++x);
}
}
Ejemplo n.º 5
0
void vypis (int * c, int size)
{
	if (size > 0){
		printf ("%i ", *c);
		vypis (c+1, size-1);
	}
}   
Ejemplo n.º 6
0
int main()
{
	char pismeno;
	scanf("%c",&pismeno);
	if (pismeno=='v') vypis();
	return 0;
}
Ejemplo n.º 7
0
double vypis_soubor(void)
{
  FILE *fr;
  char jmeno[100];

  printf("Zadej jmeno souboru: ");
  scanf("%s", jmeno);
  /* vycisteni klavesnicoveho bufferu */
  while (getchar() != '\n')
     ;

  if (toupper(jmeno[0]) == 'K')
    return 2.2;

  if ((fr = fopen(jmeno, "r")) == NULL) {
    printf("Soubor %s nebyl otevren.\n", jmeno);
    return 1.1;
  }

  vypis(fr);

  if (fclose(fr) == EOF)
    printf("Soubor %s nebyl zavren.\n", jmeno);

  return 0.5;
}
Ejemplo n.º 8
0
//Funkcia zabezpecuju aby sa ukoncili vsetky procesi az ked su vsetky zviazane vo vode
void finished(char prvok,unsigned ID)
{
    //Najprv je potreba zistit ci uz su zviazane vsetky procesi
    sem_wait(&premenne->sem);
    //Ak uz su zviazane vsetky procesi vody
    //3*n je procesov prvkov
    //-1 lebo ked sme zbondovali vsetky prvky tak sa ten posledny nepripocita ale spusti vypis finished
    if(premenne->finish!=(3*n-1))
    {
        premenne->finish++;
        sem_post(&premenne->sem);
        sem_wait(&semafory->Finished);

    }
    else
    {
        sem_post(&premenne->sem);
    }

    //Vypis hlasky finished
    sem_wait(&premenne->sem);
    vypis("%u\t: %c %u\t:finished\n",prvok,ID);
    sem_post(&premenne->sem);

    sem_post(&semafory->Finished); //Pusti dalsi proces na vypis
}
Ejemplo n.º 9
0
void vypis(int i)
{
int a = i;
if(*(str + i)){
	printf("%c",*(str + i));
	vypis(i+1);
}
}
Ejemplo n.º 10
0
int main()
{
	int size = 10;
	int c[size];

	nacti(c, size);
	
	vypis(c, size);
	
	return 0;
}
Ejemplo n.º 11
0
int main(int argc, char **argv)
{
	char *v = "In the C++ programming language, the string class is a standard representation for a class of text."
		"The class provides some typical string operations like comparsion, concatenation, find and replace.";
	char *s[] = {"string", "class"};

	int pocet_slov = sizeof(s)/sizeof(s[0]);
	int i;
	for(i=0; i<pocet_slov; i++)
	{
		vypis(s[i]);
		printf(": ");
		printf("%i\n", pocetVyskytu(v, s[i]));
	}
}
Ejemplo n.º 12
0
int main()
{
    int *pi;
    int max, i;
    max = maximum(pole3x4, NELEM(pole3x4));
    vypis(pole3x4, NELEM(pole3x4));
    printf("pole 3x4 ma maximum: %d\n", max);
    printf("\n \n");

    pi = suma_radku(pole3x4, NELEM(pole3x4));
    printf("suma radku je: ");
    for (i=0; i<NELEM(pole3x4); i++){
        printf("%c %d", i==0?' ':',',pi[i]);
        }
        return 0;
}
Ejemplo n.º 13
0
int main()
{
    int velikost;
    printf("Program na pole... \n");
    printf("Zadejte velikost pole: ");
    scanf("%d", &velikost);
    int pole[velikost];
    char znak = 'A';
    while(znak!='X')
    {
        odsazeni();
        napoveda();
        scanf(" %c", &znak);
        switch(znak){
        case 'X':
            break;
        case 'I':
            clear();
            inicializuj(pole, velikost);
            break;
        case 'V':
            clear();
            vypis(pole, velikost);
            break;
        case 'Z':
            clear();
            zadani(pole, velikost);
            clear();
            break;
        case '+':
            clear();
            navyseni(pole, velikost);
            break;
        case 'C':
            clear();
            break;
        default:
            printf("Zadal jsi spatny znak. \n");
            break;
        }


    }
    return 0;
}
Ejemplo n.º 14
0
Archivo: cv05.c Proyecto: kovacivo/c
int main(void)
{
  FILE *fr;
  char jmeno[100];
  int c;

  printf("Zadej jmeno souboru: ");
  scanf("%s", jmeno);
  if ((fr = fopen(jmeno, "r")) == NULL) {
    printf("Soubor %s nebyl otevren.\n", jmeno);
    return 1;
  }

  vypis(fr);

  if (fclose(fr) == EOF)
    printf("Soubor %s nebyl zavren.\n", jmeno);

  return 0;
}
Ejemplo n.º 15
0
int main()
{
    char katalog[100][3][51];
    int i = 0;
    int volba;
    char hledanyStr[51];
    while(1)
    {
        volba = 0;
        vypis();
        scanf("%d",&volba);
        getchar();
        switch(volba)
        {
            case 1:
                zadani(&i,katalog);
                break;
            case 2:
                coHledat(hledanyStr);
                vypisHledani(katalog,hledani(1,hledanyStr,katalog));
                break;
            case 3:
                coHledat(hledanyStr);
                vypisHledani(katalog,hledani(0,hledanyStr,katalog));
                break;
            case 4:
                vypisKat(katalog);
                break;
            case 5:   
               exit(0);
               break;
            default:
                puts("prosím o správný znak!");
        }       
    }   
    return 0;    
}
Ejemplo n.º 16
0
int main()
{
vypis('a');
printf("\n");
return 0;
}
Ejemplo n.º 17
0
void tah(MUINT pocetmiest)
{
	initZreby();
	zrebuj(pocetmiest);
	vypis(pocetmiest);
}