problem z programem w C

Potrzebujesz pomocy z C, C++, perl, python, itp.
glodnyrules
Posty: 2
Rejestracja: 28 marca 2007, 12:15

problem z programem w C

Post autor: glodnyrules »

witam, nie mam pojecia jak zrobic ten program,trafil mi sie cierzki koles z infy i nic nie kminie z c. czy moglby mi ktos napisac ten program, byl bym bardzo wdzieczny

Proszę napisać prosty kalkulator pracujący w Odwrotnej Notacji Polskiej (RPN - Reverse Polish Notation) wykorzystując implementację stosu ze strony: http://zts.ita.pwr.wroc.pl/dydaktyka/fi ... 38/stos2.c Kalkulator może pracować wg następującego algorytmu:

Wczytaj ciąg znaków ze standardowego wejścia
Jeśli jest to liczba - umieść ją na stosie i idź do 1
Jeśli jest to operator "+" - skocz do procedury "dodaj"
Jeśli jest to operator "-" - ...

...
Procedura dodaj:

Pobierz argument 1 ze stosu
Pobierz argument 2 ze stosu
Dodaj do siebie argumenty
Umieść wynik na stosie
Należy zaimplementować następujące operacje:

+, -, *, / - jak operatory w C
round, floor, ceil - jak odpowiadające im w C funkcje
. (kropka), print - wyświetla aktualną wartość ze stosu

Operacje powinny być wykonywane na liczbach typu double.

Uwaga - dostęp do stosu można realizować TYLKO za pomocą funkcji pop() oraz push() (Na kursie "Procesory Sygnałowe" najprawdopodobniej spotkacie się ze sprzętowymi implementacjami stosu, w których jest to jedyna metoda dostępu). Absolutnie niedozwolone jest bezpośrednie odwoływanie się do tablicy z danymi!
Kaka'
Senior Member
Posty: 3018
Rejestracja: 30 lipca 2006, 13:17
Lokalizacja: Kartuzy

Post autor: Kaka' »

http://rtfm.killfile.pl/#praca_domowa

Jak się sam nie nauczysz pisać to z następnymi zadaniami będzie jeszcze gorzej. Spróbuj sam napisać, Nas możesz co najwyżej o jakąś radę poprosić itp. ale nie o odrobienie za Ciebie zadania.
chyl-o
Junior Member
Posty: 621
Rejestracja: 24 maja 2006, 21:06
Lokalizacja: Lublin

Post autor: chyl-o »

Odwrotna notacja polska

Implementacja stosu

Jak bedziesz mial problemy konkretne to pytaj, jak napisal Kaka' pracy domowej nie odrabiamy( ale jak napiszesz chociaż troche to ktoś na pewno Ci pomoże ;) )

PS. nie bijcie za fedore - siedze wlasnie na laboratoriach z sieci ;)
ilr
Posty: 76
Rejestracja: 29 stycznia 2007, 13:15
Lokalizacja: Universum

Post autor: ilr »

Wybacz, ale Twoje lenistwo przekroczyło już szczyty Himalajów. Nie wiem, czy jesteś studentem, czy uczniem jakiejś dziwnej szkółki - zresztą nie ma to znaczenia i tak daleko nie zajdziesz z takim podejściem. Zapewne ten Wasz gostek podał Wam jakąś literaturę przedmiotu, a Tobie nawet nie zachciało się tam zajrzeć. Gdybyś poświęcił te kilka godzin na przejrzenie tych książek to miałbyś to zadanie podane na talerzu. Zaopatrz się w biblię wszystkich programistów w C: "Brian W. Kernighan Dennis M. Ritchie Język ANSI C" i pooglądaj sobie strony od 110 w górę. A właściwie zapoznaj się z całą książką na pewno Ci to nie zaszkodzi.
Wilku
Posty: 20
Rejestracja: 17 grudnia 2006, 22:24
Lokalizacja: Wroc³aw/Rybnik

Post autor: Wilku »

Kernighan jest niezły, aczkolwiek nie jest najlepszą metodą do startu z programowaniem. Zadanie z C nie jest trudne. Spróbuj sknocić coś sam, pewno jakoś pomożemy. Btw. z kim masz kurs, w końcu jesteśmy z tej samej uczelni;>?
glodnyrules
Posty: 2
Rejestracja: 28 marca 2007, 12:15

problem z programikiem, co jst nie tak??

Post autor: glodnyrules »

witam, w odpowiedzi na sluszne zarzuty lenistwa skierowane do mojej osoby napisalem ten program, lecz mi nie dzial. pisze w nadzieji iz moje poprzednie beszczelne i grobianskie zachowanie nie zniecheci was do udzielenie mi pomocy.

zadanie brzmialo
Proszę napisać prosty kalkulator pracujący w Odwrotnej Notacji Polskiej (RPN - Reverse Polish Notation) wykorzystując implementację stosu ze strony: http://zts.ita.pwr.wroc.pl/dydaktyka/fi ... 38/stos2.c Kalkulator może pracować wg następującego algorytmu:

1. Wczytaj ciąg znaków ze standardowego wejścia
2. Jeśli jest to liczba - umieść ją na stosie i idź do 1
3. Jeśli jest to operator "+" - skocz do procedury "dodaj"
4. Jeśli jest to operator "-" - ...
5. ...

Procedura dodaj:

1. Pobierz argument 1 ze stosu
2. Pobierz argument 2 ze stosu
3. Dodaj do siebie argumenty
4. Umieść wynik na stosie

Należy zaimplementować następujące operacje:

* +, -, *, / - jak operatory w C
* round, floor, ceil - jak odpowiadające im w C funkcje
* . (kropka), print - wyświetla aktualną wartość ze stosu


Operacje powinny być wykonywane na liczbach typu double.



moje dziwlo wyglada nastepujaco:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct stack {
void *mem;
int el_size;
int stack_ptr;
int stack_max;
};
typedef struct stack STOS;

STOS nowy_stos (int count, int el_size) {
STOS tmp;

tmp.mem = calloc (count, el_size);
tmp.stack_ptr = 0;
tmp.stack_max = count - 1;
tmp.el_size = el_size;

return tmp;
}

int push (STOS *stack, void *element) {
if (stack->stack_ptr <= stack->stack_max) {
memcpy ( stack->mem + stack->stack_ptr * stack->el_size,
element, stack->el_size);
stack->stack_ptr+=1;
return 0;
}
return 1;
}
int pop (STOS *stack, void *element) {
if (stack->stack_ptr > 0) {
stack->stack_ptr-=1;
memcpy ( element,
stack->mem + stack->stack_ptr * stack->el_size,
stack->el_size);
return 0;
}
return 1;
}


int main(void)
{
int d;
do
{
double a, b, c;
char z;
STOS s;

s = nowy_stos(4, sizeof(int));
if (s.mem == NULL)
{
fprintf (stderr, "Klopot z alokacja pamieci");
exit(1);
}
a=0;
b=0;
printf("podaj b:");
scanf("%d", &a);
push (&s, &a);
printf("podaj a:");
scanf("%d", &b);
push (&s, &b);
printf("znak dzialania:");
z=getchar();
scanf("%c", &z);

pop(&s, &a);
pop(&s, &b);
switch(z)
{
case '+' : c=a+b;
break;
case '-' : c=a-b;
break;
case '*' : c=a*b;
break;
case '/' : c=a/b;
break;
default: break;
}
printf("%d\n", c);






return 0;

printf("liczysz dalej?? (1/0)? ");
scanf("%d", &d);
}
while (d==1);


}


czty to jest dobrze?? z gory dzieki za pomoc
ODPOWIEDZ