All pastes #2094783 Raw Edit

Stuff

public text v1 · immutable
#2094783 ·published 2011-11-23 10:38 UTC
rendered paste body
#include <stdio.h>
#include <math.h>
#include <limits.h>
#define PI 3.1415
#include <errno.h>
#include <stdlib.h>
#define VEL 8
#include <string.h>
#define VE 30

int bubblesort(void);
int selectsort(void);
int matice(void);
int Nahodne(void);

int mamatice[VEL][VEL];

int main(void)
{
    char str[VE+1];
    printf("Zadejte retezec: ");
    fgets(str, VE, stdin);

    if (prisnyPalindrom(str) == 1)
    {
        printf("Je to prisny palindrom.");
    }

    if (volnyPalindrom(str) == 1)
    {
        printf("Je to volny palindrom.");
    }

    return 0;
}

int serazeni_retezcu()
{
    char ** pole = malloc(sizeof(char *)*15);
    int poz = 0;

    char * pom = malloc(sizeof(char)*20);

    int i = 0;

    while (i < 15)
    {

    }

}

int prisnyPalindrom(char *retezec)
{
    int vel = strlen(retezec) - 1;

    for (int x = 0; x <  vel / 2; x++)
    {
        if (*(retezec+x) != *(retezec+vel-x-1))
            return 0;
    }

    return 1;
}

int volnyPalindrom(char *retezec)
{
    int vel = strlen(retezec) - 1;
    char *pole = malloc(sizeof(char) * vel);
    int z = 0;

    for (int t = 0; t < vel; t++)
    {
        if (*(retezec+t) != ' ')
        {
            *(pole+z) = *(retezec+t);
            z++;
        }
    }

    vel = strlen(pole) - 1;

    for (int x = 0; x <  vel / 2; x++)
    {
        if (*(pole+x) != *(pole+vel-x))
        {
            if (abs(*(pole+x) - *(pole+vel-x-1)) != 32)
            {
                return 0;
            }
        }

    }

    return 1;
}

int retezec()
{
    char *str = malloc(sizeof(char)*1000);
    char *vysledek = malloc(sizeof(char) * 1000);
    char znak;

    printf("Zadejte retezec: ");
    fgets(str, 999, stdin);

    printf("Zadejte znak: ");
    znak = getchar();

    char *first = strchr(str, znak);

    while (first != NULL)
    {
        *(vysledek+(str-first)) = '_';
    }

    printf("%s", first);
    printf("%s", vysledek);

    return 0;
}

int fibo(int i)
{
    if (i == 1) return 1;
    if (i == 2) return 1;

    return fibo(i-1)+fibo(i-2);
}

int generujmatici()
{

    for (int r = 0; r< VEL; r++)
    {
        for (int s = 0; s < VEL; s++)
        {
            mamatice[r][s] = Nahodne();

            if (s == VEL - 1)
            printf(" %3d\n", mamatice[r][s]);
            else
            printf(" %3d", mamatice[r][s]);
        }
    }

    for (int y = 0; y < VEL*VEL; y++)
    {

    for (int x = 0; x < VEL*VEL -1 - y; x++)
    {
        int radek = x / VEL;
        int prvek = x % VEL;
        int dalsi_radek = radek;
        int dalsi_prvek = prvek+1;
        if (dalsi_prvek == VEL)
        {
            dalsi_prvek = 0;
            dalsi_radek = radek + 1;
        }

        if ( mamatice[radek][prvek] > mamatice[dalsi_radek][dalsi_prvek])
        {
            int pom = mamatice[radek][prvek];
            mamatice[radek][prvek] = mamatice[dalsi_radek][dalsi_prvek];
            mamatice[dalsi_radek][dalsi_prvek] = pom;
        }
    }
    }

    printf("\n\n");

    for (int r = 0; r< VEL; r++)
    {
        for (int s = 0; s < VEL; s++)
        {
            if (s == VEL - 1)
            printf(" %3d\n", mamatice[r][s]);
            else
            printf(" %3d", mamatice[r][s]);
        }
    }

    return 0;
}

