C/C++

POS-51

Infinity Driver
Член од
11 ноември 2008
Мислења
1.411
Поени од реакции
445
Да се напише итеративна функција suma која има 1 влезен параметар n, кој е природен број, а на излез ја враќа сумата 1+2+3+…+n.
Пример: suma(5) Враќа: 15
и во рекурзивен облик. Ќе може решение ?
Во ц xD
 
Член од
10 јули 2012
Мислења
87
Поени од реакции
54
Код:
int sumRecursive(int n)
{
    if(n < 2)
        return 1;
    else
        return n + sumRecursive(n-1);
}
...
int sumIterative(int n)
{
    int i, sum = 0;
    for(i = 0; i <= n; i++)
    {
        sum += i;
    }
    return sum;
}
 
Г

Гучи

Гостин
Ај мала помош..
За низа од н клубови внесени преку тастатура да се одреди и печати оној со најмногу освоени бодови. Секој клуб е опишан со име и број на освоени поени.

Пр.
Внеси број на клубови: 3
Име на прв клуб: Ливерпул
Број на поени на прв клуб: 77
Име на втор клуб......

И на крај да печати:
Прв е Ливерпул со 77 поени.


Ја почнав ја, само незнам да ја довршам :facepalm:

Код:
struct klub_podatoci {
char ime[20];
int poeni;
} klubovi[10];
int main(int argc, char *argv[])
{
  const int max=30;
int n,i,j;
struct klub_podatoci {
char ime[20];
int poeni;
} klubovi[max];
printf("Vnesi broj na timovi: ");
scanf("%d",&n);
printf("Vnesi podatoci za timovite: \n");
for (i=0;i<n;i++) {
printf("Vnesi ime na %d tim ",i+1);
scanf("%s",klubovi[i].ime);
printf("Vnesi broj na poeni na %d tim ",i+1);
scanf("%d",&klubovi[i].poeni);
}
 
Член од
10 јули 2012
Мислења
87
Поени од реакции
54
Код:
struct klub_podatoci {
    char ime[20];
    int poeni;
};
 
int main(int argc, char *argv[])
{
    const int max=30;
    int n,i,j;
    klub_podatoci klubovi[max];
 
    printf("Vnesi broj na timovi: ");
    scanf("%d",&n);
    printf("Vnesi podatoci za timovite: \n");
 
for (i=0;i<n;i++)
{
    printf("Vnesi ime na %d tim ",i+1);
    scanf("%s",klubovi[i].ime);
    printf("Vnesi broj na poeni na %d tim: ",i+1);
    scanf("%d",&klubovi[i].poeni);
}
 
int maxPoints = klubovi[0].poeni;
int indexTeam = 0;
for(i = 1; i < n; i++)
{
    if(maxPoints < klubovi[i].poeni)
    {
        maxPoints = klubovi[i].poeni;
        indexTeam = i;
    }
}
printf("Tim so najmogu poeni e: %s\n",klubovi[indexTeam].ime);
}
 
Член од
4 август 2011
Мислења
178
Поени од реакции
517
Ако може мала помош за една елементарна задача во ц++; дали е овој код добар и што требa да имам во main?

Да се напише структура за претставување на хотелска соба. За секоја соба се чуваат информации за број на соба, број на кревети, тип (апартман/студио), кат на кој се наоѓа собата во хотелот, дали има клима-уред. Покрај тоа, треба да се обезбеди структура за претставување на хотел во која се чуваат информации за името на хотелот (низа од 20 знаци), адреса (низа од 30 знаци), низа од соби во хотелот (максимум 100) и број на соби во хотелот. Треба да се обезбеди функција за определување на цена на хотелска соба за 7 дена ако се дадени цените за:
-кревет: 15€
-I кат: 10€, II кат: 7€, III кат: 5€
-апартман: 5€
-клима-уред: 5€

Дополнително, да се напише функција за печатење на информациите за даден хотел во формат:
Хотел имеНаХотел
Адреса: адреса
1. собаБр брКревети тип кат климаУред ценаЗаЕденДен
2. собаБр брКревети тип кат климаУред ценаЗаЕденДен
3. ...



#include<iostream>

using namespace std;

struct HotelskaSoba
{
int broj_soba;
int broj_kreveti;
char tip[2]={"apartman","studio"};
int kat;
bool klima_ured;
};

struct Hotel
{
char ime[20];
char adresa[20];
HotelskaSoba sobi[100];
int broj_sobi;
};

int cena(struct HotelskaSoba soba)
{
int vkupno=0;

for(int i=0;i<=soba.broj_kreveti;i++)
vkupno+=15;

if (soba.kat==1)
vkupno+=10;
else
if(soba.kat==2)
vkupno+=7;
else
if(soba.kat==3)
vkupno+=5;

if((strcmp(soba.tip,"apartman"))==0)
vkupno+=5;

if (klima_ured)
vkupno+=5;

return vkupno;
}

void pecatiHotel(struct Hotel h)
{
cout<<"Hotel"<<h.ime<<endl;
cout<<"Adresa:"<<h.adresa<<endl;

for(int i=1;i<=broj_sobi;i++)
{
cout<<i<<". sobaBroj: "<<h.sobi.broj_soba<<"\tbrojKreveti: "<<h.sobi.broj_kreveti<<"\ttip: "<<h.sobi.tip<<"\tKlimaUred:"<<h.sobi.klima_ured<<"\tcenaZaEdenDen:"<<(cena(h))/7<<endl;
}
};

int main()
{
.
.
.
};
 

POS-51

Infinity Driver
Член од
11 ноември 2008
Мислења
1.411
Поени од реакции
445
Ај мала помош..
За низа од н клубови внесени преку тастатура да се одреди и печати оној со најмногу освоени бодови. Секој клуб е опишан со име и број на освоени поени.

Пр.
Внеси број на клубови: 3
Име на прв клуб: Ливерпул
Број на поени на прв клуб: 77
Име на втор клуб......

И на крај да печати:
Прв е Ливерпул со 77 поени.


Ја почнав ја, само незнам да ја довршам :facepalm:

Код:
struct klub_podatoci {
char ime[20];
int poeni;
} klubovi[10];
int main(int argc, char *argv[])
{
  const int max=30;
int n,i,j;
struct klub_podatoci {
char ime[20];
int poeni;
} klubovi[max];
printf("Vnesi broj na timovi: ");
scanf("%d",&n);
printf("Vnesi podatoci za timovite: \n");
for (i=0;i<n;i++) {
printf("Vnesi ime na %d tim ",i+1);
scanf("%s",klubovi[i].ime);
printf("Vnesi broj na poeni na %d tim ",i+1);
scanf("%d",&klubovi[i].poeni);
}
На Фон си ?
 
Член од
4 август 2011
Мислења
178
Поени од реакции
517
Ако може помош околу конструкторите и преоптоварувањата, што е точно а што не е, и што треба да стои во последното оптоварување на операторот +=?


Да се дефинира класа Avion за кој ќе се чуваат информации за:
- производител (низа од 50 знаци),
- тип на авионот (динамички алоцирана низа од знаци)
- број на седишта (цел број)
За потребите на оваа класа да се напишат
- конструктор, copy конструктор и деструктор
- оператор за доделување =
- set и get методи за атрибутот број на седишта
- операторот << за проследување на ostream (печатење) на објект од класата Avion.
- оператор за споредување == кој споредува два објекти од класата Avion по атрибутот број на седишта
Дополнително да се дефинира класа Aviokompanija која се чуваат:
- листа на авиони кои ги поседува (динамички алоцирано поле од објекти од класта Avion)
- број на авиони кои ги поседува (цел број)
За оваа класа да се напишат соодветен конструктор, copy конструктор и деструктор.
Да се преоптовари операторот += за додавање нов авион во авиокомпанијата .

PHP:
#include<iostream>
 
using namespace std;
 
clas Avion
{
private:
char proizvoditel[50];
char *tip;
int br_sediste;
public:
Avion(char *firma=" ",char *t=" ", int sed=0) //konstruktor
{
strcpy(proizvoditel,firma);
tip=new char[strlen(t)+1];
strcpy(tip,t);
br_sediste=sed;
}
 
Avion(const Avion &a) //copy konstruktor
{
strcpy(proizvoditel,a.proizvoditel);
tip=new char[strlen(a.tip)+1];
strcpy(tip,a.tip);
br_sediste=a.br_sediste;
}
~Avion() //destruktor
{
delete[]tip;
}
 
Avion &operator=(const Avion &a)
{
//sto treba da pravam ovde? da dodeluvam vrednosti ??
//primer:
proizvoditel=a.proizvoditel;
br_sediste=a.br_sediste //... ?
 
//...
 
return *this;
 
}
void setSedista(int vkupno)
{
br_sedista=vkupno;
}
 
void getSedista()
{
return br_sedista;
}
 
friend ostream &operator<<(ostream &out_file, const Avion &a)
{
out_file<<a.proizvoditel<<" "<<a.tip<<" "<<a.br_sedista<<endl; //korektno??
 
return (out_file);
}
 
bool operator==(const Avion &a1,const Avion &a2)
{
return (a1.br_sedista==a2.br_sedista);
}
 
};
 
class Aviokompanija
{
private:
Avion *lista;
int br_avioni;
 
public:
Aviokompanija(Avion *l=" ",int vkupno)
{
lista=new char[br_avioni];
strcpy(lista,l);
br_avioni=vkupno;
}
Aviokompanija(const Aviokompanija &ak)
{
lista=new char[ak.br_avioni];
strcpy(lista,ak.lista);
br_avioni=ak.br_avioni;
}
~Aviokompanija()
{
delete []lista;
}
 
Aviokompanija &operator+=(const Aviokompanija &ak)
{
// sto da pravam ovde?
}
};
едит од модератор.
Нареден пат кога поставуваш некое прашање со некој долг код, прво стави како php код, после среди малце да е читлив кодот за некој што сака да помогне да му е полесно.
Mr.InF3ction
 
Член од
4 август 2011
Мислења
178
Поени од реакции
517
Извинување од моја страна! Не знаев за опцијата php код.
 
Член од
10 јули 2012
Мислења
87
Поени од реакции
54
Ако може помош околу конструкторите и преоптоварувањата, што е точно а што не е, и што треба да стои во последното оптоварување на операторот +=?
Класата Авион ти е супер. Операторот за присвојување треба да изгледа вака
Код:
Avion &operator=(const Avion &a)
{
    if(this != &a)
    {
        strcpy(proizvoditel, a.proizvoditel);
        delete [] tip;
        tip = new char[strlen(a.tip) + 1];
        strcpy(tip, a.tip);
    }
    return *this;
}
За класата Авиокомпанија немаш констуктор за копирање и деструктор, но би требало да ги знаеш (за другата класа ги имаш, истиот принцип ти е ).

И една забелешка, ако ти е за на испит може да ти одземат бодови, кога на функција, едните аргументи ги даваш по подразбирање ( со терминологијата сум слаб, ама мислам дека така се викаат), а на другите не, тие што ги даваш по подразбирање треба да се на крајот од листата, или пак сите да се такви. Конкретно ти зборам за конструкторот таму ти е:

Aviokompanija(Avion *l=" ",int vkupno) а треба да биде
Aviokompanija(int vkupno, Avion *l=" ")


Операторот += треба да ти додаде нов Авион во веќе создадената низа од авиони. Фактички во некој објект од класата Авиокомпанија ти имаш низа од Авиони, сите од кој се создадени со помош на аргументите по подразбирање на конструкторот (Avion (char *firma = " ", char *t = " ", int sed = 0) ). Значи може да се каже имаш празна листа од Авиони. Е сеа со помош на овој оператор ти во оваа листа треба да додеш некој нов објект од тип Авион. Буквално додавање нема да има, затоа на помош тука може да ти дојде операторот за присвојување кој што ти го напишав погоре, зошто ќе треба на празен објект да присвоиш некој непразен :)

Идејата е:
- аргументот br_avioni освен што ти покажува колку авиони има, ти покажува и на кое место во листава треба да додадеш - ќе се користи како индекс за прво празно место.
- кога ќе додаваме нов авион, го присвојуваме во листата на местото што ќе го покажува br_avioni и после го инкрементираме и него, за наредното додавање да е на наредното место.

Значи, сумираме, веќе имаш создадена низа од Авиони во објект од Авиокомпанија, само треба да додадеш на неа нов Авион. Операторот нема да создаде нов објект и да го врати, туку ќе го измени постоечкиов ( ќе биде void ) и ќе го изменува така што ќе додава нов објект од тип Авион ( ќе прима аргумент, објект Авион ) или
Aviokompanija &operator+=(const Aviokompanija &ak) - треба да биде променето во
void operator+=(const Avion &ak)
Внатре во функцијата нема потреба да има лудории туку ќе го искористиш веќе предефирианиот оператор = за Авион и инкрементираш br_avioni.

Го пишувам само операторот, другите ги знаеш
Код:
void Aviokompanija::operator+=(const Avion &ob)
{
    lista[br_avioni++] = ob;
}
 
Член од
4 август 2011
Мислења
178
Поени од реакции
517
1.Да се напише класа Caj кoја oпишува даденo пакување чај. Потребни информации за секој тип на чај се следните: име(максимум 15 знаци), број на кесички во пакувањето, грамови по кесичка(цел број), количина на кофеин по кесичка (во милиграми). За дизајнираната класа да се обезбедат конструктори и деструктори.
Да се преоптовари операторот != за споредување на чаевите, така што чаевите не се со иста јачина докплку количината на кофеин по кесичка им се разликува за повеќе по 3 милиграми.
Да се преоптовари операторот --за намалување на количината кофеин по кесичка за 1 милиграм.
Да се преоптовари операторот -= за намалуваоњ на милиграмите кофеин по кесичка за поредена вредност.
Да се преоптовари операторот <<за печатење на екран.

Да се напише класа Prodavnica_caevi која ќе има инфпрмации за името на продавницата (низа од 40 знаци), листа (динамички алоцирана) од Caj-еви кои се продаваат во продавницата и број на различни чаеви. За класата да се обезбедат конструктори и деструктори.
Да се преоптовари операторот += за додавање на нов чај во продавницата (доколку чајот веќе постои вп продавницата да не се додава. Проверката да се направи според името).
Да се преоптовари операторот -= кој брише чај од листата на чаеви(чајотсе добива како десен аргумент на операцијата)

Надвор од класите да се напише функција poinakvi која како аргумент добива продавница и чај, а на екран ќе ги испечати сите оние чаеви во продавницата кои се различни по наведениот чај по количината на кофеин (односно количината на кофеин им се разликува за повеќе од 3 милиграми).



PHP:
#include<iostream>
 
#include<cstring>
 
 
 
using namspace std;
 
 
 
class Caj
 
{
 
      private:
 
              char ime[15];
 
              int kesicki;
 
              int gramovi;
 
              int kofein;              //kofein e vi miligrami, dali treba int?
 
      public:
 
            Caj(char *i=" ",in k=0,int gram=0;int kof=0)
 
            {
 
                      strcpy(ime,i);
 
                      kesicki=k;
 
                      gramovi=gram;
 
                      kofein=kof;
 
                      } 
 
            Caj(const Caj &c)
 
            {
 
                      strcpy(ime,c.ime);
 
                      kesicki=c.kescki;
 
                      gramovi=c.gramovi;
 
                      kofein=c.kofein;
 
                      }
 
              ~Caj() {}
 
                             
 
              Caj operator!=(const Caj &c1,const Caj &c2)
 
              {
 
                  if((c1.kofein<c2.kofein+3)&&(c2.kofein>c1.kofein+3))
 
                  return *this;
 
              } 
 
              Caj operator--(const Caj &c)
 
              {
 
                  return c.kofein--;                // vo red?
 
              }
 
              Caj &operator-=(const Caj &c, int vrednost)
 
              {
 
                  c.kofein-=vrednost;
 
                  return c.kofein;          //ili mozebi return *this?
 
              }
 
              friend ostream &operator<<(ostream &out, const Caj &c)
 
              {
 
                    out<<c.ime<<" "<<c.kesicka<<" "<<c.gramovi<<" "<<c.kofein<<endl;
 
                    return out;
 
                    }
 
      };
 
 
 
      class Prodavnica_caevi
 
      {
 
            private:
 
                    char ime[40];
 
                    Caj *lista;
 
                    int broj;
 
            public:
 
                  Prodavnica_caevi(char *i=" ",char *l=" ",int vkupno=0)
 
                  {
 
                                        strcpy(ime,i);
 
                                        lista=new char[strlen(l)+1];
 
                                        strcpy(lista,l);
 
                                        broj=vkupno;
 
                                        }
 
                  Prodavnica_caevi(const Prodavnica_caevi &p)
 
                  {
 
                                          strcpy(ime,p.ime);
 
                                          lista=new char[strlen(p.lista)+1];        // korektno?
 
                                          strcpy(lista,p.lista);
 
                                          broj=p.broj;
 
                                          }
 
                  ~Prodavnica_caevi()
 
                  {
 
                                      delete [] lista;
 
                                      }           
 
                                         
 
                                     
 
                                                 
 
                  Prodavnica_caevi &operator+=(const Prodavnica_caevi &p, char *nov)
 
                  {
 
                          //preku strcmp gledam dali imeto na noviot caj veke postoi
 
                          //korektno?
 
                       
 
                          if((strcmp(nov,p.lista))!=0)
 
                          {
 
                                    for(int i=0;i<broj;i++)    //sakam da proveram dali ima mesto vo prodavnicata za nov caj
 
                                                                //spored toa sto BROJ  mi e brojot na caevi vo prodanicata
 
                                                                //no dali e ovde ovoj for ciklus potreben?
 
                                          lista+=nov;          // ...? 
 
                                                      }
 
                          else
 
                              cout<<"Cajot veke postoi"<<endl;                       
 
                               
 
                               
 
                                    }
 
 
 
Prodavnica_caevi &operator-=(const Prodavnica_caevi &p, char *brisi)
 
                  {
 
                                    if((strcmp(brisi,p.lista))==0)    //slicno nesto pravam i ovde
 
                                                                      //sto ponatamu?
 
                                    }                             
 
                                   
 
          void poinakvi(Prodavnica_caevi &p, Caj &c)
 
          {
 
              //dali ovde mozam da go iskoristam preoptovaruvanjeto na !=    ??
 
          } 
 
 
 
            };



И уште едно прашање; во една класа private членови се …….. и “листа (динамички алоцирана низа од динамички алоцирани низи од знаци)”.
Нешто вака: **lista ??
Дали треба да има два пати:
lista=new char[…] ??
 
M

Mr.InF3ction

Гостин
За pre :
Намалуваш или зголемуваш тоа што треба за еден и го враќаш тековниот објект со *this. (функцијата враќа референца )
Гледаш дека функцијата враќа објект, а ти се обидуваш да вратиш kofein..пробај да компајлираш и читај грешките...помагаат многу
PHP:
 Caj& operator--()
 
              {
                kofein--;
                return kofein ;
                // ili return --kofein;
              // return kofein--;                // vo red? НЕ
 
              }
За пост:
Правиш копија од објектот. оргиналот намалуваш или зголемуваш и враќаш копијата како излез од функција.
Функцијата враќа објект ( без знакот "&" )
PHP:
 Caj operator--(int) // ова тука се пишува само така за компајлерот да може да разликува кое е за пре а кое е за пост..затоа што се слични многу.
 
              {
                Caj tmp(*this); // користиш copy  конструктор.
                kofein--;
                return tmp;
 
              }


----------------------------------------------------------------------------------------------------------------




PHP:
Caj operator!=(const Caj &c1,const Caj &c2)
 
              {
 
                  if((c1.kofein<c2.kofein+3)&&(c2.kofein>c1.kofein+3))
 
                  return *this;
 
              }
Како прво == , >=, <= != итн се логички операции, значи треба да врати дали тој израс е точен или не т.е bool тип.
Потоа за да споредиш дали разликата е макс 3..прво ќе најдеш макс и мин и ако разликата е помал или еднаков од 3 тогаш се исти и враќа точно.
Исто така нема потреба да прима 2 параметри како caj1, caj2 затоа што до caj1 веќе имаш пристап со тоа што caj1 ја повикува функцијата, и внатре кога и да напишеш kofеин, gramovi се мисли за caj1.
PHP:
bool operator!=(const Caj &c2)
 
              {
                  int rez = ((kofein > c2.kofein)?kofein:c2.kofein)-((kofein > c2.kofein)?c2.kofein:kofein); //макс -мин
                  if(rez <= 3)
                    return true;
 
                  return false;
              }

И уште едно прашање; во една класа private членови се …….. и “листа (динамички алоцирана низа од динамички алоцирани низи од знаци)”.
Нешто вака: **lista ??
Дали треба да има два пати:
lista=new char[…] ??
Значи кога ќе рече динамички алоцирана меморија/ објект се мисли на :
ImeNaKlasa * promenliva = new ImeNaKlasa;

На овој начин ти сам правиш еден нов објект динамички, кога сакаш можеш да го избришеш.

А кога ќе рече : динамички алоцирана низа од објекти значи ова :
ImeNaKlasa * promenliva = new ImeNaKlasa[Broj_na_elementi];

Буквално се е исто, само што во првиот случај имаш еден објект. а во вториот имаш низа од објекти.
Исто како низа од знаци нели пр ако сакаш да го имаш шестиот знак пишуваш вака : randomPromenliva[5]......исто е и со објект само што место шестиот знак ќе имаш пристап до шестиот објект, и после со тој објект можеш да правиш било што сакаш.
--- надополнето: 1 септември 2012 во 20:04 ---

Едит:

Сега видов и една грешка што многу ги нервира асистентите.
Немој да мешаш низа од ЗНАЦИ со низа од БИЛО ШТО ( цели броеви, објекти, итн ).
За низа од знаци важи библиотеката cstring,,,и функциите strlen, strcpy, strcmp итн..овие можеш да ги користиш само за низи од ЗНАЦИ.
А ако ти реќе како погоре динамичка алоцирана низа од ОБЈЕКТИ, или листа од ОБЈЕКИ да не те буни и да користиш strcpy, strlen итн...многу ги нервира и толку не ни сакаат да прегледуваат повеќе.

Има доста работи за објаснување во целиот код, покасно ќе пишам и за другите функции се разбира додека некој друг не превземе :)
 

