Interaktívna osnova pre IB001/10 a IB001/11

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