"Problem Josephusa" rozwiązany za pomocą użycia struktury i klasy.
struct lista
{
int x;
lista *nastepna;
lista(int a,lista *nastepna2)
{
x=a;
nastepna=nastepna2;
}
};
typedef lista *testowa;
class Cykliczna
{
private:
int a,b;
public:
Cykliczna(int x,int y)
{
a=x;
b=y;
int i;
testowa nastepna2=new lista(1,0);
nastepna2->nastepna=nastepna2;
testowa nastepna3=nastepna2;
for(i=2;i<=x;i++)
nastepna3=(nastepna3->nastepna=new lista(i,nastepna2));
while(nastepna3!=nastepna3->nastepna)
{
for(i=1;i<y;i++)
nastepna3=nastepna3->nastepna;
nastepna3->nastepna=nastepna3->nastepna->nastepna;
}
cout<<nastepna3->x<<endl;
}
};
Gry liczbowe Lotto, które są zarówno szansą na polepszenie materialnego bytu,jak i hazardowym złudzeniem (zakładając iluzoryczne szansę wygrania głównej wygranej), to również doskonałe ćwiczenie na operowaniu na tablicach i poznaniu funkcji random.
#include <iostream>
#include <stdlib.h>
#include <unistd.h>
using namespace std;
void Sortuj(int *tabela, int ile)
{
int i,j,temp;
for(i=1;i<ile;i++)
{
j=i;
temp=tabela[j];
while((j>0) && (tabela[j-1]>temp))
{
tabela[j]=tabela[j-1];
j--;
}
tabela[j]=temp;
}
}
class Gry_liczbowe
{
private:
int *tab,ile;
public:
Gry_liczbowe(int x, int y)
{
int i,j,liczba;
tab=new int[x];
ile=y;
int *zast=new int[x];
for(i=0;i<x;i++)
zast[i]=0;
j=0;
do
{
do
{
liczba=rand()%x;
}while(zast[liczba]!=0);
zast[liczba]=1;
tab[j]=liczba+1;
++j;
}while(j<y);
Sortuj(tab,ile);
for(i=0;i<y;i++)
{
cout<<tab[i]<<" ";
}
cout<<endl;
delete zast;
}
~Gry_liczbowe()
{
delete tab;
}
};
int main(int argc, char** argv)
{
srand(time(NULL));
Gry_liczbowe Multi_Multi(80,20);
Gry_liczbowe Lotto(49,6);
Gry_liczbowe Mini_Lotto(42,5);
Gry_liczbowe Kaskada(24,12);
return 0;
}
Sortowanie bąbelkowe, wałkowane dawniej w edukacji przy okazji nauki programowania wTurbo Pascalu. Tutaj wersja C/C++.
void sortowanie_babelkowe(int *tablica, int ilosc)
{
int i,j,tymczasowa;
for(i=0;i<ilosc;i++)
{
for(j=ilosc-1;j<=i;j--)
if(tablica[j]<tablica[j-1])
{
tymczasowa=tablica[j-1];
tablica[j-1]=tablica[j];
tablica[j]=tymczasowa;
}
}
}
Funkcja odwracająca tekst, operująca na tablicach char.
void odwrotnosc(char *wyraz)
{
int dl,i;
dl=strlen(wyraz);
char *odwrotny=new char[dl+1];
for(i=0;i<dl+1;i++)
{
odwrotny[i]=wyraz[dl-1-i];
}
cout<<"Odwrotny tekst od -"<<wyraz<<" jest "<<odwrotny<<endl;
delete odwrotny;
}
Silnia przedstawiona jako klasa:
class Silnia
{
private:
int iloczyn;
public:
Silnia(int liczba)
{
int i;
iloczyn=1;
for(i=1;i<liczba+1;i++)
iloczyn*=i;
}
int Wynik()
{
return iloczyn;
}
};
Liczby doskonała to liczba, która równa jest sumie wszystkich swoich dzielników mniejszych od niej samej.
bool czy_liczbaDoskonala(int liczba)
{
int i,suma;
suma=0;
for(i=1;i<liczba;i++)
{
if(liczba%i==0)
suma+=i;
}
if(suma==liczba)
return true;
else
return false;
}
Funkcja sprawdzająca, czy podana liczba należy ro rodziny liczb pierwszych:
bool czy_Pierwsza(int x)
{
int i,suma=0;
for(i=1;i<x+1;i++)
{
if(x%i==0)
++suma;
}
if(suma==2)
return true;
else
return false;
}