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;
}