SkyWalker

HorrificMind
Член од
12 октомври 2007
Мислења
58
Поени од реакции
1
Вака сеа..
PHP:
Prodavnica_caevi(char *i=" ",char *l=" ",int vkupno=0)
 
                  {
 
                                        strcpy(ime,i);
                                        lista=new char[strlen(l)+1];
                                        strcpy(lista,l);
                                        broj=vkupno;
                    }
во конструкторов, ја иницијализираш "lista" како низа од карактери, што нема никаква логика бидејќи "lista" е од тип на класата Caj, неможеш ни да употребиш strcpy(lista,l); заради истата причина. ова треба вака да ти изгледа:
PHP:
Prodavnica_caevi(char *i=" ",int vkupno=0)
                  {
 
                                        strcpy(ime,i);
                                        lista=new Caj[vkupno];
                                        broj=vkupno;
 
                }
еден стринг аргумент не ти е потребен, и листата си ја иницијализираш како низа од објекти од класата "Caj".
Следно
PHP:
 Prodavnica_caevi &operator+=(const Prodavnica_caevi &p, char *nov)
                  {
                          //preku strcmp gledam dali imeto na noviot caj veke postoi
                          //korektno?
                 
 
                          if((strcmp(nov,p.lista))!=0)
                          {
                                    for(int i=0;i<broj;i++)    //sakam da proveram dali ima mesto vo prodavnicata za nov caj
                                                                //spored toa sto BROJ  mi e brojot na caevi vo prodanicata
 
                                                                //no dali e ovde ovoj for ciklus potreben?
 
                                          lista+=nov;          // ...?
                                                      }
                          else
                              cout<<"Cajot veke postoi"<<endl;         
 
                    }
