Už jsem vypnul PC, opravím zítra, co přesně nefunguje? :)
Edit: už to vidím, pokazily se linky, opravuji.
Malá hra o Velkého Bajta (0) - Jednoduchá kalkulačka
Re: Malá hra o Velkého Bajta (0)
Po trošku delší době, ale udělal jsem to takhle. exe
Teď se mrknu na druhý bit, co se třetího týče, tak si moc nevěřím.
Kód: Vybrat vše
#include <iostream>
int main()
{
using namespace std;
double cislo1, cislo2;
char znamenko;
while (true)
{
cout << "Zadejte priklad ve tvaru 1 + 1:" << endl;
cin >> cislo1 >> znamenko >> cislo2;
switch(znamenko)
{
case '+':
cout << cislo1 << " + " << cislo2 << " = " << cislo1 + cislo2 << endl;
break;
case '-':
cout << cislo1 << " - " << cislo2 << " = " << cislo1 - cislo2 << endl;
break;
case '*':
cout << cislo1 << " * " << cislo2 << " = " << cislo1 * cislo2 << endl;
break;
case '/':
if (cislo2 == 0) cout << "Nulou nelze delit!" << endl;
else cout << cislo1 << " / " << cislo2 << " = " << cislo1 / cislo2 << endl;
break;
default:
cout << "Neplatny znak" << endl;
}
cout << "Pro pokracovani napiste \"Y\", pro ukonceni jakykoli jiny znak." << endl;
cin >> znamenko;
if (znamenko != 'Y' && znamenko != 'y') exit(0);
}
return 0;
}
Teď se mrknu na druhý bit, co se třetího týče, tak si moc nevěřím.
Re: Malá hra o Velkého Bajta (0)
Funguje to, počítá to, úkol splněn. A ten skoro padesátikilový exáč mě pobavil, u mě v Linuxu má program po zkompilování a stripnutí ladících informací necelých šest kilobajtů. Používáš Visual Studio?
Měl bych jenom dvě připomínky. Při první kompilaci jsem dostal hlášení:
error: ‘exit’ was not declared in this scope
Napravilo to inkludování příslušné knihovny z jazyka C:
#include <cstdlib>
Mimochodem, nebylo by lepší místo násilného ukončení celého programu prostě vyskočit z toho nekonečného cyklu příkazem break?
Druhá věc je trochu nepříjemnější, protože na ní může v budoucnu narazit i běžný uživatel, který dostane hotový program. Když při druhém a dalším výpočtu místo čísla ve výrazu zadáš nějaký nesmyslný vstup, třeba písmeno, program se zacyklí a pořád dokola vypisuje hlášení a pokouší se znovu a znovu načítat, což se dá ukončit jedině jeho zabitím. Zkus zapřemýšlet jestli by se to nedalo nějak ošetřit. Udělá mi to i když odpovím na otázku jestli chci pokračovat víc než jedním písmenem...
Měl bych jenom dvě připomínky. Při první kompilaci jsem dostal hlášení:
error: ‘exit’ was not declared in this scope
Napravilo to inkludování příslušné knihovny z jazyka C:
#include <cstdlib>
Mimochodem, nebylo by lepší místo násilného ukončení celého programu prostě vyskočit z toho nekonečného cyklu příkazem break?
Druhá věc je trochu nepříjemnější, protože na ní může v budoucnu narazit i běžný uživatel, který dostane hotový program. Když při druhém a dalším výpočtu místo čísla ve výrazu zadáš nějaký nesmyslný vstup, třeba písmeno, program se zacyklí a pořád dokola vypisuje hlášení a pokouší se znovu a znovu načítat, což se dá ukončit jedině jeho zabitím. Zkus zapřemýšlet jestli by se to nedalo nějak ošetřit. Udělá mi to i když odpovím na otázku jestli chci pokračovat víc než jedním písmenem...
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Malá hra o Velkého Bajta (0)
Jo, Visual Studio a koukám, že je to dost vidět Ten include se mi někam vypařil, exit je tam schválně, chci to zavřít. Co se týče druhýho bodu, no říkal jsem si, že se cin.get() někde nevyhnu. Ok, mrknu na to.
Re: Malá hra o Velkého Bajta (0)
No, takže asi takhle.
Vyřešil jsem snad vše - nikde se to necyklí a při napsání víc znaků místo Y to ty ostatní ignoruje. Akorát při zadání něčeho jiného než čísla mě to nenechá rozhodnout o pokračování a nevím co s tím, ale to už nechám tak, jak to je. Uživatel ať dělá to, co má
Kód: Vybrat vše
#include <iostream>
#include <cstdlib>
int main()
{
using namespace std;
double cislo1, cislo2;
char znamenko;
while (true)
{
cout << "Zadejte priklad ve tvaru 1 + 1:" << endl;
znamenko = '\0';
cin >> cislo1 >> znamenko >> cislo2;
switch(znamenko)
{
case '+':
cout << cislo1 << " + " << cislo2 << " = " << cislo1 + cislo2 << endl;
break;
case '-':
cout << cislo1 << " - " << cislo2 << " = " << cislo1 - cislo2 << endl;
break;
case '*':
cout << cislo1 << " * " << cislo2 << " = " << cislo1 * cislo2 << endl;
break;
case '/':
if (cislo2 == 0) cout << "Nulou nelze delit!" << endl;
else cout << cislo1 << " / " << cislo2 << " = " << cislo1 / cislo2 << endl;
break;
default:
cout << "Neplatny znak" << endl;
}
cout << "Pro pokracovani napiste \"Y\", pro ukonceni jakykoli jiny znak." << endl;
cin >> znamenko;
cin.ignore(256, '\n');
if (znamenko != 'Y' && znamenko != 'y') exit(0);
}
return 0;
}
Vyřešil jsem snad vše - nikde se to necyklí a při napsání víc znaků místo Y to ty ostatní ignoruje. Akorát při zadání něčeho jiného než čísla mě to nenechá rozhodnout o pokračování a nevím co s tím, ale to už nechám tak, jak to je. Uživatel ať dělá to, co má
Re: Malá hra o Velkého Bajta (0) - Jednoduchá kalkulačka
Naposledy upravil(a) Roidoc dne 02 bře 2018 00:31, celkem upraveno 1 x.
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Malá hra o Velkého Bajta (0) - Jednoduchá kalkulačka
Tak jsem se rozhodl, že zkusím ty tvoje bity taky udělat ale v php, žádný nízkoúrovňový C/C++. Jsem prostě už nevyknutej na tu hrůzu
Kalkulačka, která umí zatím pouze sčítat celá čísla:
zdrojáky na githubu https://github.com/CZechBoY/easy-calculator, ukázka zatím nikde není, ale třeba zítra se k tomu dostanu a hodim to někam na web.
Hlavně jsem ten projekt udělal, abych si vyzkoušel nový technologie a ta kalkulačka je spíš vedlejší činnost
Vlastně kaklulačku jsem už dělal v Javě a pořád se mi nedaří najít ideální strukturu tříd. Nějaký nápady?
Kalkulačka, která umí zatím pouze sčítat celá čísla:
zdrojáky na githubu https://github.com/CZechBoY/easy-calculator, ukázka zatím nikde není, ale třeba zítra se k tomu dostanu a hodim to někam na web.
Hlavně jsem ten projekt udělal, abych si vyzkoušel nový technologie a ta kalkulačka je spíš vedlejší činnost
Vlastně kaklulačku jsem už dělal v Javě a pořád se mi nedaří najít ideální strukturu tříd. Nějaký nápady?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Malá hra o Velkého Bajta (0) - Jednoduchá kalkulačka
Ideální struktura tříd? Co třeba třída kalkulacka a v ní metody plus, minus, krat, deleno
Zkus to udělat v LISPu, tam přijdeš na nové nápady. A to myslím úplně vážně.
Zkus to udělat v LISPu, tam přijdeš na nové nápady. A to myslím úplně vážně.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
-
- nováček
- Příspěvky: 38
- Registrován: květen 14
- Bydliště: Praha
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Malá hra o Velkého Bajta (0) - Jednoduchá kalkulačka
To je krásná soutěž!
Tak já se taky zapojím, zatím jen kalkulačka. Zkusil jsem ji ve FreeBasicu.
Exe:
https://www.dropbox.com/s/q557mq6rj0nq29q/kalkul.zip?dl=0
Tak já se taky zapojím, zatím jen kalkulačka. Zkusil jsem ji ve FreeBasicu.
Kód: Vybrat vše
dim as single a,b,c
dim as single i,y
dim as string$ vyraz,znamenko,konec
znovu:
input vyraz
for i=1 To len(vyraz)
if mid$(vyraz,i,1)="+" or mid$(vyraz,i,1)="-" or mid$(vyraz,i,1)="/" or mid$(vyraz,i,1)="*" then
y=i-1
znamenko=mid$(vyraz,y+1,1)
exit for
end if
next i
a=val(left(vyraz,y))
b=val(right(vyraz,len(vyraz)-(y+1)))
select case znamenko
case "+"
c=a+b
case "-"
c=a-b
case "/"
c=a/b
case "*"
c=a*b
end select
print c
sleep
konec=inkey$
if konec=chr$(27) then end
goto znovu
Exe:
https://www.dropbox.com/s/q557mq6rj0nq29q/kalkul.zip?dl=0
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Malá hra o Velkého Bajta (0) - Jednoduchá kalkulačka
@faraon jedna trida je hnus, neni to rozsiritelny...
@zxretrosoft to asi funguje jen pro jednociferny cisla ze?
@zxretrosoft to asi funguje jen pro jednociferny cisla ze?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
-
- nováček
- Příspěvky: 20
- Registrován: květen 17
- Pohlaví:
- Stav:
Offline
Re: Malá hra o Velkého Bajta (0) - Jednoduchá kalkulačka
Řešení chudého muže
E// nebo menší úprava do nekonečného cyklu:
Kód: Vybrat vše
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
int main(int argc, char **argv) {
int n1, n2;
char zn;
if (scanf(" %d %1[-+*/%] %d", &n1, &zn, &n2) == 3) printf(" = %d\n", (zn == '+' ? n1 + n2 : (zn == '-' ? n1 - n2 : (zn == '*' ? n1 * n2 : (zn == '/' ? n1 / n2 : n1 % n2)))));
else printf(" ERR\n");
return 0;
}
E// nebo menší úprava do nekonečného cyklu:
Kód: Vybrat vše
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
int main(int argc, char **argv) {
int n1, n2;
char zn;
while (scanf(" %d %1[-+*/%] %d", &n1, &zn, &n2) == 3) printf(" = %d\n", (zn == '+' ? n1 + n2 : (zn == '-' ? n1 - n2 : (zn == '*' ? n1 * n2 : (zn == '/' ? n1 / n2 : n1 % n2)))));
return 0;
}
std::endl není nový řádek!
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 14
- 2228
-
od kupjec
Zobrazit poslední příspěvek
25 zář 2023 11:26
-
-
Výběr skříně (zakoupená je malá) Příloha(y)
od DaveMove » 09 čer 2023 15:35 » v Problémy s hardwarem - 8
- 821
-
od meda2016
Zobrazit poslední příspěvek
09 čer 2023 20:27
-
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti