Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ 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
Príspevok NapísalOffline : 26.11.2011 12:17

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ý: 18.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 26.11.2011 14:59

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
Príspevok Napísal autor témyOffline : 26.11.2011 15:09

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ý: 18.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 26.11.2011 15:46

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
Príspevok Napísal autor témyOffline : 27.11.2011 14:45

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ý: 18.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 27.11.2011 20:15

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


Odpovedať na tému [ Príspevkov: 6 ] 


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 Vymením a darujem

0

428

01.04.2019 11:20

tomasteicher Zobrazenie posledných príspevkov

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

v Notebooky a netbooky

1

255

16.09.2018 18:56

shiro Zobrazenie posledných príspevkov

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

585

29.06.2011 19:20

rhonin37 Zobrazenie posledných príspevkov

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

1478

20.01.2010 15:39

kolacek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Mám sa učiť C ++/objective C/ C#?

v Assembler, C, C++, Pascal, Java

5

729

08.07.2014 20:40

XOLOO Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Mŕtvy výstup

v Audio programy

2

479

08.05.2010 22:12

Victorious_ Zobrazenie posledných príspevkov

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

v Ostatné

13

1558

18.09.2011 15:27

BIO Zobrazenie posledných príspevkov

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

v nVidia čipové sady

1

1411

26.12.2010 13:18

brmbo Zobrazenie posledných príspevkov

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

v Zvuk

5

1246

01.11.2007 17:18

apet Zobrazenie posledných príspevkov

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

v PHP, ASP

6

581

21.08.2008 16:07

MKI-Miro Zobrazenie posledných príspevkov

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

v Zvuk

3

487

21.01.2010 14:29

Tech Zobrazenie posledných príspevkov

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

v Audio programy

2

365

15.02.2015 18:08

dixi Zobrazenie posledných príspevkov

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

v Ostatné grafické karty

3

958

07.10.2010 22:02

Icehammer Zobrazenie posledných príspevkov

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

v nVidia grafické karty

14

827

11.06.2008 21:07

OmeGa Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Žiadny výstup (OUTPUT)

v JavaScript, VBScript, Ajax

3

623

28.09.2009 19:04

d0.0b Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Formulár - PHP výstup

v PHP, ASP

7

945

04.10.2007 13:04

imcold Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra