Příklad 1
/*
Je dáno pole maximálně 100 celých čísel.
Vytvořte program s těmito funkcemi:
- Nacti - načte číslo N a pole N celých čísel z klávesnice
- Nacti - načte pole N celých čísel z textového souboru
- Vypis - vypíše pole čísel na obrazovku
- Serad - utřídí pole čísel vzestupně nebo sestupně podle
zadaného parametru
- Vymena - vymění hodnoty dvou parametrů této funkce
- Porovnej(a, b, vetsi) - vložená funkce, která porovná
parametry a, b následovně:
Pokud parametr vetsi = true, funkce vrací true, je-li a > b
Pokud parametr vetsi = false, funkce vrací true,je-li a < b
- main:
- načte pole čísel ze zvoleného zdroje (klávesnice, soubor)
- vypíše pole čísel na obrazovku
- utřídí pole vzestupně nebo sestupně podle zadání uživatele
- vypíše utříděné pole na obrazovku
*/
#include<iostream>
using namespace std;
#pragma warning(disable : 4996)
void Nacti(int &pocet, int* pole, int maxpocet)
{
do{
cout<<"Zadej pocet prvku: ";
cin>>pocet;
}while(pocet>maxpocet || pocet<1);
for(int i=0;i<pocet;i++){
cout<<"Zadej "<< i+1 <<". prvek: ";
cin>>pole[i];
}
}
void Chyba(const char *text)
{
cout << text << "\n";
system("pause");
exit(1);
}
void Nacti(const char *nazev,int &pocet, int* pole, int maxpocet)
{
FILE *soubor;
const char *text = "Chyba pri cteni ze souboru";
soubor = fopen (nazev,"rt");
if (soubor == 0) Chyba("Chyba pri otevreni souboru");
if (fscanf(soubor,"%d", &pocet) != 1) Chyba(text);
if (pocet>maxpocet || pocet<1) Chyba(text);
for (int i=0;i<pocet;i++)
{
if (fscanf(soubor,"%d", &pole[i]) != 1) Chyba(text);
}
fclose(soubor);
}
void Vypis(const int* pole, int pocet)
{
for(int i=0;i<pocet;i++){
cout<<pole[i]<<" ";
}
cout<<"\n";
}
inline bool Porovnej(int a, int b, bool vetsi)
{
return vetsi ? a>b:a<b;
}
void Vymena(int &a, int &b)
{
int pom;
pom=a;
a=b;
b=pom;
}
void Serad (int* pole, int pocet, bool vzestupne)
{
int i,j;
bool zmena;
for (i=0;i<pocet-1;i++)
{ zmena=false;
for (j=0;j<pocet-i-1;j++)
{
if (Porovnej(pole[j],pole[j+1],vzestupne))
{
Vymena(pole[j],pole[j+1]);
zmena=true;
}
}
} if (!zmena) return;
}
Main…
int main()
{
int s,n;
const int maxn= 100;
int pole[maxn];
cout << "Nacteni ze souboru :1 ,zadani hodnot :2 :";
cin >> s;
if (s==1)
{
char nazev[256];
cout <<"Zadej nazev souboru: ";
cin >> nazev;
Nacti(nazev,n,pole,maxn);
}
else
{
Nacti(n,pole,maxn);
}
Vypis (pole,n);
cout << "Jak to chcete setridit? : 1...vzestupne 2...sestupne\n";
cout << "Vas vyber: ";
cin >> s;
Serad(pole,n,s==1);
Vypis (pole,n);
system ("pause");
return 0;
}