[ Príspevkov: 6 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
C++ a vystup do HTML

Registrovaný: 13.09.08
Prihlásený: 06.12.11
Príspevky: 115
Témy: 14 | 14
NapísalOffline : 26.11.2011 12:17 | C++ a vystup do HTML

Ahojte . dostal som zadanu ulohu naprogramovat postfixovu kalkulacku..(to by aj bolo)
no problem je v tom,ze postup(nasobenia,delenia atd..) a aj vystup ma byt v HTMLku cize v nejakom index.html,no len neviem vobec ako nato.

tu je moj kod.
Kód:
#include "stdafx.h"
#include<iostream>
#include<cstdlib>
#include<math.h>
#include<string.h>
#include<stdio.h>
#include <fstream>


/**
* @brief Program vypočíta zadaný postfixový zápis.

* Program Postfixový kalkulátor je program, ktorý zo zadaného postfixového zápisu vypočíta výsledok.
*/
 char a=160, u=163, e=130, c=159, s=231, o=236, z=167, y=236, i=161, p=147;
using namespace std;

/**
* STACKSIZE reprezentuje velkosť poľa zásobníku.
*/
const int STACKSIZE=100000;

/**
* ITEMS je pole zásobníku.
*/
double ITEMS[STACKSIZE];

/**
* TOP reprezentuje aktuálnu pozíciu zásobníku.
*/
int TOP=0;

/**
* Funkcia Push zapisuje čísla do zásobníku.
* @param x je hodnota typu <b>double</b> ktorá má byť zapísaná do zásobníku
*/
void Push(double x)
{
   if(TOP == STACKSIZE-1)
   {
      cout << "CHYBA: Prete"<<c<<"enie z"<<a<<"sobn"<<i<<"ku!\n" << endl;
      system("PAUSE");
      exit(EXIT_FAILURE);
   }
   else
      ITEMS[++TOP] = x;
   return;
}

/**
* Funkcia Pop je funkcia, pomocou ktorej vyťahujeme čísla zo zásobníku. Pokial by bol zásobník prázdny, funkcia vypíše chybové hlásenie.
* @return funkcia vracia hodnotu typu <b>double</b> z aktualnej pozície zásobníku.
*/
double Pop(void)
{
   if(TOP==0)
   {
      cout << "\nCHYBA: Podte"<<c<<"enie z"<<a<<"sobn"<<i<<"ku!\n" << endl;
      system("PAUSE");
      exit(EXIT_FAILURE);
   }
   else
      return(ITEMS[(TOP)--]);
}

/** Funkcia PostCalc vypočíta zadaný postfixový zápis. Ak je zápis v nesprávnom tvare funkcia vypíše chybové hlásenie.
* @param in je vstupný reťazec v postfixovom zápise ktorý funkcia vypočíta.
* @return Funkcia vracia hodnotu typu <b>double</b> to je výsledok zadaného postfixového zápisu.
*/
double PostCalc(char in[100])
{
/**
* Premenné a, b sú pomocné premenné použité pri výpočtoch.
*/
   double a,b;
/**
* Premmenná element je premenná obsahujúca aktuálne spracúvajúci sa prvok zadaného postfixového zápisu.
*/
   char *element;

   element = strtok(in, " ");
   while(element != NULL)
   {
      if(atof(element)==0.0)
      {
         if(strcmp(element, "+") == 0)
         {
            a=Pop();
            b=Pop();
            Push(a+b);
         }

         else if(strcmp(element, "-") == 0)
         {
            a=Pop();
            b=Pop();
            Push(b-a);
         }

         else if(strcmp(element, "/") == 0)
         {
            a=Pop();
            b=Pop();
            Push(b/a);
         }

         else if(strcmp(element, "*") == 0)
         {
            a=Pop();
            b=Pop();
            Push(a*b);
         }

         else if(strcmp(element, "f") == 0)
         {
            a=Pop();
            Push(floor(a));
         }

         else if(strcmp(element, "^") == 0)
         {
            a=Pop();
            b=Pop();
            Push(pow(b,a));
         }

         else if(strcmp(element, "%") == 0)
         {
            a=Pop();
            b=Pop();
            Push(int(b)%int(a));
         }

         else
         {
            cout << "\nCHYBA: Zadan"<<y<<" v"<<y<<"raz je neplatn"<<y<<"!\n\n";
            system("PAUSE");
            exit(EXIT_FAILURE);
         }
      }
      else
         Push(atof(element));
      element = strtok(NULL, " ");
   }

   if(TOP==1)
      return(ITEMS[TOP]);
   else
   {
      cout << "\nCHYBA: V zasobn"<<i<<"ku sa nachadza viac hodn"<<p<<"t ked je o"<<c<<"akavan"<<y<<" v"<<y<<"sledok alebo ste  nezadali "<<z<<"iaden v"<<y<<"raz!\n\n";
      system("PAUSE");
      exit(EXIT_FAILURE);
   }
}

/**
* Funkcia main je hlavná funkcia programu.
*/
int _tmain(int argc, _TCHAR* argv[])
{
   


   char a=160, u=163, e=130, c=159, s=231, o=236, z=167, y=236;
   char string[10000];
   cout << "\n\t\t\tProgram: Postfixov"<<y<< " kalkul"<<a<<"tor\n" << endl;
   
   cout << "\nZadajte v"<<y<<"raz: \n" <<endl;
   gets(string);
   cout << "\nV"<<y<<"sledok je: " << PostCalc(string) << endl;
   cout << "\n";
   system("PAUSE");
   return 0;
}


Kód:
// stdafx.cpp : source file that includes just the standard includes
// PostFix.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information

#include "stdafx.h"

// TODO: reference any additional headers you need in STDAFX.H
// and not in this file


Prosim Vas, este je tam mensia chyba,ze pri zadani 0 mi ten program crashuje a vypise "Zadany vyraz je neplatny" neviem ako to osetrit :/

Dakujem


Offline

Skúsený užívateľ
Skúsený užívateľ
C++ a vystup do HTML

Registrovaný: 11.01.09
Prihlásený: 25.04.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 26.11.2011 14:59 | C++ a vystup do HTML

V tom HTML ma byt celkovy vysledok, alebo cely postup spracovavania? Troska to pribliz. Aj ako to ma vyzerat v tom html. V kazdom pripade bude zrejme treba vytvorit zakladnu kostru html a do <body> pastovat pozadovane data.

K tej nule, ktoru nechce spracovat: ono funkcia atof vracia 0.0 v pripade neuspechu, takze bud este k tejto podmienke pridaj priame porovnanie s nulou strcmp( element, "0" ) ale tu zas mozes mat vstup aj s medzerami a podobne, cize to nemusi fungovat, ako si predstavujes. Potom radsej pouzi miesto atof funkciu strtod. Ta sice tiez v pripade zlej konverzie vracia 0.0, no premenna *endptr sa rovna premennej str v pripade chyby. Takze mozes spravit takyto test, ci bol vstup naozaj nula:
Kód:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{

    char s[10];
    char* OK;

    scanf( "%s", s );

    if ( strtod( s, &OK ) == 0.0 )
    {
        if ( OK == s )
            printf( "chyba...\n" );
        else
            printf( "zadana nula...\n" );
    }

    return 0;

}


Offline

Užívateľ
Užívateľ
C++ a vystup do HTML

Registrovaný: 13.09.08
Prihlásený: 06.12.11
Príspevky: 115
Témy: 14 | 14
Napísal autor témyOffline : 26.11.2011 15:09 | C++ a vystup do HTML

No najlepsie by bolo ak by tam bol cely postup...napr pri deleni/deleni so zvyskom...alebo pri nasobeni, nemam tusenie ako sa to robi ....aby mi to v htmlku vypisalo ten postup....jj to viem,ze treba vytvorit subor index.html...s <body> </body> ale neviem ako to zakomponovat do toho C++ kodu aby po stlaceni Enteru sa vysledok (najlepsie aj postup) zapisali do toho suboru ....a vyzerat to asi nemusi nijako....hola stranka len s postupom asi bude stacit..


Offline

Skúsený užívateľ
Skúsený užívateľ
C++ a vystup do HTML

Registrovaný: 11.01.09
Prihlásený: 25.04.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 26.11.2011 15:46 | C++ a vystup do HTML

Tak ten zapis klasika, cez streamy:
Kód:
ofstream of;


A potom napr pri spomenutom deleni, kde mas:
Kód:
else if(strcmp(element, "/") == 0)
         {
            a=Pop();
            b=Pop();
            Push(b/a);
         }


pridas trebars toto:
Kód:
else if(strcmp(element, "/") == 0)
         {
            a=Pop();
            b=Pop();
            Push(b/a);
            sprintf( buffer, "%f delime %f<br><br>", b, a );
            of << buffer;
         }


Nieco v tomto zmysle. Samozrejme, subor riadne otvorit, zatvorit, pridat osestrenia, atd.


Offline

Užívateľ
Užívateľ
C++ a vystup do HTML

Registrovaný: 13.09.08
Prihlásený: 06.12.11
Príspevky: 115
Témy: 14 | 14
Napísal autor témyOffline : 27.11.2011 14:45 | C++ a vystup do HTML

vdaka ...idem sa nato pozriet :)

