Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » cVas 14:55
 » bmiluch 14:52
 » sigi 14:45
 » ulan 14:38
 » steve 14:37
 » Dexter 14:33
 » Kenny 14:30
 » JE Jacaw 14:29
 » GULIwer 14:28
 » Sherif 14:16
 » KHot 14:14
 » Ament 14:12
 » gigamiki 13:54
 » Hitman 13:52
 » Nihilist 13:47
 » MayheM 13:34
 » sofolok 13:34
 » DYD 13:29
 » Guli 13:28
 » pwil2 13:25

 Dzisiaj przeczytano
 61853 postów,
 wczoraj 104470

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2026
A R C H I W A L N A   W I A D O M O Ś Ć
    

[Ansi C] Pomozcie rozgryzc kod ;) , Adamusss 23/10/06 00:14
Witam

Nie potrafie rozgryc kilku linijek z ponizszego kodu (stos):
------------
stos.h

typedef struct
{
float v[50];
int top;
}Stack ;

void push(Stack *S, float val);
int pop(Stack *S);
void init(Stack *S);
int full(Stack *S);
void wyswietl(Stack *S);


-----
stos.c

#include<stdio.h>
#include <stos2.h>


int push(Stack *S, float val)
{

S->v[ S->top ] = val;
(S->top)++;
}

int pop(Stack *S)
{
(S->top)--;
return (S->v[S->top]);
}

void init(Stack *S)
{
S->top = 0;
}

int full(Stack *S)
{
return (S->top >= 50);
}

void wyswietl(Stack *S)
{
int i;
printf("Elementy stosu: ");
for (i=0;i<S->top;i++)
{
printf("%g ",S->v[i]);
}
printf("\n");

}

void empty(Stack *S)
{
if (S->top == 0)
printf("Stos jest pusty.\n\n\n");
}

--------

nie rozumiem :
a) S->v[ S->top ] = val;
wskaznik S jest skladowa tablicy v, ktora to sklada sie ze [S->top]..nie,nie za bardzo zamotane ;) moze mi to ktos wyjasnic ?

b) return (S->v[S->top]);
po co return?

c) printf("%g " ....)
co dokladnie oznaczaa %g ? czytalem manuale ale dalej nie rozumiem funkcji tego przelacznika :\


prosze pomozcie bo juz wymiekam powoli :\

z gory dziekuje
adam

  1. Pomogę , Conroy 23/10/06 00:31
    a)
    Top wskazuje na wierzchołek stosu. S->Top wskazuje na wierzchołek stosu na którym wywołałeś sobie push (zauważ, że to S jest przekazywane jako parametr funkcji). S to ten stos. Czyli odłozenie czegoś na stos, to położenie elementu na jego wierzchołku. Stos składa się z 50 el. tablicy elementów float oznaczonych zmienną v. Czyli odłożenie czegoś na stos to zapisanie do tej tablicy na pole o indeksie Top jakiejś wartości. Czyli dla konkretnego stosu S->v (odwolujemy sie do jego tablicy wartosci) [S->Top] (do tej tablicy piszemy na pierwsze wolne pole) =val (daną wartość).

    b)
    Po to return bo zdejmujesz coś ze stosu, chcesz dostać na zewnątrz wartość która tam była odłożona - musisz ją zwrócić.

    c)
    Napewno obcina kończące zera które wypisałoby %f.

    http://flickr.com/photos/myhacien
    da

  2. może jeszcze ja , Luk 23/10/06 02:31
    jeśli by nie było zrozumiałe, bo przede wszystkim - i to chyba wystarczy - trzeba zrozumieć czym jest S, a
    S jest wskaźnikiem na obiekt, który posiada takie pola jak tablica v przechwoująca wartości stosu, oraz pole top z numerkiem 'najwyższego' elementu na stosie;

    ad a) S->v[ S->top ] = val;
    po pierwsze najpierw pobierana jest tutaj wartość z pola top obiektu wskazywanego przez S, czyli to co w nawiasie [S->top], a wartość tego jest po prostu indeksem tej tablicy v ( gdyby to była metoda w C++ to v-> moża by w ogóle pominąć, bo odwołujesz się do jednego obiektu);
    choć generalnie jest to kiepski kod, bo nie ma żadnej kontroli przepełnienia stosu(powinna być druga zmienna np.max, określająca wielkość tablicy v), podobnie przy zmieniejszaniu stosu nie jest nawet sprawdzane czy nie jest on już pusty... ale mniejsza z tym, rozumiem, że to tylko 'szkolny' kod

    ad c) to polecam tą stronę http://www.cplusplus.com/ref/cstdio/printf.html

    https://puzzlelogic.pl

  3. A tak w ogóle... , Umek 24/10/06 17:36
    to burdel w tym kodzie IMHO, malo kodu a już burdel) :-)
    Push i Pop powinny badac czy stos jest Empty full bo tak to się zaraz wypierniczy. Z kolei Empty i Full powinny zachowywac się tak samo (zwracac ten sam rodzaj wartości i konsekwentniej - informowac lub nie o stanie stosu stosownym komunikatem.
    Ktoś tu niedawno dziwił się liczbą błedów w win, a tu proszę - mało kodu i już... bałagan. :-)
    Pzdr.

    
All rights reserved ® Copyright and Design 2001-2026, TwojePC.PL