/////////////////////////////////////////////////////////////////////////////////
// ITS – Visoka Škola Strukovnih Studija Za Informacione Tehnologije
// https://www.its.edu.rs
// Predmet: Osnovi Programiranja – Programski jezik
// Primer: Program za tabeliranje funkcije
//
S=(1+X+X^1)+(1+X+X^2)+…..+(1+X+X^n)
///////////////////////////////////////////////////////////////////////////////

#include<stdio.h>

main()
{
/*Deklarisanje promenljivih*/
double X, Xmin, Xmax, dx, s=0, p=1,k;
int i, n;

/*Zaglavlje programa*/
printf(" *——————————————————–
-*
");
printf(" |                   TABELIRANJE SUME S                    |
");
printf(" |              S=(1+X+X^1)+….+(1+X+X^n)                 |
" );
printf(" *———————————————————*
");    

       
/*Poruka korisniku o unosu minimalne vrednosti za X*/
printf("
>>Unesite minimalnu vrednost za X: Xmin=");
scanf("%lf",&Xmin);

/*Poruka korisniku o unosu maximalne vrednosti za X*/
printf("
>>Unesite maximalnu vrednost za X: Xmax=");
scanf("%lf",&Xmax);

      /*Ispitivanje tacnosti unosa za trazene vrednosti Xmin i Xmax*/
      if(Xmin>Xmax)
      {
           /*poruka korisniku o pogresnom unosu za date vrednosti */
           printf("
*———————————*
");
           printf(" |  UNELI STE POGRESNE VREDNOSTI!  |
");
           printf(" |          Xmin>Xmax              |
");
           printf(" *———————————*
");
           return;
         }
 
        
/*Poruka korisniku o unosu koraka dx*/
         printf("
>>Unesite korak dx:                 dx=");
         scanf("%lf",&dx);
 
         /*Izracunavanje maximalnog broja koraka izmedju unetih Xmin i Xmax*/
         k=Xmax-Xmin;
 
        
/*provera o tacnosti unosa koraka*/
         if(dx>k)
         {
               /*Poruka korisniku o pogresnom unosu koraka dx*/
               printf("
*——————————————-*
");
               printf(" |       UNELI STE POGRESNU VREDNOST!     |
");                       
               printf(" | Pogresna velicina koraka [dx>(Xmax-Xmin)] |
");
               printf(" *——————————————-   *
");
               return;
         }

         /*Poruka korisniku o unosu stepena funkcije n*/
         printf("
>>Unesite stepen funkcije n: n=");
         scanf("%d",&n);

         /*Zaglavlje tabele-za lepsi prikaz*/
         printf("
+————+————+
");
         printf(" |      X     |      S     |
");
         printf(" +————+————+
");

 /*Pocetak for petlje koja se krece od unetih Xmin do Xmax sa korakom dx*/
 for(X=Xmin;X<=Xmax;X+=dx)

  /*Pocetak bloka naredbe za X*/
  {
       /*Pocetak for petlje koja od stepena i=1 do unetog n-to
       stepena sa uvecanjem za 1*/
        for(i=1;i<=n;i++)
  
                      /*Pocetak bloka naredbe za stepen*/
                        {
                                    /*izracunavanje zadate funkcije*/
                                    p*=X;
                                    s+=(1+X+p);
  
                       
/*Kraj bloka naredbe za stepen*/
                        }
                        /*Ispis rezultata i tabeliranje funkcije*/
                        printf(" | %8.2f   | %8.2f   |
",X,s);
                        p=1;s=0;
                       
/*Zatvaranje tabele*/
                        printf(" +————+————+
");
         
/*Kraj bloka naredbe zapromenljivu X*/
         }
        
/*Ispisivanje praznog reda*/
         printf("
");
 
}