Anglická verze
logolink

< Zpět na seznam lekcí

Základní programátorské konstrukce II

AlgortimyObsah lekce:

  • Procedura Prumer, která vypíše průměrnou hodnotu pole
  • Procedura Kladne, která vypíše všechny hodnoty pole, které jsou kladné
  • Procedura Vydel, která vydělí mezi sebou dvě čísla a napíše výsledek
  • Procedura Porovnej, která mezi sebou porovná tři čísla a napíše výsledek

Procedura Prumer, která vypíše průměrnou hodnotu pole

K výpočtu průměru všech prvků pole budeme potřebovat dvě proměnné. Soucet - určuje celkový součet hodnot prvků pole a prum - proměnná sloužící k uložení průměru. Pří zadávání prvků do pole je zároveň ukládáme do soucet, ale nesmíme zapomenout na to, že nestačí přičíst vkládanou hodnotu, ale i hodnotu soucet ( soucet=soucet+p[i] ). Jestliže je pole celé vyplněné, tak se vypočítá průměr- celkový součet vydělíme počtem prvků pole ( prum:=soucet/n ).

Algoritmus pro výpis průměru
#include "stdafx.h"
#define N 10
int _tmain(int argc, _TCHAR* argv[])
{
  int p[N];
  int soucet;
  float prum;
  soucet=0;
  prum=0;
  for (int i=1; i < N; i++)
   {
    printf("Zadejte hodnotu %d pole",i);
    scanf("%d",p[i]);
    soucet=soucet+p[i];
   };
  prum=(float)soucet/n;
  printf("\n");
  printf("Prumerna hodnota prvku pole je: %.2f",prum);
  printf("\n");
  printf("Pro ukonceni programu stisknete libovolnou klavesu");
  fflush(stdin);
  getchar();
  return 0;
}

Procedura Kladne, která vypíše všechny hodnoty pole, které jsou kladné

K výpisu kladných čísel nám poslouží cyklus FOR pomocí něhož budeme polem procházet a pokud bude hodnota prvku pole větší nebo rovna nule ( if(p[i]>=0) ), tak jej vypíšeme. Pro výpis prvků do jednoho řádku zavedeme proměnnou pocet , která udává počet kladných čisel pole. Pokud je hodnota pocet na 0 ( pocet==0) ), tak vypíšeme printf("Kladne hodnoty pole jsou: %d",p[i]).

Pokud vypisujeme druhé, třetí, ... číslo, tedy pocet>0 tak se vypíše pouze čárka a hodnota pole ( printf(', ',p[i]) ). Docílíme tím oddělení jednotlivých hodnot.

Algoritmus pro výpis kladných čísel
#include "stdafx.h"
#define N 10
int _tmain(int argc, _TCHAR* argv[])
{
  int p[N];
  int pocet;
  pocet = 0;
  for (int i=1; i < N; i++)
   {
    printf("Zadejte hodnotu %d pole",i);
    scanf("%d",p[i]);
    soucet=soucet+p[i];
   };
  for (int i=1; i < N; i++)
   {
    if(p[i]>=0)
     {
      if(pocet==0) printf("Kladne hodnoty pole jsou: %d ",p[i])
      else printf(', ',p[i]);
    pocet=pocet+1;
     }
   }
  if (pocet==0)
   {
    printf("\nZadna z hodnot prvku pole neni kladna\n");
   }
  printf("\n");
  printf("Pro ukonceni programu stisknete libovolnou klavesu");
  fflush(stdin);
  getchar();
  return 0;
}

Procedura Vydel, která vydělí mezi sebou dvě čísla a napíše výsledek

Naším cílem je vytvořit program který bude dělit dvě libovolná čísla. K zadání čísel použijeme funkci scanf, která čeká na stisk klávesy a uloží hodnotu do proměnné v závorce. Musíme si uvědomit, že nulou není možne dělit a tak chceme po uživateli, aby zadal jakékoli číslo kromě nuly. Toho dosáhneme cyklem while, který po uživateli bude pořád vyžadovat, aby zadal čislo jiné než nula, jinak ho nepustí dál.

Po zadání hodnot se podíl a a b uloží do proměnné výsledek, která musí byt datového typu float, protože při podílu dvou čísel nemusí výsledek vyjít v celých číslech.

Pokud by jste pří výpisu podílu napsali pouze %f a ne %.2f program by vám vypsal např. při zadání koeficientů a=10 a b=2 vysledek =5.000000, ale výsledek by měl být 5. Číslo .2 značí počet desetinných míst za desetinnou čárkou.

Algoritmus pro podíl dvou čísel
#include "stdafx.h"
#define N 10
int _tmain(int argc, _TCHAR* argv[])
{
  int a, b;
  float vysledek;
  printf("Zadejte cislo a:");
  scanf("%d",&a);
  writeln("Zadejte cislo b:");
  scanf("%d",&b);
  if (b==0)
   {
    while (b==0)
     {
      printf("Deleni nulou neni mozne, zadejte prosim jine cislo.");
      scanf("%d",&b);
     }
     vysledek=(float)a/b;
     printf("Podil zadanych hodnot: %d/%d = %.2f",a,b,vysledek);
    end
  else
   {
     vysledek=(float)a/b;
     printf("Podil zadanych hodnot: %d/%d = %.2f",a,b,vysledek);
   }
  printf("\n");
  printf("Pro ukonceni programu stisknete libovolnou klavesu");
  fflush(stdin);
  getchar();
  return 0;
}

Procedura Porovnej, která mezi sebou porovná tři čísla a napíše výsledek

Princip této funkce je velmi podobný Bubblesortu (který je zmíněnýv předchozí lekci), ale místo cyklu WHILE zde používáme cyklus FOR a neřadíme čísla od nejmenšího po největší, ale naopak. Máme porovnat tři čísla a tak nastavíme hodnotu const na 3. Pro seřazení prvků nám stačí, aby cykly FOR proběhnuly pouze 2x (tedy n-1 ). K výpisu čísel od největšího po nejmenší poslouží opět FOR cyklus.

Algoritmus pro porovnání tří čísel
#include "stdafx.h"
#define N 3
int _tmain(int argc, _TCHAR* argv[])
{
 int p[N[;
     int i,k,pom;
  for i:=1 to n do
   begin
    writeln('Zadejte hodnotu ',i,' pole');
    readln(p[i]);
   end;
  for (k=0; k < n-1; k++)
   {
    for (i=0; i < n-1; i++)
     {
      if (p[i+1]>p[i])
       {
        pom=p[i];
        p[i]=p[i+1];
        p[i+1]=pom;
       }
     }
   }
  for (i=1; i < n; i++)
   {
    if (i==1) printf("Porovnana cisla od nejvetsiho po nejmensi: %d", p[i]);
    else
     printf(", ",p[i]);
   }
  printf("\n");
  printf("Pro ukonceni programu stisknete libovolnou klavesu");
  fflush(stdin);
  getchar();
  return 0;
}
webdesign, xhtml, css, php - Mgr. Michal Mikláš