ďťż
 
 
   problem z programem w C
 
 

Tematy

 
    
 

 

 

 

problem z programem w C





glodnyrules - 28-03-2007 12:16
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...php/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' - 28-03-2007 12:27
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 - 28-03-2007 12:49
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 - 28-03-2007 19:18
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 - 30-03-2007 20:08
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 - 01-04-2007 01:43
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...php/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
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis