[C++] Stos - podstawowe funkcjonalnosci

robertos18
Użytkownik
Użytkownik
Posty: 423
Rejestracja: 6 paź 2014, o 20:03
Płeć: Mężczyzna
Lokalizacja: Torun
Podziękował: 127 razy
Pomógł: 2 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: robertos18 »

dodanie elementu:

Kod: Zaznacz cały

stract stos{
char dane [20];
wierzcholek=0;
usuniecie ze stosu:

Kod: Zaznacz cały

void zniszcz (stos &STOS)
STOS.wierzcholek
}[code]
zdjecie ze stosu:

Nie wiem czy o to chodzi w tym zadaniu
Ostatnio zmieniony 11 mar 2015, o 09:44 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
Gouranga
Użytkownik
Użytkownik
Posty: 1590
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 246 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: Gouranga »

W ogóle nie wiadomo o co Ci chodzi a kod jest zasyfiony i niepoprawny.
robertos18
Użytkownik
Użytkownik
Posty: 423
Rejestracja: 6 paź 2014, o 20:03
Płeć: Mężczyzna
Lokalizacja: Torun
Podziękował: 127 razy
Pomógł: 2 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: robertos18 »

hm to jeszcze raz
Podstawowymi funkcjonalnosmaci stosu są:
push - umieszczenie nowego elementu na szczycie stosu;
pop - zdjęcie istniejącego elementu ze szczytu stosu;

Implementacja:

Kod: Zaznacz cały

int sp;
float stos[100];

int init()
{
  sp =-1;
}

void push(float liczba)
{
 stos[++sp]=liczba;
}

float pop()
{
  return stos[sp--];
}
?
Gouranga
Użytkownik
Użytkownik
Posty: 1590
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 246 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: Gouranga »

no generalnie trochę bym zmodyfikował ale działać będzie, niemniej brzydkie to rozwiazanie jak nie wiem co
robertos18
Użytkownik
Użytkownik
Posty: 423
Rejestracja: 6 paź 2014, o 20:03
Płeć: Mężczyzna
Lokalizacja: Torun
Podziękował: 127 razy
Pomógł: 2 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: robertos18 »

jak mozna to lepiej zmodyfikowac?
Gouranga
Użytkownik
Użytkownik
Posty: 1590
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 246 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: Gouranga »

pisane z palca bez kompilacji, ale tak bym to widział:

Kod: Zaznacz cały

typedef struct Stos {
  float *dane;
  int n
} Stos;

Stos *init(){
  Stos *s = (*Stos)malloc(sizeof(Stos));
  s->dane = (*float)malloc(sizeof(float));
  s->n = 0;
  return s;
}

void push(float x, Stos *s){
  s->dane = (*float)realloc(s->dane, (s->n+1)*sizeof(float));
  s->dane[s->n] = x;
  (s->n)++;
}

float pop(Stos *s){
  r = s->dane[s->n - 1];
  s->dane = (*float)realloc(s->dane, (s->n)*(sizof(float)));
  (s->n)--;
  return r;
}

int main(void){
  Stos *stos1 = init();
  push(2, stos1);
  float x = pop(stos1);
  //x = 2
return 0;
}
robertos18
Użytkownik
Użytkownik
Posty: 423
Rejestracja: 6 paź 2014, o 20:03
Płeć: Mężczyzna
Lokalizacja: Torun
Podziękował: 127 razy
Pomógł: 2 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: robertos18 »

Moim zdaniem jednak najlepiej to by tak to wygladalo :

Kod: Zaznacz cały

void odloz(stos &s, char nowy){
wezel* r = new wezel;
r->dane = nowy;
r->nast = s.wierzch;
s.wierzch = r;
}


void zdejmij(stos &s){
wezel* r = s.wierzch;
if (!pusty(s))
r = s.wierzch->nast;
delete s.wierzch;
s.wierzch = r;
}
Gouranga
Użytkownik
Użytkownik
Posty: 1590
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 246 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: Gouranga »

taki ampersand w nagłówku funkcji void odloz(stos &s) to referencja? pytam bo na c++ się nie znam, napisałem to wyżej w C
robertos18
Użytkownik
Użytkownik
Posty: 423
Rejestracja: 6 paź 2014, o 20:03
Płeć: Mężczyzna
Lokalizacja: Torun
Podziękował: 127 razy
Pomógł: 2 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: robertos18 »

tak, to operator uzyskiwania adresow w pamieci tego co znajduje sie po jego prawej stronie czyli po stworzeniu wskaznika wskazujacy na typ danych i do niego zapisujemy adres zmiennej
Gouranga
Użytkownik
Użytkownik
Posty: 1590
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 246 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: Gouranga »

no to, że to jest operator adresowania wiem, ale nie powinieneś go używać w ten sposób
jak już to tak:

Kod: Zaznacz cały

void funkcja(stos *s)
i potem mając stos:

Kod: Zaznacz cały

stos x, *y;
funkcja(&x);
funkcja(y);
bo x jest stosem a do funkcji podajemy jego adres
robertos18
Użytkownik
Użytkownik
Posty: 423
Rejestracja: 6 paź 2014, o 20:03
Płeć: Mężczyzna
Lokalizacja: Torun
Podziękował: 127 razy
Pomógł: 2 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: robertos18 »

hmm chyba jednak raczej nie
Gouranga
Użytkownik
Użytkownik
Posty: 1590
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 246 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: Gouranga »

a co, chcesz przekazywać całą strukturę i w funkcji pracować nad jej adresem? przecież poprawnie jest tak jak napisałem ja
robertos18
Użytkownik
Użytkownik
Posty: 423
Rejestracja: 6 paź 2014, o 20:03
Płeć: Mężczyzna
Lokalizacja: Torun
Podziękował: 127 razy
Pomógł: 2 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: robertos18 »

Musze to przemyslec teraz ;p
Gouranga
Użytkownik
Użytkownik
Posty: 1590
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 246 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: Gouranga »

Myśl myśl ja mam za sobą 5 lat pisania w C
robertos18
Użytkownik
Użytkownik
Posty: 423
Rejestracja: 6 paź 2014, o 20:03
Płeć: Mężczyzna
Lokalizacja: Torun
Podziękował: 127 razy
Pomógł: 2 razy

[C++] Stos - podstawowe funkcjonalnosci

Post autor: robertos18 »

Brakuje struktury implementującej stos
ODPOWIEDZ