X



電卓作る

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2010/11/15(月) 17:09:29
どうやって作るんだ
0098デフォルトの名無しさん
垢版 |
2010/11/19(金) 17:33:53
0101デフォルトの名無しさん
垢版 |
2010/11/19(金) 18:25:49
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]]]}
0102デフォルトの七氏さん
垢版 |
2010/11/19(金) 19:18:49
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
0103デフォルトの名無しさん
垢版 |
2010/11/19(金) 20:49:05
>>102
二つの数字を足すソフトはもう作った
0107デフォルトの名無しさん
垢版 |
2010/11/19(金) 22:02:19
>>104
>>30
0108デフォルトの名無しさん
垢版 |
2010/11/19(金) 22:05:31
enzansi=[+ - * /] -> GUI.makeTheseButtons(hurry())
output.LEDlikeDisplay <- do(fuckking.hurry())[input + enzansi + input]
rest(in(peace(the world)))
0109デフォルトの名無しさん
垢版 |
2010/11/19(金) 22:08:50
30のコードはコンパイルできなかった

自分でメソッド作ったほうがいいのか
0110デフォルトの名無しさん
垢版 |
2010/11/19(金) 22:11:56
change(reason=forSomeReason, Display.replace(LED -> 7 Seg Like)
whichIs <= 7(Segment) ... Bright.Red with Black background | make(hurry())
rest(in(peace(the world)))
0112デフォルトの名無しさん
垢版 |
2010/11/19(金) 22:19:16
>>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#でもコンパイルエラーになる
0114デフォルトの名無しさん
垢版 |
2010/11/19(金) 22:38:16
>>113
int型に全部入れたがエラー出る

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object
at Test.Main () [0x00000] in <filename unknown>:0

0116デフォルトの名無しさん
垢版 |
2010/11/19(金) 22:41:42
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);


}
}
0117デフォルトの名無しさん
垢版 |
2010/11/19(金) 22:46:08
>>116
C#はしらないんだけどstringにも何か入れてみたら?
あと実行時のエラーは色んなところをコメントアウトしたりprint文を入れて行ってすこしずつ調べる
0118デフォルトの名無しさん
垢版 |
2010/11/19(金) 22:54:14
prog.cs(11,8): error CS0029: Cannot implicitly convert type `int' to `string'
Compilation failed: 1 error(s), 0 warnings

できない
0120デフォルトの名無しさん
垢版 |
2010/11/19(金) 22:58:52
>>119

intからstringに変換できないとか

文字を入れても駄目だった
0122デフォルトの名無しさん
垢版 |
2010/11/19(金) 23:01:02
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);


}
}

0124デフォルトの名無しさん
垢版 |
2010/11/19(金) 23:02:49
>>123
string moji1 = 0;

string moji1 = a;
に変えた
0126デフォルトの名無しさん
垢版 |
2010/11/19(金) 23:06:08
>>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

0128デフォルトの名無しさん
垢版 |
2010/11/19(金) 23:13:07
>>126
もうすぐだ。
sageろっての。

実行時のエラーはコメントアウトしていって問題の場所を突き止める。


// い
// う
// え

がエラーなかったら



// う
// え

これも大丈夫なら




// え

と少しずつはずしていけば場所が分かる
0129デフォルトの名無しさん
垢版 |
2010/11/19(金) 23:20:41
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);


}
ここでエラーになった
0130デフォルトの名無しさん
垢版 |
2010/11/19(金) 23:27:07
>>129
その悪い行をコメントアウトして
かわりにその時点でnyuuryokuに何が入っているか表示させてみたら?
0133デフォルトの名無しさん
垢版 |
2010/11/19(金) 23:37:50
>>132
whileは負の数を使えないのか
0136デフォルトの名無しさん
垢版 |
2010/11/19(金) 23:45:19
>>135
じゃ keisan1 = nyuuryoku.IndexOf("+"); が悪い行だよな。
これもコメントアウトしてnyuuryokuになにが入ってるか見たら?
0138デフォルトの名無しさん
垢版 |
2010/11/19(金) 23:56:08
この前perlで数百ケタ同士の掛け算ができるスクリプト作ったら
計算終わるまでに20分とかかかってワロタww
そのあとBigIntあるとか知ってさらにワロタwww
0139デフォルトの名無しさん
垢版 |
2010/11/19(金) 23:58:31
using System;

public class Test
{
public static void Main()
{
int a;
int b;
if (a = -1){
b = 1;
}
while (b != 1){
Console.WriteLine("a");
}
}
}
これでもできなかったから負の数を使わないメソッドを自分で作ればいいのか
0149デフォルトの名無しさん
垢版 |
2010/11/20(土) 00:34:43
変数
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
0150デフォルトの名無しさん
垢版 |
2010/11/20(土) 00:37:36
>>148
>同じエラーが出る
って事はIdeone上では何も入力しない状態だったってことだ。
(「null readline」 で検索)

あとはがんばれ
明日早いんで寝る
0152デフォルトの名無しさん
垢版 |
2010/11/20(土) 02:36:04
電卓なんてそこいらのプログラミングの本にサンプル載ってるだろ
馬鹿だ。関数電卓ですら簡単に作れるのに
難しいのは()を使った構文解析とかだ
0154デフォルトの名無しさん
垢版 |
2010/11/22(月) 10:16:51
精度はあんまりよくないけど、昔ネトゲ用に自作電卓を作った
JavaScriptで、現在入力してる数値が見れるのが売りで、割り算後の小数点切捨てと小数点ありの結果も同時にだしている
0156デフォルトの名無しさん
垢版 |
2010/11/22(月) 21:20:16
素人なんでいろいろ辺だと思うがそこは勘弁な
長いといわれたので少し省略 ボタンの部分も省略

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>
0165158
垢版 |
2010/11/24(水) 12:55:14
>>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)
------------
0166デフォルトの名無しさん
垢版 |
2010/11/24(水) 18:58:47
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
これが答え。
0167166
垢版 |
2010/11/24(水) 19:04:02
#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);
}
}
0168デフォルトの名無しさん
垢版 |
2010/11/25(木) 01:14:21
特殊用途計算尺作成ツールなんかどうよ?
汎用の計算尺シミュレーターは沢山あるが
http://homepages.slingshot.co.nz/~timb3000/intro/intro_screenshots.html
こういった特殊用途の計算尺のシミュレータをつくるツールがあったら楽しいんじゃないか。
http://www.sliderules.info/collection/coll-specialised.htm

たとえば日没時刻計算の計算尺をつくってプラネタリウムソフトにくっつけるとかそんなの
0172デフォルトの名無しさん
垢版 |
2010/11/26(金) 12:34:15
スレタイが

電車作る


に見えたぞ

A列車でいこう

とか

オープンワールド系RPGの世界に列車を走らせるのを想像したぞ
0173デフォルトの名無しさん
垢版 |
2010/11/26(金) 16:18:15
ゼロヨンじゃねえんだし
敷かれたレールの上をスケジュール通りに走って何が楽しいのか
0174デフォルトの名無しさん
垢版 |
2010/11/26(金) 16:36:04
様々な要因で遅れうる運行を、スケジュール通りに動くよう設計するのが楽しいんじゃないか。
完成されたシステムは、整然と動き続ける列車は、効率よく、美しい。
プログラミングに通じるものが、そこにはある。
0178デフォルトの名無しさん
垢版 |
2010/11/27(土) 16:48:20
> 82
pi/2の近似値ですね。ちなみにPCですると、
-7497258.17914
となったが、どうひょうかはするのか?
0181デフォルトの名無しさん
垢版 |
2010/12/02(木) 22:03:26
>>37
JavaのBigDecimal,BigIntegerがあれば十分。

というか>>1がいまさら電卓作ってもな。

Excelを超える表計算ソフトやMATLABを超える行列演算ソフトを
作らないとまったく役に立たないと思うのだが


卒論や修論で電卓を作るとか言ってる奴が過去に研究室にいたがあれはひどかった。
教授も内心馬鹿にしてたし。新規性があれば作ってもいいという考えだから
教授はほとんどツッコミをいれなかったがね。
0182デフォルトの名無しさん
垢版 |
2010/12/02(木) 22:33:04
きっと、その人はまともな研究テーマがちゃんとあって、そのための基礎データを集めたりとか何かするのに電卓アプリが必要だったんだよ、たぶん。
こう、ユーザーインタフェースに関する実験で、どのボタンが一番頻繁に押されるのか、とか、どのボタンが一番押し間違われやすいか、とか。
知らんけど。
0183デフォルトの名無しさん
垢版 |
2010/12/02(木) 23:21:28
電話の数字は
123
456
789
 0
なのに
テンキーとか電卓は
789
456
123

なのはなぜ?
0184デフォルトの名無しさん
垢版 |
2010/12/02(木) 23:25:22
そんなの「電話 電卓 配列」でググればいいだろ
バカなのか?

それとも何か、ム板らしい面白い返しでも欲しいのか?
0185デフォルトの名無しさん
垢版 |
2010/12/03(金) 02:26:25
>>181
>>112-149を読むと1は役に立つのを作ろうとしたというより、
単にプログラミングを始めたばっかりで、
何かに載ってた例題に躓いたという感じだが。

>>1
これでは学習の効率悪すぎる。
まずは薄いC#の入門書を一冊やることをオススメする
0188デフォルトの名無しさん
垢版 |
2010/12/08(水) 01:18:35
>>178
tan(355/226) = -7497258.185325587112905071831891248663.....
だから小数第一位までしか合ってない。

tan(52174/33215) だと整数部分まで合わないんじゃないか?
0189デフォルトの名無しさん
垢版 |
2011/05/14(土) 08:15:35.84
>>1ではないが電卓作ってる。
(BCD自前で作ったので)計算結果が正しいかどうかわかんないという
とても怖い電卓になってる

冪と根作るのがめんどくせぇ…
0190デフォルトの名無しさん
垢版 |
2011/07/09(土) 11:03:40.46
電卓の作成はプログラミングの基礎力アップに丁度良い課題だよね
0191デフォルトの名無しさん
垢版 |
2011/07/10(日) 01:54:19.81
RPN電卓だ〜いすき!
0195デフォルトの名無しさん
垢版 |
2011/10/31(月) 11:09:43.80
何でもREPLに結びつける思考を始めると何も作らなくなる
そのうち使わない魔法が真の魔法だとか言い出すようになる
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況