// pridané po 1 hodine 45 minútach od posledného príspevku

este by som sa chcel opytat ako vypocitam n-tu odmocninu z nejakeho cisla ?

viem,ze druha odmocnina je
Kód:
odmocnina = sqrt (cislo);


Offline

Skúsený užívateľ
Skúsený užívateľ
C++ a vystup do HTML

Registrovaný: 11.01.09
Prihlásený: 25.04.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 27.11.2011 20:15 | C++ a vystup do HTML

Da sa pouzit funkcia pow, s tym, ze vieme, ze tretia odmocnina z cisla x sa da zapisat ako:
Kód:
x ^ ( 1/3 )


Takze zavolas tuto funkciu takto:
Kód:
pow( cislo, double( 1/3 ) );


a je to. Pripadne si mozes napisat vlastnu funkciu, ako napr tuna: http://stackoverflow.com/questions/3494523/nth-root-of-a-number


 [ Príspevkov: 6 ] 


C++ a vystup do HTML



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Darujem knihy o programovaní (HTML, Java, Visual C++, C++ Builder, Android)

v Bazár

0

548

01.04.2019 11:20

tomasteicher

V tomto fóre nie sú ďalšie neprečítané témy.

Výstup USB-c

v Notebooky a netbooky

1

330

16.09.2018 18:56

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

