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

Týden 6

Prebrali sme:

  • switch
  • statické polia jednorozmerné
  • statické polia dvojrozmerné

Príklady

  • napíšte program, kde si môže používateľ vybrať či chce vypočítať obsah, obvod alebo uhlopriečku obdĺžnika a zvolený výpočet mu urobte

printf("Dobry den\n Ak chcete vypocitat obsah obdlznika, stlacte 1\n Ak chcete vypocitat obvod obdlznika, stlacte 2\n Ak chcete vypocitat uhlopriecku obdlznika, stlacte 3\n");

int vyber;

scanf("%d", &vyber);

switch(vyber)

{

  case 1:

    {

    int a, b; printf("Zadajte rozmery obdlznika"); scanf("%d, %d", &a, &b); printf("Obsah je %d\n", a*b); break;

    }

  case 2:

    {

    int a, b; printf("Zadajte rozmery obdlznika"); scanf("%d, %d", &a, &b); printf("Obvod je %d\n", 2*a+2*b); break;

    }

  case 3:

    {

     int a, b; printf("Zadajte rozmery obdlznika"); scanf("%d, %d", &a, &b); printf("Uhlopriecka je %f\n", sqrt(a*a + b*b)); break;   

    }

  default:

    {

       printf("Zadana volba neexistuje. Dovidenia."); break;

    }

}

 

  • do statického jednorozmerného poľa načítajte desať čísiel a spočítajte ich aritmetický priemer

double sucet = 0;

int i;

int pole[10];

for (i=0; i<10; i++)

{

   scanf("%d", &(pole[i]));

}

for (i=0; i<10; i++)

{

   sucet += pole[i];

}

printf("priemer je %f\n", sucet/10.0);

 

  • načítajte postupnosť piatich čísiel a overte, či je to neklesajúca postupnosť

int pole[5];

for (int i=0; i<5; i++) //deklaracia int vnutri cyklu vyzaduje prepinac kompilatora -std=c99 . nastavit sa to da cez settings -> compiler and debugger -> compiler settings -> other options -> do toho prazdneho okna vpisat prepinac -std=c99

{

  scanf("%d", &(pole[i]));  

}

int pocet=0;

for (int i=0; i<9; i++)

{

  if (pole[i]>pole[i+1])

    pocet++;

}

if (pocet==0)

  printf("Ano, je to neklesajuca postupnost");

else

  printf("Nie, nie je to neklesajuca postupnost");

 

  • napíšte program, ktorý dopočíta posledné číslo pre ISBN-10

//nacitame devat cisel

int pole[9];

for (int i=0; i<9; i++)

{

  scanf("%d", &(pole[i]));

}

int sucet=0;

for (int i=0; i<9; i++)

{

  sucet += (10-i)*pole[i];

}

int zvysok = sucet%11;

int zvysok = 11-zvysok;

if (zvysok == 10)

  printf("X");

else

  printf("%d", zvysok);

 

  • napíšte program, ktorý overí, či má zadaná matica súčet vo všetkých riadkoch, stĺpcoch a diagonálach rovnaký

//nacitanie matice !!! toto som si overila az po cviceniach, da sa to aj takto elegantne vo vnorenom cykle

int matica[3][3];

for (int i=0; i<3; i++)

{

  for (int j=0; j<3; j++)

    scanf("%d", &(matica[i][j]));

}

int sucet = 0;

//spocitame cisla v prvom riadku

for (int j=0; j<3; j++)

  sucet += matica[0][j];

int x=0;

//overime sucty vo vsetkych riadkoch

for (int i=0; i<3; i++)

{

   x=0; 

  for (int j=0; j<3; j++)

  {

   x += matica[i][j];

  }

  if (sucet!=x)

   {printf("NIE je to magicky stvorec"); return 1;}

}

 

//overime sucty vo vsetkych stlpcoch

for (int j=0; j<3; j++)

{

   x=0; 

  for (int i=0; i<3; i++)

  {

   x += matica[i][j];

  }

  if (sucet!=x)

   {printf("NIE je to magicky stvorec"); return 1;}

}

 

//overime sucty v diagonale zlava doprava

x=0;

for (int i=0; i<3; i++)

{

   x += matica[i][i];

}

  if (sucet!=x)

   {printf("NIE je to magicky stvorec"); return 1;}

 

//overime sucty vdiagonale zprava dolava

x=0;

for (int i=0; i<3; i++)

{

   x += matica[i][2-i];

}

  if (sucet!=x)

   {printf("NIE je to magicky stvorec"); return 1;}

 

 

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/de/411498/IB001-du2.pdf
Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/de/411498/du2.c