int fibonnaci(void)
{
    long long pole[100];
    pole[0] = 1;
    pole[1] = 1;

    for (int i = 2; i < 100; i++)
    {
        pole[i] = pole[i-1] + pole[i-2];
    }

    int kolikate;

    printf("Kolikaty prvek pole chcete? Zadejte číslo od 1 do 100: ");
    scanf("%d", &kolikate);

    printf("%llu", pole[kolikate - 1]);

    return 0;
}

int vypispole(long long pole[], int velikost)
{
    for (int i = 0; i < velikost; i++)
    {
        printf("%llu ", pole[i]);
    }

    return 0;
}

int bubblesort(void)
{
    int velikost = 20;
    int pole[velikost];
    for (int i = 0; i < velikost; i++)
    {
        pole[i] = Nahodne();
    }

    for (int x = 0; x < velikost; x++)
    {
        printf("%d ", pole[x]);
    }

    printf("\n\n\n");

    for (int x = 0; x < velikost; x++)
    {
        for (int y = 0; y < velikost - 1 - x; y++)
        {
            if (pole[y] > pole[y+1])
            {
                int pom = pole[y];
                pole[y] = pole[y+1];
                pole[y+1] = pom;
            }
        }
    }

    for (int x = 0; x < velikost; x++)
    {
        printf("%d ", pole[x]);
    }
}

int selectsort(void)
{
    int velikost = 20;
    int pole[velikost];
    for (int i = 0; i < velikost; i++)
    {
        pole[i] = Nahodne();
    }

    for (int x = 0; x < velikost; x++)
    {
        printf("%d ", pole[x]);
    }

    printf("\n\n\n");

    int min = pole[0];
    int pozice = -1;

    for (int x = 0; x < velikost; x++)
    {

        for (int y = x; y < velikost; y++)
        {
            if (pole[y] <= min)
            {
                min = pole[y];
                pozice = y;
            }
        }

        int nulty = pole[x];
        int nalezeny = pole[pozice];

        pole[x] = pole[pozice];
        pole[pozice] = nulty;

        min = pole[x + 1];
    }

    for (int x = 0; x < velikost; x++)
    {
        printf("%d ", pole[x]);
    }
}

int matice(void)
{
    int velikost;

    puts("Zadejte velikost čtvercové matice: ");

    scanf("%d", &velikost);

    int matice[velikost][velikost];

    for (int r = 0; r< velikost; r++)
    {
        for (int s = 0; s < velikost; s++)
        {
            matice[r][s] = Nahodne();

            if (s == velikost - 1)
            printf(" %3d\n", matice[r][s]);
            else
            printf(" %3d", matice[r][s]);
        }
    }

    puts("Přehazuji podle vedlejší diagonaly");
    int prvni, druhe;
    int sloupce = velikost;
    int radky = velikost;

    for (int r = 0; r < velikost; r++)
    {
        sloupce -= 1;

        for (int s = 0; s < sloupce; s++)
        {

                prvni = matice[r][s];
                druhe = matice[velikost - 1 - r][velikost - 1 - s];

                matice[r][s] = druhe;
                matice[velikost - 1 - r][velikost - 1 - s] = prvni;
        }
    }

    for (int r = 0; r< velikost; r++)
    {
        for (int s = 0; s < velikost; s++)
        {
            if (s == velikost - 1)
            printf(" %3d\n", matice[r][s]);
            else
            printf(" %3d", matice[r][s]);
        }
    }

    /*
    for (int r = 0; r< velikost; r++)
    {
        for (int s = 0; s < velikost; s++)
        {
            if (s == velikost - 1)
            printf(" %d\n", matice[r][s]);
            else
            printf(" %d\n", matice[r][s]);
        }
    }
    */
}

/*
int VypsatMatici(int matice[][], int velikost)
{
    for (int r = 0; r< velikost; r++)
    {
        for (int s = 0; s < velikost; s++)
        {
            if (s == velikost - 1)
            printf(" %d\n", matice[r][s]);
            else
            printf(" %d\n", matice[r][s]);
        }
    }
}
*/

int Nahodne(void)
{
    return rand() % 100;
}

