Obsah lekce:
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 ).
#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;
}
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.
#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;
}
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.
#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;
}
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.
#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;
}