Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 6 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.12.09
Prihlásený: 31.12.09
Príspevky: 4
Témy: 2
Príspevok NapísalOffline : 30.12.2009 9:40

Zdravim, potrebujem poradit, som uplna lama co sa tyka tohto programovania, mam nejaky existujuci kod a potrebujem ho prerobit.
Ide mi o to, ze v tomto pripade suma 696004979 sa vynasobi 30.126 a pripocita 0.5, vysledok sa ma rovnat 20967845997 a vypise 3787976813, t.j. dojde k preteceniu.

Kód:
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
    long zostatok;
    unsigned long skkzost;
   
    zostatok = 696004979;
    printf("\nZostatok=%d", zostatok);
    skkzost = (unsigned long)(zostatok*30.126 + 0.5);
    printf("\nZostatok v SKK=%llu\n", skkzost);
    system("PAUSE");
    return EXIT_SUCCESS;
}


Nie je jednoduchsie riesenie pouzit desatinne cisla? tam by sa to malo vojst bezproblemov. Pretoze to vstupne cislo 696004979 je vlastne 6960049.79. Ale ked to deklarujem ako long double, to mi hadze uplne nieco ine....
Vie mi prosim niekto napisat kod, ktory napr. pri tomto vstupe 6960049.79 (*30.126 + 0.5) hodi vystup 209678459.97???


Offline

Užívateľ
Užívateľ
C++ nasobenie vacsich cisel

Registrovaný: 20.07.08
Príspevky: 474
Témy: 1
Bydlisko: Kosice
Príspevok NapísalOffline : 30.12.2009 11:04

no neviem, ale mne calc.exe :-) hadze toto:
6960049.79*30.126 + 0.5 = 209678460,47354

je to rozdiel oproti tomuto:
696004979*30.126 + 0.5 = 20967845997,854

alebo tomuto:
696004979*(30.126 + 0.5) = 21315848486,854

ktory vzorec je ten spravny ?

inak s double-ami mi to pocita korektne, teda vysledky ako v calc-u
Kód:
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
    double zostatok;
    double skkzost;
   
    zostatok = 696004979;
    printf("\nZostatok=%f", zostatok);
    skkzost = (zostatok*30.126 + 0.5);
    printf("\nZostatok v SKK=%f\n", skkzost);
    system("PAUSE");
    return EXIT_SUCCESS;
}


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.12.09
Prihlásený: 31.12.09
Príspevky: 4
Témy: 2
Príspevok Napísal autor témyOffline : 30.12.2009 11:39

sorry, vzorec som zle opisal, ma to byt takto
skkzost = skkzost*30.126 + 0.005;

Kód:
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
    static char zostatok[256];
    char skkzostatok[128];
    double skkzost;
   
    //zostatok = "696004979"; //v tomto kroku potrebujem pridat desatinnu ciarku takto 6960049.79   
    strcpy(zostatok,"6960049.79"); //akoze som pridal desatinnu bodku .
    skkzost = atof(zostatok);
    skkzost = skkzost*30.126 + 0.005;
    printf("\nZostatok v SKK=%f\n", skkzost); //mam spravny vysledok 209678459.978540
    strcpy(skkzostatok,"20967845997"); //v tomto kroku potrebujem odstranit desatinnu ciarku a orezat text na 20967845997
   
    system("PAUSE");
    return EXIT_SUCCESS;
}


Este nejak vymysliet ako dam do prveho vstupu 696004979 desatinnu ciarku takto 6960049.79 a nasledne vysledok orezat z 209678459.978540 na 20967845997. Viete mi prosim pomoct???


Offline

Užívateľ
Užívateľ
C++ nasobenie vacsich cisel

Registrovaný: 19.09.06
Prihlásený: 21.04.24
Príspevky: 749
Témy: 31
Bydlisko: Ružomberok&...
Príspevok NapísalOffline : 30.12.2009 11:53

Kód:
sprintf(skkzostatok,"%f",skkzost);
    char* l=strstr(skkzostatok,".");
    *l=*(l+1);
    *(l+1)=*(l+2);
    *(l+2)=0;
   
    printf("\nZostatok v SKK=%s\n", skkzostatok);

