| | |
| Stránka: 1 z 1
| [ Príspevkov: 6 ] | |
Autor | Správa |
---|
Registrovaný: 30.12.09 Prihlásený: 31.12.09 Príspevky: 4 Témy: 2 | Napísal josi: 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???
|
|
Registrovaný: 20.07.08 Príspevky: 474 Témy: 1 Bydlisko: Kosice | Napísal mbc: 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; }
|
|
Registrovaný: 30.12.09 Prihlásený: 31.12.09 Príspevky: 4 Témy: 2 | Napísal autor témy josi: 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???
|
|
Registrovaný: 19.09.06 Prihlásený: 21.04.24 Príspevky: 749 Témy: 31 Bydlisko: Ružomberok&... |
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.
|
|
Registrovaný: 20.07.08 Príspevky: 474 Témy: 1 Bydlisko: Kosice | Napísal mbc: 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; }
|
|
Registrovaný: 30.12.09 Prihlásený: 31.12.09 Príspevky: 4 Témy: 2 | Napísal autor témy josi: 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; }
|
|
| Stránka: 1 z 1
| [ Príspevkov: 6 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Kroneckerovske nasobenie v C j. v Assembler, C, C++, Pascal, Java | 8 | 694 | 28.11.2008 16:14 suchy | | C++ Čitanie znakov/čísel v Assembler, C, C++, Pascal, Java | 6 | 565 | 09.05.2014 12:04 Lukys12345 | | IEEE format cisel v C v Assembler, C, C++, Pascal, Java | 3 | 1040 | 25.03.2008 10:59 Tominator | | Ktory z tycho vacsich notebookov? v Notebooky a netbooky | 5 | 394 | 05.10.2009 21:30 f4r0 | | Napalovanie suborov vacsich ako 4,7GB v Ostatné programy | 10 | 1142 | 02.05.2008 22:21 shiro | | Nasobenie v JavaScript, VBScript, Ajax | 9 | 1022 | 24.02.2008 19:03 eiger33 | | nasobenie pola Pascal v Assembler, C, C++, Pascal, Java | 8 | 471 | 15.06.2013 22:47 dany2281995 | | Násobenie a delenie v assembleri v Assembler, C, C++, Pascal, Java | 4 | 2769 | 01.11.2007 20:01 martin90 | | VHDL kód pre násobenie dvoch integerov v Elektronika | 3 | 549 | 06.01.2018 21:40 ado130 | | Generovanie cisel v PHP, ASP | 5 | 921 | 06.02.2010 17:44 Ďuri | | Nasobenie matic v Pascale (Potrebujem opravit chybu v prg) v Assembler, C, C++, Pascal, Java | 3 | 1483 | 08.04.2010 9:27 ado21 | | Zoradenie cisel Java v Assembler, C, C++, Pascal, Java | 2 | 1664 | 09.11.2012 8:54 fista1 | | Z cisel text? v PHP, ASP | 3 | 426 | 21.03.2010 10:27 Ďuri | | Generátor pseudonáhodných čísel v Assembler, C, C++, Pascal, Java | 11 | 1045 | 14.10.2007 19:35 Integer | | Java - súčin čisel v Assembler, C, C++, Pascal, Java | 3 | 588 | 08.10.2014 20:31 Lessik | | Formatovanie cisel v php v PHP, ASP | 2 | 216 | 06.12.2012 18:36 JanoF |
| 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
|
|