int pole(void)
{
    //součet a aritm.prumer

    int velikost = 0;
    int prirazeno = 2;


    puts("Pro kolik prvocisel chcete spocitat soucet a prumer?");
    scanf("%d", &velikost);

    int pole[velikost];
    pole[0] = 2;
    pole[1] = 3;

    /*for (int i = 2; prirazeno <= velikost; i++)
    {
        if (isprime(i) == 1)
        {
            pole[prirazeno] = i;
            prirazeno++;
        }
    }*/

    for (int i = 4; prirazeno <= velikost; i++)
    {
        int ss = 0;

        for (int x = 0; x < prirazeno; x++)
        {
            if (i % pole[x] != 0)
            {
                int ss = 1;
                break;
            }
        }

        if (ss == 0)
        {
            pole[prirazeno] = i;
            prirazeno++;
        }
    }

    int soucet = 0, prumer = 0;

    for (int x = 0; x < velikost; x++)
    {
        printf("%d - %d\n", x, pole[x]);

        soucet += pole[x];
    }

    printf("Soucet je %d a prumer je %.4f", soucet, (soucet*1.0) / (1.0*velikost));

    return 0;
}

int ukazatele(void)
{
    int prom = 456313;
    int *p_prom;
    p_prom = &prom;

    printf("Hodnota | Velikost | Adresa  | Hodnota\n");
    printf("%7.0d |%9.0d |%8.0d | %d\n", prom, sizeof(prom), &prom, prom);
    printf("%7.0d |%9.0d |%8.0d | %d\n", p_prom, sizeof(p_prom), &p_prom, *p_prom);

    return 0;
}

int logaritmus(void)
{
    double vstup = 0;

    puts("Zadejte cislo, jehoz logaritmus chcete vypocitat");

    scanf("%lf", &vstup);

    errno = 0;

    double vysledek = log(vstup);

    switch (errno)
    {
        case 0:
            printf("Logaritmus cisla %f je %f", vstup, vysledek);
            break;

        case EDOM:
            printf("Vstup je mimo definicni obor");
            break;

        case ERANGE:
            printf("Vystup je mimo hranici double");
            break;

        default:
            printf("Neznama chyba pri vypoctu");
            break;
    }

    return 0;
}

int prvocislo(void)
{
    int prvocisla[25] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97};

    puts("Zadejte cislo: ");
    int i = 0;

    scanf("%d", &i);

    if (isprime(i) == 1)
    {
        printf("Zadane cislo %d je prvocislo", i);
    }
    else
    {
        for (int q = 0; q < 25; q++)
        {
            if (i % prvocisla[q] == 0)
            {
                i = i / prvocisla[q];
                printf(" %d \n", prvocisla[q]);
                q = -1;
            }


        }
    }

    return 0;
}

int ukol(void)
{
    int cislo = 0;
    puts("Zadejte cislo:");

    scanf("%d", &cislo);

    if (cislo <= 0)
    {
        puts("Zadane cislo je neplatne!");
    }
    else
    {
        int ss = pocet_delitelu(cislo);
        if (ss == 2)
        {
            puts("Zadane cislo je prvocislo");
        }
        else
        {
            printf("Zadane cislo ma %d delitelu", ss);
        }
    }

    return 0;
}

int isprime(int i)
{
    for (int t = 2; t <= sqrt(i); t++)
    {
        if (i % t == 0)
            return 0;
    }

    return 1;
}

int pocet_delitelu(int a)
{
    int s = 2;

    for (int t = 2; t < a; t++)
    {
        if (a % t == 0)
           s++;
    }

    return s;
}

int switchs(void)
{
    int c = 0;
    int souhlasky = 0, samohlasky = 0;
    while((c = getchar()) != EOF)
    {
        switch(c)
        {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
            case 'y':
                samohlasky++;
                break;

            case 'b':
            case 'c':
            case 'd':
            case  'f':
            case 'g':
            case 'h':
            case 'j':
            case 'k':
            case 'l':
            case 'm':
            case 'n':
            case 'p':
            case 'q':
            case 'r':
            case 's':
            case 't':
            case 'v':
            case 'w':
            case 'x':
            case 'z':
                souhlasky++;
                break;
        }


    }

    printf("Pocet samohlasek: %d  Pocet souhlasek: %d", samohlasky, souhlasky);

    return 0;
}

int tabulka(void)
{
    printf("typ               min     max              byte     \n");
    printf("====================================================\n");
    printf("ushort            0       %15.0d           %5.0d     ", USHRT_MAX, sizeof(unsigned short));
}

int chary(void)
{
    /*for (int i = '0'; i <= '9'; i++)
    {
        printf("%c     %d \n", i, i);
    }

    for (int i = 'a'; i <= 'z'; i++)
    {
        printf("%c     %d \n", i, i);
    }

    for (int i = 'A'; i <= 'Z'; i++)
    {
        printf("%c     %d \n", i, i);
    }*/

    for (int i = 0; i < 256; i++)
    {
        printf("%c     %d \n", i, i);
    }

    return 0;
}

///////Faktorial

int superfaktorial(void)
{
    int vstup;

    puts("Zadejte cislo:");
    scanf("%d", &vstup);

    for (int i = 0; i <= vstup; i++)
    {
        int a = factorial(factorial(i));
        printf("%d, ", a);
    }

    return 0;
}

int factorial(int i)
{
    if (i==0) return 1;

    return i*factorial(i-1);
}

////////////

int kod(void)
{
    int i,num,j;
    printf("Zadejte cislo: ");
    scanf("%d", &num);

    j = 1;

    for (i = 1; i <=num; i++)
    {
        j *= i;
    }

    printf("Faktorial cisla %d = %d\n", num,j);

    return 0;
}

int suda(void)
{
    float a,b;

    puts("Zadejte 2 relna cisla:");
    scanf("%f %f", &a, &b);

    for (int i = ceil(a); i <= floor(b); i++)
    {
        if (i % 2 == 0)
        printf("%d\n", i);
    }

    return 0;

}

int cyklus(void)
{
    int a,b = 0;
    puts("Zadejte cele kladne cislo:");
    scanf("%d", &a);



    while (1)
    {

        printf("%d\n", b);
        b++;


        if (b >= a)
            break;
    }

    return 0;
}

int objem(void)
{
    float polomer, vyska, objem;

    puts("ahoj, zadej polomer a vysku");

    scanf("%f %f", &polomer, &vyska);

    objem = PI*(1.0/3.0)*polomer*polomer*vyska;

    printf("Objem je %.2f", objem);

    return 0;
}

int kruznice(void)
{
    float x1, y1, r1, x2, y2, r2;

    puts("Prvni kruznice: x1 y1 r1");
    scanf("%f %f %f", &x1, &y1, &r1);

    puts("Druha kruznice: x2 y2 r2");
    scanf("%f %f %f", &x2, &y2, &r2);

    puts("-------------------------");

    double vzdalenost = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    double soucet_polomeru = r1 + r2;

    printf("Vzdalenost jejich stredu je %.4f", vzdalenost);

    if (vzdalenost - soucet_polomeru > 0.001)
    {
        //venku
    }

    else if (vzdalenost - soucet_polomeru < 0.001 && vzdalenost - soucet_polomeru > -0.001)
    {
        //vnejší dotyk
    }

    else if (vzdalenost - soucet_polomeru < -0.001)
    {
        if (r1 < r2)
        {
            if (r2 - (vzdalenost + r1) < 0.001 && r2 - (vzdalenost + r1) > -0.001)
            {
                //vnitøní dotyk
            }
            else if (r2 - (vzdalenost + r1) > 0.001)
            {
                //prunik
            }
            else
            {
                //vevnitø
            }
        }

        if (r2 < r1)
        {
            if (r1 - (vzdalenost + r2) < 0.001 && r1 - (vzdalenost + r2) > -0.001)
            {

            }
        }
    }


    return 0;
}

int mocniny(void)
{
    float max_i, max_exp;

    puts("Zadejte max cislo a max exponent");

    scanf("%f %f", &max_i, &max_exp);

    for (int i = 2; i <= max_i; i++)
    {
        for (int e = 1; e <= max_exp; e++)
        {
            float vysledek = pow(i,e);

            if (e == max_exp)
            {
                printf("%4.0f \n", vysledek);
            }
            else if (e == 1)
            {
                printf("%4.0f", vysledek);
            }
            else
            {
                printf("  %4.0f", vysledek);
            }
        }
    }

    return 0;
}