Problem z C++: kalkulator, pliki .txt, ONP, stos i kolejka

05 sty 2016, 23:32
Cinas

Cinas

Początkujący User 134 posty 43 pkt.

Problem z C++: kalkulator, pliki .txt, ONP, stos i kolejka

05 sty 2016, 23:32
Witam, mam problem z zadaniem. Z góry przepraszam za amatorszczyznę, z programowania jestem słaby (bardziej sprzętówka) dlatego prosiłbym o pomoc :) ale do rzeczy. Ma to być kalkulator liczący równania zapisane linijkami w pliku tekstowym. Najpierw wczytaną linię chcę przetransformować do ONP. Niestety wszystkie materiały tego typu znalezione w sieci robione są na "<vector>'ach" jest mi to zupełnie obce i nie wiem jak w to włożyć palce. Dlatego reprezentację stosu i kolejki mam zamiar zrobić na tablicach. Póki co udało mi się stworzyć coś takiego (co oczywiście nie działa, inaczej by mnie tu nie było :)).

Algorytm tworzyłem na podstawie przykładu z wikipedii w podrozdziale: "Algorytm konwersji z notacji infiksowej do ONP"

Poniżej kod mojej nieudolnej transformacji na ONP.

http://pastebin.pl/view/1bae2915

Re: Problem z C++: kalkulator, pliki .txt, ONP, stos i kolejka

05 sty 2016, 23:37
grzemach

grzemach

Wielki Procesor 2615 posty 1569 pkt.

Re: Problem z C++: kalkulator, pliki .txt, ONP, stos i kolejka

05 sty 2016, 23:37
Nie piszę w C++ ale w innym języku. Pamiętam jednak, że w C albo C++ nie możesz zrobić tablicy nieznanej długości. Musisz od razu zdefiniować jej maksymalną długość. Dlatego stosujemy wektory - one mogą mieć dowolny rozmiar.

Podaj przykładowy wiersz który ma policzyć. To jest zwykłe: 2+3 czy również z "x"-ami?
Jest jakaś relacja między liniami?

Cytuj:
for(int i=1 ; i<(dlugosc-1); i++)

Tutaj raczej albo i<=(dlugosc-1) albo i<(dlugosc)
Bo wycinasz znak więcej niż 1 ostatni.
Z resztą analizy się wstrzymam do czasu przykładowej linii

Re: Problem z C++: kalkulator, pliki .txt, ONP, stos i kolejka

05 sty 2016, 23:57
Cinas

Cinas

Początkujący User 134 posty 43 pkt.

Re: Problem z C++: kalkulator, pliki .txt, ONP, stos i kolejka

05 sty 2016, 23:57
grzemach napisał(a):
Nie piszę w C++ ale w innym języku. Pamiętam jednak, że w C albo C++ nie możesz zrobić tablicy nieznanej długości. Musisz od razu zdefiniować jej maksymalną długość. Dlatego stosujemy wektory - one mogą mieć dowolny rozmiar.

Podaj przykładowy wiersz który ma policzyć. To jest zwykłe: 2+3 czy również z "x"-ami?
Jest jakaś relacja między liniami?

Cytuj:
for(int i=1 ; i<(dlugosc-1); i++)

Tutaj raczej albo i<=(dlugosc-1) albo i<(dlugosc)
Bo wycinasz znak więcej niż 1 ostatni.
Z resztą analizy się wstrzymam do czasu przykładowej linii


Dzięki za odpowiedź.
W c++ możemy zdefiniować tablicę o nie zadeklarowanej długości int tablica[];
W przypadku zmiennej string jej zawartość odrazu zapisywana jest w tablicy.
Tak mi się wydaję, choć nie będę się upierał.

Przykładowa linijka to: 3+4*2/(1-5)^2 więc jak na moje umiejętności to sajgon.
Zmienne niewiadome typu x nie występują.
Kolejne linie są całkowicie niezależne.
Jedna linia = jedno równanie i dalej o niej zapominamy :)

Z tym "albo i<=(dlugosc-1) albo i<(dlugosc)" faktycznie masz rację. Trafne spostrzeżenie którego wcześniej nie zauważyłem, już poprawiam :)

Re: Problem z C++: kalkulator, pliki .txt, ONP, stos i kolejka

06 sty 2016, 00:07
grzemach

grzemach

Wielki Procesor 2615 posty 1569 pkt.

Re: Problem z C++: kalkulator, pliki .txt, ONP, stos i kolejka

06 sty 2016, 00:07
Cinas napisał(a):
W c++ możemy zdefiniować tablicę o nie zadeklarowanej długości int tablica[];
W przypadku zmiennej string jej zawartość odrazu zapisywana jest w tablicy.
Tak mi się wydaję, choć nie będę się upierał.