len praca z retazcom, ked posunies 2 cislice za desatinnou ciarkou o jedno dopredu a ukoncis nulou.


Offline

Užívateľ
Užívateľ
C++ nasobenie vacsich cisel

Registrovaný: 20.07.08
Príspevky: 474
Témy: 1
Bydlisko: Kosice
Príspevok NapísalOffline : 30.12.2009 11:58

ja by som to riesil radsej takto, praca s cislami a nie s retazcom:
Kód:
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    static char zostatok[256];
    char skkzostatok[128];
    double skkzost;
   
    strcpy(zostatok,"696004979"); // vstup bez desatinnej bodky
    skkzost = atof(zostatok);     // konverzia retazca na cislo

    // az tu posunusies desatinnu ciarku, praca s cislom a nie s retazcom
    skkzost = skkzost / 100;

    // vzorec   
    skkzost = skkzost*30.126 + 0.005;
    printf("\nZostatok v SKK=%f\n", skkzost);

    // a tu posunies desatinnu ciarku naspat + osekanie na iba celu cast
    skkzost = floor(skkzost * 100);

    // konverzia naspat na retazec (bez desatinnych 0)
    sprintf(skkzostatok,"%.0f", skkzost);
    printf("\nVysledok ako retazec: %s\n", skkzostatok);
   
    system("PAUSE");
    return EXIT_SUCCESS;
}


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.12.09
Prihlásený: 31.12.09
Príspevky: 4
Témy: 2
Príspevok Napísal autor témyOffline : 30.12.2009 12:32

DAKUJEM VELMI PEKNE ZA POMOC, tu mam vysledne riesenie, ktore postacuje:
Kód:
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
    static char zostatok[256];
    char skkzostatok[128];
    double skkzost;

    strcpy(zostatok,"696004979");
    skkzost = atof(zostatok);
    skkzost = skkzost/100;
    printf("\nZostatok=%f\n", skkzost);
    skkzost = ((skkzost*30.126) + 0.005);
   
    sprintf(skkzostatok,"%f",skkzost);
    char* l=strstr(skkzostatok,".");
    *l=*(l+1);
    *(l+1)=*(l+2);
    *(l+2)=0;
   
    printf("\nZostatok v SKK=%s\n", skkzostatok);
   
    system("PAUSE");
    return EXIT_SUCCESS;
}


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. Kroneckerovske nasobenie v C j.

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

8

694

28.11.2008 16:14

suchy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C++ Čitanie znakov/čísel

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

6

565

09.05.2014 12:04

Lukys12345 Zobrazenie posledných príspevkov

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

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

3

1040

25.03.2008 10:59

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ktory z tycho vacsich notebookov?

v Notebooky a netbooky

5

394

05.10.2009 21:30

f4r0 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Napalovanie suborov vacsich ako 4,7GB

v Ostatné programy

10

1142

02.05.2008 22:21

shiro Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

9

1022

24.02.2008 19:03

eiger33 Zobrazenie posledných príspevkov

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

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

8

471

15.06.2013 22:47

dany2281995 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Násobenie a delenie v assembleri

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

4

2769

01.11.2007 20:01

martin90 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. VHDL kód pre násobenie dvoch integerov

v Elektronika

3

549

06.01.2018 21:40

ado130 Zobrazenie posledných príspevkov

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

v PHP, ASP

5

921

06.02.2010 17:44

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Nasobenie matic v Pascale (Potrebujem opravit chybu v prg)

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

3

1483

08.04.2010 9:27

ado21 Zobrazenie posledných príspevkov

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

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

2

1664

09.11.2012 8:54

fista1 Zobrazenie posledných príspevkov

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

v PHP, ASP

3

426

21.03.2010 10:27

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Generátor pseudonáhodných čísel

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

11

1045

14.10.2007 19:35

Integer Zobrazenie posledných príspevkov

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

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

3

588

08.10.2014 20:31

Lessik Zobrazenie posledných príspevkov

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

v PHP, ASP

2

216

06.12.2012 18:36

JanoF 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