\documentclass[a4paper,12pt]{article}

\usepackage[latin2]{inputenc}

%Vaje iz racunalništva
%Nina Kerčmar
%17.11.1997

\title{Programski jezik C}
\author{Nina Kercmar}
\date{17.11.1997}

\begin{document}

\maketitle

\section*{Obseg n-kotnika}

Imamo krog in vanj včrtamo n-kotnik. Izdelati moramo program,
ki nam bo izračunal obseg n-kotnika.

\subsection*{Potek dela}

Ugotoviti moramo splošno formulo za izračun obsega n-kotnika.  Vemo,
da je obseg n-kotnika malo manjši od obsega 2n-kotnika.  n-kotnik
včrtamo v enotski krog (torej, krog s polmerom 1) in ga razrežemo na
$n$ enakostraničnih trikotnikov.  Ti trikotniki so sestavljeni iz dveh
enako dolgih stranic (polmerov) in iz stranice $a$.  Naj bo kot med
polmeroma $2 \alpha$ in naj bo obsek n-kotnika $S_{n}$. Podobno
lahko razrežemo 2n-kotnik, le da imamo tukaj v trikotnikih polmera in
stranico $b$, kot med polmeroma $\alpha$ ter obseg $S_{2n}$.

Recimo, da poznamo obseg $S_n$. Potem lahko izračunamo $S_{2n}$ na
sledeč način:
%
\[
   a = 2 \cdot (1 \cdot \sin \alpha)  \rightarrow
   \sin \alpha = \frac{a}{2} = \frac{S_n}{2n}
\\ b = 2 \cdot (1 \cdot \sin \frac{\alpha}{2})   \rightarrow
   S_{2n} = 2n \cdot b
          = 4n \cdot \sin \frac{\alpha}{2}
\]
%
Ker velja
%
$\cos \alpha = 1 - 2 \sin^2 \frac{\alpha}{2}$ in
%
$\cos \alpha = \sqrt{1 - \sin^2 \alpha}$
%
izpeljemo
%
\[
  \sin \frac{\alpha}{2}                           =
  \sqrt{ \frac{1 - \sqrt{1 - \sin^2 \alpha}}{2} } =
  \sqrt{ \frac{1 - \sqrt{1 - (\frac{S_n}{2n})^2}}{2} }
\]
%
iz česar sledi
%
\begin{eqnarray*}
  S_{2n}
   &=& 4n \cdot \sin \frac{\alpha}{2}
\\ &=& 4n \cdot \sqrt{ \frac{1 - \sqrt{1 - (\frac{S_n}{2n})^2}}{2} }
\\ &=& 2n \cdot \sqrt{ 4 \frac{1 - \sqrt{1 - (\frac{S_n}{2n})^2}}{2} }
\\ &=& 2n \cdot \sqrt{ 2 \left(1 - \sqrt{1 - (\frac{S_n}{2n})^2} \right) }
\\ &=& 2n \cdot \sqrt{ 2 - 2 \sqrt{1 - (\frac{S_n}{2n})^2} }
\\ &=& 2n \cdot \sqrt{ 2 - \sqrt{4(1 - (\frac{S_n}{2n})^2} }
\\ &=& 2n \cdot \sqrt{ 2 - \sqrt{4 - 4(\frac{S_n}{2n})^2} }
\\ &=& 2n \cdot \sqrt{ 2 - \sqrt{4 - (2\frac{S_n}{2n})^2} }
\\ &=& 2n \cdot \sqrt{ 2 - \sqrt{4 - (\frac{S_n}{n})^2} }
\end{eqnarray*}
%
Zatorej, če poznamo $S_n$ poznamo tudi $S_{2n}$.

Preden bomo napisali program  preverimo našo formulo na
nekaj primerih:
%
\begin{itemize}
\item V krog včrtamo enakostranični trikotnik in dobimo:
%
\[
   a= \sqrt 3, S_{3}=3\cdot{\sqrt 3}
\]
\item Izračunajmo še obseg kvadrata, ki smo ga včrtali v enotski krog:
%
\[
   a= \sqrt{2}, S_{2}= 4 \sqrt{2}
\]
\end{itemize}

Napišimo program!:
%
{\tt
\begin{verbatim}
#include <stdio.h>
#include <conio.h>
#include <math.h>

#define sqr(x) x*x

#define DVA_PI 6.2831854

void main() {
  float s;
  int n;

  clrscr();

  n= 3;            /* zacetni priblizek je pravilni 3-kotnik */
  s= 3*sqrt(3);
  do {
    s= sqrt(2-sqrt(4-sqr(s/n)));
    n= 2*n;                      /* n=2n */
    s*= n;
    printf("Obseg %d-kotnik je %f, resnicni PI=%f\n", n, s, DVA_PI);
  } while(getch()==`d`);
} /* main */
\end{verbatim}
}

Začetni približek lahko dobimo tudi na drugačen način. Vzamemo pravilni
2-kotnik, ki je premer kroga in dobimo:
%
\[
   a= 2, S_{2}= 2 \cdot 2 = 4
\]
%
Torej
%
\begin{eqnarray*}
  S_4
   &=& 2 \cdot 2 \sqrt{2 - \sqrt{4-(\frac{4}{2})^2}}
\\ &=& 2 \cdot 2 \sqrt{2 - \sqrt{4-4}}
\\ &=& 4 \sqrt{2}
\end{eqnarray*}
%
Kar je pravilno.

\subsection*{Približek $2 \pi$}

Od tu dalje bomo naloge reševali na naslednji način:
%
\begin{enumerate}
\item \textbf{Kaj} bomo delali?
\item \textbf{Kako} bomo delali?
\item \textbf{Ali} deluje?
\item Celoten program.
\end{enumerate}

\subsubsection{Kaj?}

Napisali bomo funkcijo, ki bo izračunala približek $2\pi$:
%
{\tt
\begin{verbatim}
  float Pribl_dva_pi();
\end{verbatim}
}

\subsubsection{Kako?}

{\tt
\begin{verbatim}
#define sqr(x) x*x
float Pribl_dva_pi() {
  int Sn;

  n= 2;     /* zacetni priblizek Si je 2-kotnik*/
  Sn = 4 ;
  do {
    s = sqrt(2 - sqrt(4 - sqr(Sn)(n)));
    n = 2*n ;
    Sn = 2*Sn;
  } while (getch()==´d´);
  return Sn;
} /* Pribl_dva_pi */
\end{verbatim}
}

\subsubsection{Ali?}

{\tt
\begin{verbatim}
#include <stdio.h>
#include <math.h>

#define sqr(x) ((x)*(x))

void main(void) { /* funkcija, ki ne vrne nicesar */
  float s;
  clrscr();

  s= Pribl_dva_pi();
  printf("Priblizek je %f \n", s);
} /* main */
\end{verbatim}

\subsubsection{Celoten program}

{\tt
\begin{verbatim}
#include<stdio.h>
#include<conio.h>
/*--------------------------------------------------------------*/
#include<stdio.h>
#include<math.h>
#include<conio.h>
#define sqr(x) ((x)*(x))

float Pribl_dva_pi() {
  int n;         /* n-kotnik */
  float Sn;      /* obseg le-tega */

  n= 2;          /* zacetni priblizek je 2-kotnik */
  Sn= 4;
  do {
    s= sqrt (2 - sqrt ( 4 - sqr (s/n) ) );
    n= 2*n ;
    Sn= n*S_n;
    printf("n=%d, Sn=%f \n", n, Sn);
  } while(getch()==`d`);
  return Sn;
} /* Pribl_dva_pi */

/*------------------------------------------------------------*/
void main() {
   float s;
   clrscr();

   s = Pribl_dva_pi();
   printf("Priblizek je %f \n",s);
} /* main */
\end{verbatim}
}

\end{document}