Ja też nie będę się upierał przy moim twierdzeniu odnośnie tych tablic.
Aktualnie siedzę nad czymś innym (przeniesienie serwisu z joomla na inny CMS - zawartość, też masakra), ale mogę pomóc Ci "logicznie" to poprawić.

1. Kompiluje się, uruchamia i źle liczy czy nie kompiluje się?
2. Skup się tylko na jednym równaniu Zacznij od prostego 2+2, jeśli zadziała, dodaj kolejne działanie (nie utrudniaj na początku - na to przyjdzie pora), nawiasy itd
3. dodaj cout do każdego przebiegu i niech wyświetla WSZYSTKIE zmienne, co przejście - możesz spróbować debugować, nie wiem co będzie szybsze w implementacji.

W programowaniu jestem przeciwnikiem rozwiązywaniem problemów za kogoś ;)
W myśl zasady: Daj komuś rybę będzie najedzony przez dzień, ale jak dasz mu wędkę i pokażesz jak używać...

Re: Problem z C++: kalkulator, pliki .txt, ONP, stos i kolejka

06 sty 2016, 00:18
Cinas

Cinas

Początkujący User 134 posty 43 pkt.

Re: Problem z C++: kalkulator, pliki .txt, ONP, stos i kolejka

06 sty 2016, 00:18
grzemach napisał(a):
Cinas napisał(a):
W c++ możemy zdefiniować tablicę o nie zadeklarowanej długości int tablica[];
W przypadku zmiennej string jej zawartość odrazu zapisywana jest w tablicy.
Tak mi się wydaję, choć nie będę się upierał.

Ja też nie będę się upierał przy moim twierdzeniu odnośnie tych tablic.
Aktualnie siedzę nad czymś innym (przeniesienie serwisu z joomla na inny CMS - zawartość, też masakra), ale mogę pomóc Ci "logicznie" to poprawić.

1. Kompiluje się, uruchamia i źle liczy czy nie kompiluje się?
2. Skup się tylko na jednym równaniu Zacznij od prostego 2+2, jeśli zadziała, dodaj kolejne działanie (nie utrudniaj na początku - na to przyjdzie pora), nawiasy itd
3. dodaj cout do każdego przebiegu i niech wyświetla WSZYSTKIE zmienne, co przejście - możesz spróbować debugować, nie wiem co będzie szybsze.

W programowaniu jestem przeciwnikiem rozwiązywaniem problemów za kogoś ;)
W myśl zasady: Daj komuś rybę będzie najedzony przez dzień, ale jak dasz mu wędkę i pokażesz jak używać...



Zacznę od ostatniego, dokładnie tak samo myślę. Nie proszę o gotowca a o naprowadzenie. Nie czekam aż ktoś to zrobi za mnie, po to udostępniam swój kod, aby ktoś mnie nakierował a nie mnie wyręczał. :)

Kompilować się kompiluje, jednak zawartość kolejki nie wyświetla się poprawnie, znaki z tablicy ASCII są mocno porozstrzeliwane. Będę musiał zrobić tak jak piszesz, krok po kroku badać bo inaczej błędu, nie znajdę. Hamuje zatem swój zapęd z rzucaniem się na całe równanie i cisnę po kolei.

Dzięki za dotychczasową pomoc, pozdrawiam. ;)

Re: Problem z C++: kalkulator, pliki .txt, ONP, stos i kolejka

06 sty 2016, 00:46
grzemach

grzemach

Wielki Procesor 2615 posty 1569 pkt.

Re: Problem z C++: kalkulator, pliki .txt, ONP, stos i kolejka

06 sty 2016, 00:46
Też od razu wskazówka.
Sprawdź czy wszystkie znaki poprawnie się wyświetlają. Bo też mi się kojarzy, że w którymś z języków programowania - niektóre znaki są na jednym bicie, a inne na dwóch...

Re: Problem z C++: kalkulator, pliki .txt, ONP, stos i kolejka

07 sty 2016, 22:45
code_messiah

code_messiah

Początkujący User 1 posty 0 pkt.

Re: Problem z C++: kalkulator, pliki .txt, ONP, stos i kolejka

07 sty 2016, 22:45
grzemach napisał(a):
Też od razu wskazówka.
Sprawdź czy wszystkie znaki poprawnie się wyświetlają. Bo też mi się kojarzy, że w którymś z języków programowania - niektóre znaki są na jednym bicie, a inne na dwóch...


W Javie rozmiar znaku to 2 bajty.
To dlatego, że wykorzystano w tym języku kodowanie znaków z UTF-16.

W c++ to zawsze 1 bajt 8-)
  • Brak nieprzeczytanych postów
  • Nieprzeczytane posty
  • Wątek zablokowany
  • Wątek przeniesiony

widget instagram lenovo
widget twitter lenovo
widget facebook lenovo
widget youtube lenovo