vystup na sluchadla Výstup pro sluchátka (1xS/PDIF)

v Notebooky a netbooky

1

689

29.06.2011 19:20

rhonin37

V tomto fóre nie sú ďalšie neprečítané témy.

ext USB zvukovka 5.1 vystup a SPDIF vstup/vystup

v Zvuk

5

1607

20.01.2010 15:39

kolacek

V tomto fóre nie sú ďalšie neprečítané témy.

Mám sa učiť C ++/objective C/ C#?

v Backend

5

848

08.07.2014 20:40

XOLOO

V tomto fóre nie sú ďalšie neprečítané témy.

Mŕtvy výstup

v Audio programy

2

559

08.05.2010 22:12

Victorious_

V tomto fóre nie sú ďalšie neprečítané témy.

Coaxial vystup

v Ostatné

13

1722

18.09.2011 15:27

BIO

V tomto fóre nie sú ďalšie neprečítané témy.

hdmi vystup

v Ostatné platformy

1

1520

26.12.2010 13:18

brmbo

V tomto fóre nie sú ďalšie neprečítané témy.

optický výstup

v Zvuk

5

1359

01.11.2007 17:18

apet

V tomto fóre nie sú ďalšie neprečítané témy.

xml vystup

v Backend

6

671

21.08.2008 16:07

MKI-Miro

V tomto fóre nie sú ďalšie neprečítané témy.

double vystup

v Zvuk

3

568

21.01.2010 14:29

Tech

V tomto fóre nie sú ďalšie neprečítané témy.

vystup z funkcie

v Backend

15

939

13.09.2010 19:56

php30

V tomto fóre nie sú ďalšie neprečítané témy.

audio vystup problem

v Audio programy

2

480

15.02.2015 18:08

dixi

V tomto fóre nie sú ďalšie neprečítané témy.

Nejde VGA výstup

v Ostatné grafické karty

3

1053

07.10.2010 22:02

Icehammer

V tomto fóre nie sú ďalšie neprečítané témy.

nefungujuci dvi vystup

v nVidia grafické karty

14

947

11.06.2008 21:07

OmeGa

V tomto fóre nie sú ďalšie neprečítané témy.

Formulár - PHP výstup

v Backend

7

1016

04.10.2007 13:04

imcold



© 2005 - 2026 PCforum, edited by JanoF