Ако сакаш да додадеш нов чај треба да додадеш цел објект од класата чај, не само неговото име, исто така функцијата strcmp споредува два стринга, така што неможеш да споредиш стринг со објект од некоја класа, како што е во твојот код. Еве ти го кодот и за тоа:
PHP:
 Prodavnica_caevi &operator+=(Caj &c1)  \\ argumenti e samo objekt od cajot sto treba da go vnesesh u listata
                  {
                          bool ima = false;
                          for(int i=0;i<broj;i++) 
                                if(c1.ime == lista[i].ime){ima=true;break;}  \\ proveruvam vo site elementi od listata na caevi dali postoi nekoj so takvo ime
                           
                          if(ima==false) \\ ako nema caj so takvo ime togas dodadi go vo listata
                            {
                                lista[broj++]=c1;
                            }
                            else
                            {
                                cout<<"Takov caj postoi!";
                            }
                          return this;
                    }
 
M

Mr.InF3ction

Гостин
ke sum mnogu blagodaren nekoj ako mi objasni kako se pravi dinamicen stek vo C so strukturi i pokazuvaci, i vo najglavni crti, kako raboti?
Со динамична низа или листа ?


А за тоа како работи нема нешто комплицирано. Правиш една Структура кој што внатре има листа или низа, бр елементи . И имаш 2 покажувачи едното е почеток другото крај. И на почеток кога стекот е празен двете покажувачи се на исто место бидејќи е празен. После како што додаваш елементи секој елемент се внесува на крајот на стекот, исто така и кога ќе извадиш елемент од стекот се зима од крајот. Што значи покажувачот "почеток" си останува исто и само крајот верира, се зголемува или намалува. За да ставиш и извадиш елементи правиш функции push -додава елемент. и pop ваѓа елемент од стекот.
Еве некако со слика како би изгледало тоа :
 

Kajgana Shop

На врв Bottom