Týden 4
Prebrali sme:
- podmienku if
- cyklus s podmienkou na začiatku while
- cyklus s podmienkou na konci do ... while
Príklady
- načítajte celé číslo, ak je párne, vypíšte výsledok celočíselného delenia dvojkou; ak je nepárne, vypíšte výsledok reálneho delenia dvojkou
int cislo;
printf("Zadaj cislo: ");
scanf("%d", &cislo);
if (cislo%2 == 0)
//cislo je parne
{
int delene = cislo/2;
printf("%d je parne cislo, po deleni dvojkou dostaneme %d\n", cislo, delene);
}
else
//cislo je neparne
{
double delene = cislo/2.0;
printf("%d je neparne cislo, po deleni dvojkou dostaneme %3.2f\n", cislo, delene);
}
- načítajte znak, ak je z malej abecedy, zmeňte ho na veľký, ak je z veľkej abecedy, zmeňte ho na malý
char znak;
scanf("%c", &znak);
if (znak >= 'a' && znak <= 'z') //je z malej abecedy
{
znak = znak + ('A'-'a');
printf("zmeneny na velky %c\n", znak);
}
else
{
if (znak >= 'A' && znak <= 'Z')
{
znak = znak - ('A'-'a');
printf("zmeneny na maly %c\n", znak);
}
else
{
printf("je to iny znak\n");
}
}
- načítavajte znaky zo vstupu, kým nedostane znak bodky, spočítajte, koľko čísiel prišlo na vstup:
char pismeno;
int cisiel = 0;
do
{
scanf("%c", &pismeno);
if (pismeno >= '0' && pismeno <= '9')
cisiel++;
}
while (pismeno != '.');
printf("na vstupe sme dostali %d cisiel\n",cisiel);
- napíšte program, ktorý bude robiť celočíselné delenie pomocou odčítavania
int a, b;
printf("zadaj dve cisla vo formate a, b\n");
scanf("%d, %d", &a, &b);
int nacitaneA = a;
//tu si ulozim hodnotu a
int vysledok = 0;
while (a>=b)
{
a = a-b;
//menime hodnotu a
vysledok++;
}
printf("a=%d, b=%d, vysledok=%d\n", a, b, vysledok);
printf("%d / %d = %d a %d %% %d = %d\n", nacitaneA, b, vysledok, nacitaneA, b, a);
- vypíšte všetky čísla deliteľné 13 od 200-400
int x = 200;
while (x <= 400)
{
if (x%13 == 0)
{
printf("%d\n", x);
x += 13;
}
else
x++;
}
-
1. nepovinná domáca úloha
Zo vstupu načítajte tri čísla do premenných x, y, a z. Tieto tri čísla následne usporiadajte od najmenšieho tak, aby bolo v premennej x najmenšie číslo z trojice zadaných.
vstup: 5, 9, 6
výstup: x=5; y=6; z=9;
double x, y, z;
scanf("%f %f %f", &x, &y, &z);
double pom;
if (x>y)
{
pom=x; x=y; y=pom;
}
if (x>z)
{
pom=x; x=z; z=pom;
}
if (y>z)
{
pom=y; y=z; z=pom;
}
printf("x=%f; y=%f; z=%f;\n", x, y, z);
-
2. úloha
Zo vstupu načítajte kladné celé číslo k. Overte, či je kladné, ak nie, načítavajte dovtedy, kým užívateľ nezadá kladné číslo. Potom vypočítajte hodnotu geometrického radu x = suma od i=0 až k z 1/(2^i). Zistite, pre aké k je hodnota x veľmi blízka 2 (tu bola predtým 0) (je medzi nimi rozdiel menší ako 10 -6). Toto môžete zistiť buď skúšaním rôznych vstupov, alebo automaticky pri každej iterácii výpočtu kontrolovať, či je už hodnota x dostatočne blízko a vtedy výpočet ukončiť.
double vysledok = 0;
int k;
scanf("%d", &k);
int i = 0;
while (i<=k)
{
vysledok += 1.0/(pow(2,i));
i++;
}
printf("vysledok sumy od i=0 po %d z 1/2^i = %lf\n", k, vysledok);
printf("zistujem ake vysoke musi byt k, aby bol rozdiel 2-vysledok mensi ako 10^-6\n");
i=0;
vysledok=0;
double rozdiel;
do
{
vysledok += 1.0/(pow(2,i));
i++;
rozdiel = 2-vysledok;
}
while (rozdiel>10e-6);
printf("Najmensie k take, aby bol rozdiel 2-vysledok<10^-6 je %d\n", i);