電卓作る
■ このスレッドは過去ログ倉庫に格納されています
a = Console.ReadLine(); b = Console.ReadLine(); a = a + b; Console.WriteLine(a); string a; string b; int c; int d; a = Console.ReadLine(); b = Console.ReadLine(); c = Convert.ToInt32(a); d = Convert.ToInt32(b); c = c + d; Console.WriteLine(c); 10 INPUT A 20 INPUT B 30 PRINT A+B 自分は大学のときからずっとCASIO。 ヒューレット・パッカードはタブレットPCでちょっと痛い目みたんで遠慮したい。 昔はスタックの練習で RPN 電卓をよく作ったもんだ。 string a; string b; int c; int d; while (a != end) a = Console.ReadLine(); b = Console.ReadLine(); c = Convert.ToInt32(a); d = Convert.ToInt32(b); c = c + d; Console.WriteLine(c); } >>8 電卓だけど逆ポーランド入力のやつ? [1][2][3] [store] [2][3] [+] とか入力するん このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所 今更電卓なんて作っても仕方がない。 入出力用の部品代だけで市販品より高くなると思う。 string nyuuryoku; int keisan; string moji1; string moji2; int suuchi1; int suuchi2; int kekka; nyuuryoku = Console.ReadLine(); keisan = nyuuryoku.IndexOf("+"); moi1 = nyuuryoku.Substring(0, keisan); moji = nyuuryoku.Substring(0, keisan + 1); suuchi1 = Convert.ToInt32(moji1); suuchi2 = Convert.ToInt32(moji2); kekka = suuchi1 = suuchi2; Console.WriteLine(kekka); >>18 そろばんだと部材が汎用じゃないからむしろハードルは高くなると思う。 市販品の価格も電卓より若干高め。 ここはプログラム板だ ここで電卓と言えば電卓ソフトだろう >>23 それは勝手な解釈というものだな。 電卓は電卓だろう。 プラスチックの厚板に押しボタンと液晶がついているアレだ。 string nyuuryoku; int keisan1; int keisan2; string moji1; string moji2; int suuchi1; int suuchi2; int kekka; nyuuryoku = Console.ReadLine(); while (keisan1 != -1){ keisan1 = nyuuryoku.IndexOf("+"); moji1 = nyuuryoku.Substring(keisan1, keisan2); suuchi1 = Convert.ToInt32(moji1); kekka = kekka + suuchi1; keisan2 = keisan1; } Console.WriteLine(kekka); どこが間違ってるか教えろ string nyuuryoku; int keisan1; int keisan2; int mojisuu; string moji1; int suuchi1; int kekka; nyuuryoku = Console.ReadLine(); while (keisan1 != -1){ keisan1 = nyuuryoku.IndexOf("+"); moji1 = nyuuryoku.Substring(keisan2, mojisuu); suuchi1 = Convert.ToInt32(moji1); kekka = kekka + suuchi1; keisan2 = keisan1; mojisuu = keisan1 - keisan2; } Console.WriteLine(kekka); 早くしろ でも今回の殺人予告は特定の名前が入ってなくてワロタw 前回個人名出して予告したから今ガクブルなんだろw あれは逮捕は時間の問題w ムショ内で作れやゴミがwww ムショと言えば刑務作業でRuby使った開発をさせるとかいう話は結局ポシャったのか。 そろばんの方が楽だぜ 珠の動きを実装するだけだからな 電卓はdouble使っても桁数が足りないから 文字列を直接計算するものを自分で作らないとね <html> <ruby> <rb>電卓 <rp>( <rt>でんたく <rp>) </ruby> </html> >>37 doubleは15〜6桁の精度だから足りるんじゃね? 電卓なら下に素晴らしいコードがある。 http://www.tuat.ac.jp/ ~tuatmcc/contents/monthly/200206/nuki.html 100円電卓開けると黒いエポキシの下に キー入力とディスプレイ出力と計算を 全部やってるICがあるんだよな。 マイコンで再現しようとしたが ディスプレイの解析で諦めた。 >>47 パソコンの浮動小数点は、どんなに多くの桁を持っていても 確実に桁落ちする。ISOに規定されている。 電卓は決して計算を間違えない、桁数に関係なく。 マセマテカのデモンストレーション検索したら 今のところ誰も電卓作ってない これは一番乗りのチャンスだぞ >>27 四則演算にバグがあるという伝説の電卓じゃねぇか クソスレageんな ここは電卓すら作れないゴミクズが立てたスレだから やたとageられると迷惑 >>52 Calculator Forensics Results Sorted By Result http://www.rskey.org/ ~mwsebastian/miscprj/results.htm ArcSin@ArcCos@ArcTan@Tan@Cos@Sin@9 // N[#, 1000] & 0.42477796076937971538793014983850865259150819812531746292483377692344\ 9218858626995884104476026351203946444259539846919941281533828651746695\ 1760782243854433523508523081058155633166789338688468647911458932864329\ 2699780033838542694470136034949581360572743694570077038104583136297994\ 4640180821780747423821173761019818946764524644562762888487762275146093\ 1036777710800339915916464613995641524408558245348282991718110972787758\ 5927655835214579783537931535564422338713988824870205565725817467368381\ 4549035847389501020087321969929258064184839185674211572106539582831108\ 3116176515288795302571540244554030082153960017043814357906824833573140\ 2827336882752091153616440532270367486029043964875611315237683906777677\ 0626059868336387065882592103254479440889324313929881556121634049999995\ 1189341498531791951984482889557850733783660407249079275669247600340551\ 0578579356451303000941351625865976259962514426185153300744191079476047\ 1286266406193478688591647061362781255873345573341596513680419839005783\ 6298335877276492605968 >>63 いままでどんなプログラム書いたことあんの? delphiでいいだろ 電卓作る為だけに生まれたような言語だ ▲▃ ▅▂▃▅ ▂▄▃▅▆▃ █▀▲ ▆█▀█▀ ▀■▀▀ ▃▆▀ ▅█▃█▀▅▀▅▃▉ ▀▆▀ ▆▀▲ ▅▀▆▃ █ ▅■▀▃▀▅▀▃▂ ▀█▆▅▃ █ ▲▐▅ ▼ ▃ ▀▀ █ ▀ ▀█▅ ▀▆▅█ 2新数の関係で0.1を10回足しても1.0にならないとか有名だろ ∧∧ ミ _ ドスッ ( ,,)┌─┴┴─┐ / つ. 終 了 │ 〜′ /´ └─┬┬─┘ ∪ ∪ ││ _ε3 ゛゛'゛'゛ ついこの前C#ですごく簡単な電卓を作った 小数は切り捨てられるけど16進 2進にも対応して and演算もできる けど実用性がw ttp://members3.jcom.home.ne.jp/goldwingstory/calc2312.html ops2 = {{"+", Plus}, {"-", Subtract}, {"*", Times}, {"^", Power}, Mod}; ops1 = {Prime, Minus, Floor, Exp, Re, Im, Arg, Abs, Sin, Cos, Tan, Conjugate, {"Rationalize", Rationalize[#, 0] &}, {"ToReal", N[#, 100] &}, {"isPrime", If[AtomQ@#, If[#, true, false], false] &@PrimeQ@# &}, {"toBinary", If[#2 == {}, #1, #0[10*#1 + First@#2, Rest@#2]] &[0, IntegerDigits[#, 2]] &}, {"1/x", 1/# &}, Log, {"Log10", Log[10, #] &}}; consts = Join[ToString /@ Range[0, 9], {" I ", " Pi ", " E "}]; s = {None, {0, 0}}; a := s[[1]]; b := s[[2]]; bb := ss[[2]]; op = ImageSize -> {130, 30}; true = 1; false = I; ss := {#[[1]], PadLeft[#[[2]], Max[Length@#[[2]], 2]]} &@If[StringQ@a, {None, Append[b, ToExpression@a]}, s] Column@{Flatten[{ Button[#, s = If[StringQ@a, {a <> #, b}, {#, b}], op] & /@ consts, Button[#[[1]], s = {None, Append[bb[[;; -2]], #[[2]]@Last@bb]}, op] & /@ (If[ListQ@#, #, {ToString@#, #}] & /@ ops1), Button[#[[1]], s = {None, Append[bb[[;; -3]], #[[2]] @@ bb[[-2 ;;]]]}, op] & /@ (If[ListQ@#, #, {ToString@#, #}] & /@ ops2), Button["Enter", s = {None, If[StringQ@a, Append[b, ToExpression@a], Append[b, Last@b]]}, op], Button["C", s = {None, Append[Most@b, 0]}, op], Button["AC", s = {None, {0, 0}}, op], Button["x<>y", s = {None, Join[bb[[;; -3]], bb[[{-1, -2}]]]}, op]}, 1],Dynamic[Framed /@ ss[[2]]]} C言語で作ってやったからいい加減黙れ。 感謝しろよ? ---start--- #include <stdio.h> int main(){ int input1; int input2; printf("最初の数字を入れ(ry\n"); scanf(%x,&input1); printf("\nもひとつ数(ry\n\n"); scanf(%x,&input2); int answer = input1 + input2; printf("\n\n\n\n\nあんさー:"); printf("%d\n\a\a\a,answer); } ---end--- sage >>1 四則演算程度の電卓ならVBとかC#使えばバカでも作れるだろ。 enzansi=[+ - * /] -> GUI.makeTheseButtons(hurry()) output.LEDlikeDisplay <- do(fuckking.hurry())[input + enzansi + input] rest(in(peace(the world))) 30のコードはコンパイルできなかった 自分でメソッド作ったほうがいいのか change(reason=forSomeReason, Display.replace(LED -> 7 Seg Like) whichIs <= 7(Segment) ... Bright.Red with Black background | make(hurry()) rest(in(peace(the world))) >>111 prog.cs(15,8): error CS0165: Use of unassigned local variable `keisan1' prog.cs(17,29): error CS0165: Use of unassigned local variable `keisan2' prog.cs(17,38): error CS0165: Use of unassigned local variable `mojisuu' prog.cs(19,9): error CS0165: Use of unassigned local variable `kekka' prog.cs(23,19): error CS0165: Use of unassigned local variable `kekka' Compilation failed: 5 error(s), 0 warnings visual c#でもコンパイルエラーになる >>112 まずwhileの前にkeisan1に値を入れて一番上のエラーを潰したら? >>113 int型に全部入れたがエラー出る Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object at Test.Main () [0x00000] in <filename unknown>:0 using System; public class Test { public static void Main() { string nyuuryoku; int keisan1 = 0; int keisan2 = 0; int mojisuu = 0; string moji1; int suuchi1 = 0; int kekka = 0; nyuuryoku = Console.ReadLine(); while (keisan1 != -1){ keisan1 = nyuuryoku.IndexOf("+"); moji1 = nyuuryoku.Substring(keisan2, mojisuu); suuchi1 = Convert.ToInt32(moji1); kekka = kekka + suuchi1; keisan2 = keisan1; mojisuu = keisan1 - keisan2; } Console.WriteLine(kekka); } } >>116 C#はしらないんだけどstringにも何か入れてみたら? あと実行時のエラーは色んなところをコメントアウトしたりprint文を入れて行ってすこしずつ調べる prog.cs(11,8): error CS0029: Cannot implicitly convert type `int' to `string' Compilation failed: 1 error(s), 0 warnings できない >>119 intからstringに変換できないとか 文字を入れても駄目だった using System; public class Test { public static void Main() { string nyuuryoku; int keisan1 = 0; int keisan2 = 0; int mojisuu = 0; string moji1 = 0; int suuchi1 = 0; int kekka = 0; nyuuryoku = Console.ReadLine(); while (keisan1 != -1){ keisan1 = nyuuryoku.IndexOf("+"); moji1 = nyuuryoku.Substring(keisan2, mojisuu); suuchi1 = Convert.ToInt32(moji1); kekka = kekka + suuchi1; keisan2 = keisan1; mojisuu = keisan1 - keisan2; } Console.WriteLine(kekka); } } >>122 >文字を入れても駄目だった とはどこの部分? >>123 string moji1 = 0; を string moji1 = a; に変えた >>125 string moji1 = "a"; に変えたがエラーが出る Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object at Test.Main () [0x00000] in <filename unknown>:0 >>126 もうすぐだ。 sageろっての。 実行時のエラーはコメントアウトしていって問題の場所を突き止める。 あ // い // う // え がエラーなかったら あ い // う // え これも大丈夫なら あ い う // え と少しずつはずしていけば場所が分かる using System; public class Test { public static void Main() { string nyuuryoku; int keisan1 = 0; int keisan2 = 0; int mojisuu = 0; string moji1 = "a"; int suuchi1 = 0; int kekka = 0; nyuuryoku = Console.ReadLine(); while (keisan1 != -1){ keisan1 = nyuuryoku.IndexOf("+"); //moji1 = nyuuryoku.Substring(keisan2, mojisuu); //suuchi1 = Convert.ToInt32(moji1); //kekka = kekka + suuchi1; //keisan2 = keisan1; //mojisuu = keisan1 - keisan2; } //Console.WriteLine(kekka); } ここでエラーになった >>129 その悪い行をコメントアウトして かわりにその時点でnyuuryokuに何が入っているか表示させてみたら? >>130 エラーの原因は↓だった while (keisan1 != -1){ >>133 // while (keisan1 != -1){ keisan1 = nyuuryoku.IndexOf("+"); // // // } こうコメントアウトするとどうなる? >>135 じゃ keisan1 = nyuuryoku.IndexOf("+"); が悪い行だよな。 これもコメントアウトしてnyuuryokuになにが入ってるか見たら? この前perlで数百ケタ同士の掛け算ができるスクリプト作ったら 計算終わるまでに20分とかかかってワロタww そのあとBigIntあるとか知ってさらにワロタwww using System; public class Test { public static void Main() { int a; int b; if (a = -1){ b = 1; } while (b != 1){ Console.WriteLine("a"); } } } これでもできなかったから負の数を使わないメソッドを自分で作ればいいのか >>139 それがだめなのは>>112 だからだろ そんなことより>>136 の結果は? >>140 ideoneというサイトだと実行できない いまコンパイラをインストールしてる >>136 は前にやったが入力した文字が表示された >>139 今回のに関係ないが if (a = -1){ じゃなくて if (a == -1){ コメントをなくして実行すると 入力文字列の形式が正しくありません。 と表示される >>147 同じエラーが出る suuchi1 = Convert.ToInt32(moji1); が問題のようだ 変数 args {string[0]} string[] nyuuryoku "1+1" string keisan1 1 int keisan2 0 int mojisuu 0 int moji1 "" string suuchi1 0 int kekka 0 int >>148 >同じエラーが出る って事はIdeone上では何も入力しない状態だったってことだ。 (「null readline」 で検索) あとはがんばれ 明日早いんで寝る 電卓なんてそこいらのプログラミングの本にサンプル載ってるだろ 馬鹿だ。関数電卓ですら簡単に作れるのに 難しいのは()を使った構文解析とかだ ttp://ideone.com/G3ul5 Luaで適当に書いてみたけど途中で飽きた。誰か完成させて。 精度はあんまりよくないけど、昔ネトゲ用に自作電卓を作った JavaScriptで、現在入力してる数値が見れるのが売りで、割り算後の小数点切捨てと小数点ありの結果も同時にだしている 素人なんでいろいろ辺だと思うがそこは勘弁な 長いといわれたので少し省略 ボタンの部分も省略 function calc(ch) { if(ch == "=") { document.form1.text2.value = Math.floor(eval(document.form1.text1.value)); document.form1.text3.value = eval(document.form1.text1.value).toFixed(3); } else if (ch == "C") { document.form1.text1.value = ""; document.form1.text2.value = ""; } else { document.form1.text1.value += ch; } } </SCRIPT> </HEAD> <BODY BGCOLOR = "#FFFFFF" TEXT = "#000000"> <TR><FONT color="#FF0000"><H1>JavaScript電卓</H1></FONT></TR> <FONT color="#87CEFA"> <FORM NAME = "form1" ACTION ="#"> 計算 <INPUT type="text" name="text1" value="" size="120"><BR><BR> 答え(小数点切捨て) <INPUT type="text" size="26" name="text2" value=""><BR><BR> 答え(小数点有り) <INPUT type="text" size="26" name="text3" value=""><BR><BR> </FONT> 浮動小数点の10進数以外の表示はライブラリがそろってないからそれなりに難しいな。 浮動小数点なのか整数(または固定小数点)なのかはっきりしる。 >>160 最適化など何も考えず素直に Haskell で実装した cnTrans 関数が x 進数から y 進数へ変換する ------------ data Number = Number Integer [Integer] deriving Show cnTrans :: Integer -> Number -> Number cnTrans c = fromDec c . toDec toDec :: Number -> Integer toDec (Number c ns) = sum $ zipWith (*) ns $ iterate (*c) 1 fromDec :: Integer -> Integer -> Number fromDec c 0 = Number c [0] fromDec c n = Number c (unfoldr f n) where f d = if d == 0 then Nothing else Just $ swap (d `quotRem` c) swap (a,b) = (b, a) ------------ 10進数の1234を、16進数にする場合 1234 / 16 の余りを得る → 2 一桁目は2になる。 1234から一桁目の2を引く → 1232 1232を、16で割る → 77 77 / 16の余りを得る → 13 二桁目は13になる。(16進数だと、10がA、11がB、12がCだから、13はDになる) 77から二桁目の13を引く → 64 64を、16で割る → 4 4 / 16の余りを得る → 4 三桁目は4になる。 4から三桁目の4を引く → 0 0になったら終了。 得られた各桁を並べて書くと 4 13 2 各桁を16進数の記号に書き換えて 4D2 これが答え。 #include <stdio.h> // x を base進数で、画面にプリントする void aaa(int x, int base) { int a[1000]; int* p = a; while (x != 0) { *p = x % base; x = (x - *p++) / base; } const char t[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; while (p!=a) { printf("%c",t[*--p]); } } void main() { while(1){ int a, b; printf("\n"); scanf("%d",&a); scanf("%d",&b); aaa(a,b); } } 特殊用途計算尺作成ツールなんかどうよ? 汎用の計算尺シミュレーターは沢山あるが http://homepages.slingshot.co.nz/ ~timb3000/intro/intro_screenshots.html こういった特殊用途の計算尺のシミュレータをつくるツールがあったら楽しいんじゃないか。 http://www.sliderules.info/collection/coll-specialised.htm たとえば日没時刻計算の計算尺をつくってプラネタリウムソフトにくっつけるとかそんなの スレタイが 電車作る に見えたぞ A列車でいこう とか オープンワールド系RPGの世界に列車を走らせるのを想像したぞ ゼロヨンじゃねえんだし 敷かれたレールの上をスケジュール通りに走って何が楽しいのか 様々な要因で遅れうる運行を、スケジュール通りに動くよう設計するのが楽しいんじゃないか。 完成されたシステムは、整然と動き続ける列車は、効率よく、美しい。 プログラミングに通じるものが、そこにはある。 >>174 プログラミングの前に、真っ先にグラフ理論が思い浮かんだ > 82 pi/2の近似値ですね。ちなみにPCですると、 -7497258.17914 となったが、どうひょうかはするのか? 安価もちゃんとつけれないとか、専ブラ使えよ・・・ >>37 JavaのBigDecimal,BigIntegerがあれば十分。 というか>>1 がいまさら電卓作ってもな。 Excelを超える表計算ソフトやMATLABを超える行列演算ソフトを 作らないとまったく役に立たないと思うのだが 卒論や修論で電卓を作るとか言ってる奴が過去に研究室にいたがあれはひどかった。 教授も内心馬鹿にしてたし。新規性があれば作ってもいいという考えだから 教授はほとんどツッコミをいれなかったがね。 きっと、その人はまともな研究テーマがちゃんとあって、そのための基礎データを集めたりとか何かするのに電卓アプリが必要だったんだよ、たぶん。 こう、ユーザーインタフェースに関する実験で、どのボタンが一番頻繁に押されるのか、とか、どのボタンが一番押し間違われやすいか、とか。 知らんけど。 電話の数字は 123 456 789 0 なのに テンキーとか電卓は 789 456 123 0 なのはなぜ? そんなの「電話 電卓 配列」でググればいいだろ バカなのか? それとも何か、ム板らしい面白い返しでも欲しいのか? >>181 >>112-149 を読むと1は役に立つのを作ろうとしたというより、 単にプログラミングを始めたばっかりで、 何かに載ってた例題に躓いたという感じだが。 >>1 これでは学習の効率悪すぎる。 まずは薄いC#の入門書を一冊やることをオススメする >>178 tan(355/226) = -7497258.185325587112905071831891248663..... だから小数第一位までしか合ってない。 tan(52174/33215) だと整数部分まで合わないんじゃないか? >>1 ではないが電卓作ってる。 (BCD自前で作ったので)計算結果が正しいかどうかわかんないという とても怖い電卓になってる 冪と根作るのがめんどくせぇ… 電卓の作成はプログラミングの基礎力アップに丁度良い課題だよね 何でもREPLに結びつける思考を始めると何も作らなくなる そのうち使わない魔法が真の魔法だとか言い出すようになる >>173 そういいつつhelloworldやるんだろ? delphiで普通の電卓つくりたいんですが、= の部分がよくわかりません。どなたか教えてください。 >>204 それ以外は判るのか? なら頑張れ。 普通は、=キーを押したときに何をすべきか考えてから他を作るもんだがな。 電卓作るスキルがあれば、オリジナル言語のインタープリターも作れる。 オートマトンの勉強になるね。 で、一番の問題はCASIO系電卓とSHARP系電卓の操作性の違いという…。 >>210 あんたは千円札も使ったことがないのか? 法外に桁居るのは金勘定だよな 自然科学じゃありえん 小さい事務所でも8桁電卓じゃ足りないが、俺のおこずかい計算だと 1円単位はわりとどうでもよく、1万以上は滅多に無い と言うわけで3桁電卓で足りる 3桁なら計算尺で賄える桁だな。 ソロバンもいいが計算尺は小中学校でやらせてもいいんじゃないかな。 最近はやりの地頭力ってやつにもなるだろうし 現実的に物理/工学的な問題に対処する場合, 必ず確度が問題になるのに 電卓使い慣れると確度のこと忘れる奴がたくさんいるから, 計算尺ってのは 必要だと思うよ >>215 宇宙関係だとそうゆうケースも沢山ありそね 計算尺?不要だよ。あんなもんありがたがってるのは老害だけ。 Addiatorと同じで消えて当然。 >>220 あくまで授業の数時間ならいいじゃん。 つか計算尺現役世代に聞いても皆使い方忘れていたな。 プログラミンなる劣化Scratch教えるよりはマシだろう。 log2(3) * log2(5) = log2(8) ※※※テナント募集中※※※ イベント企画のできる方、集まれーーー 一緒にこのスレッドを盛り上げましょう 株式会社 ★◆▲▲ 「分数計算機能、統計計算機能つきの関数電卓」 「1976年にはfx-19が発売された。価格は9,800円。(大卒初任給:9万4300円 ) これなら学生でも買うことができる。そしてこの電卓の目玉は 世界初の分数計算機能、統計計算機能つきの関数電卓」 70年代の関数電卓:CASIO fx-10 (1974)、fx-15 (1975)、fx-19 (1976) - とね日記 ttp://blog.goo.ne.jp/ktonegaw/e/e27a518854a8b71b3eb83b6d38ab598c 電卓プログラムを例題に出してくる参考書ってありそうでないだろ 「週間電卓を作る2月9日号」 http://katahiromz.web.fc2.com/mathai/mzcalc2.zip Boost.Spiritを使ってみました。 関数が使えるが、変数への代入ができない。 ご要望を受け付けてます。どんな電卓を作りたいかを伝達下さい。 例)多倍長演算で無限桁数サポート。GUIを付ける。ユーザ関数機能。数式処理。 Type [q or Q] to quit > 871263948761872364871623946182973164+8761928734912634183412379461874234 Result is: 880025877496784999055036325644847398 > s=92183019827349179203471 s := 92183019827349179203471 Result is: 92183019827349179203471 > sin(s)%100.3 Result is: 0.7484296692622107891527456053804399259219719456829430374497200718368 9079690554390091960884209113407122218168687650754654152155867 > 「週間電卓を作る」は廃刊しました。読者の皆さん、ありがとうございました。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる