「夫を成功」へ導く妻の秘訣 座談会

c#で電卓を作っています。それで、1文字削除するボタンを設置しました。
そのボタンを押すと1文字削除するようにしたいのですが、先頭から消えて行ってしまいます「」
誰か教えてください

A 回答 (1件)

>そのボタンを押すと1文字削除するようにしたいのですが、先頭から消えて行ってしまいます



ここの部分について記載があれば回答が付いたのではないでしょうか?

簡単に書いたら、

string st = "abcdefg";

MessageBox.Show(st.Substring(0,st.Length-1));

文字列の長さから1を引いた文字数を取得するだけかも。
    • good
    • 4
この回答へのお礼

ありがとうございます。(今頃観)

お礼日時:2020/02/12 21:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Q文字列の後ろから必要分だけ削除したい。

例1 Dim str As String = "あいうえお1234"

文字列の中の1234だけ削除したい場合は、
str = str.Remove(5,4)
という風に、5文字目の後から4文字削除にすればよいのですが、

例の"あいうえお"の部分の長さが毎回処理する度に異なる場合は、
文字列の頭から何文字目という指定ができないので、”後ろから4文字を削除したい”となります。その場合は、どのようなプロパティを使えばいいのでしょうか。

.NET環境です。

Aベストアンサー

Length(str)で文字数を取得できますので、後ろから4文字目は先頭から何文字目かは計算できると思いますが、どうでしょうか?

QC#で電卓のプログラムを組んでいるのですが

質問です。

電卓のプログラムにおいて、小数点のボタンがありますよね。それを重複して入力されないようにしたいのですが。何か良い方法はないでしょうか?

よろしくお願い致します。

Aベストアンサー

>if(s.Equals('.'))
>の部分で、コンパイルすると、));にしろとのエラーメッセージが出るのですが、なぜなんでしょうか?

多分、私の書いた部分をそのままコピペしているため
ifの前に全角の空白が入っているんだと思います。
(掲示板だとTabが無効になるので代わりに全角空白を使いました)

Qバックスペース機能の作り方

VBを使ってプログラミングを作りたいのですが、コマンドボタンを押したら、ラベルに書かれた文字列の右端から一文字消していくような機能をつけたいのですが、どのように作ればよいのか教えてください。たとえば、
「0000」を「000 」
          ↑
          ラベルに書かれた文字列をコマンドボタンをおしてここの文字を消したい。

ちょっとわかりづらいかもしれませんが、よろしくお願いします。

あと、もうひとつあります。2つ以上のフォームで同時に表示させて、なおかつ化さないようにきっちりと配置も決めたいのですが。どの解像度で表示しても同じ位置で表示させたいのですが。

Aベストアンサー

こんにちは。maruru01です。
一つ目の質問は、コマンドボタンのクリックイベントに、

If Text1.Text <> "" Then
  Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)
End If

二つ目の質問は意味がよくわかりません。
では。

QC#にて電卓を作りたいのですが、大きな数を使用

お世話になります。

勉強のため、電卓を作ってみようと思っています。
基本的なことは解っているのですが、一つ問題があります。

99999999999.99999999
等の様な、intにもdoubleにも入らないような値を扱えるような
電卓は作成可能でしょうか。

機能的には四則演算程度しかさせないのですが、数を
広い範囲で扱えるようなものを作りたいのです。

windowsに付属しているように、数の大きな電卓を作成する
対策法を教えてください。


よろしくお願いいたします。

Aベストアンサー

やったことはありませんが…
いわゆる「多倍長精度演算」でしょうか?

http://ja.wikipedia.org/wiki/%E4%BB%BB%E6%84%8F%E7%B2%BE%E5%BA%A6%E6%BC%94%E7%AE%97

.NET Framework 4.0以降であれば、そういう型も用意されている…ようです。
http://d.hatena.ne.jp/matsukawar/20120527/1338095845

Q電卓の小数点

今晩は。
先日、授業でVisual Studio(C#)を使い、
電卓を製作したのですが、
実行して0が表示されている状態で
(普通の電卓の場合電源を入れた直後の状態)
小数点のキー"."を押すと、
最初に0のキーを押さなくても
"0.~"(例 "0.2"など)と表示されますよね?
この動作は一体どういった仕組みになっているんでしょうか?
ご存知の方居られましたらお願いします。

Aベストアンサー

『1.2』と入力する場合、
”1”、”.”、”2”と入力しますよね。
『0.2』と入力する場合、
”0”、”.”、”2”と入力しますよね。
つまり、”.”を押した時、整数部はすでに画面
に入力されていますよね。
ということは、いきなり”.”を押した場合、
すでに、初期状態の”0”が表示されているの
で、引き続き、”.”を表示すればいいのです。

つまり”.”を押した時、
表示エリア=表示エリア+”.”でよいわけです。

Q0除算を判定したい

0除算とは例えば10を0で割ったら結果が無限大になるように、ある数を0で割った時に起こる現象です。

しばしばこの0除算に悩まされるので、ある式を代入したらそれが0除算であるかどうかを判定できたらと思いました。
そこで下のような関数を作れたらと思っているのですが、
ある式を見てその結果が0除算であるかを判定する方法はありますでしょうか?

int isDivide0( float val )
{
  if ( val == 0除算 )
    return 1;
  else
    return 0;
}

int main()
{
  isDivide0( 10 / 0 );
}

尚、開発環境はVisual Studio2005です。

Aベストアンサー

C++でよければ、

class divide_by_zero : public std::domain_error { ... };

template <typename T>
class arithmetic
{
 T value_;
public:
 ...
 template <typename U>
  T operator/(U rhs) const
 {
  if (rhs == U(0)) throw divide_by_zero();
  return value_ / rhs;  
 }
 ...
};

のようにするのが一番確実です。
すでに除算(または剰余算)が行われた後だと、未定義の動作になってしまうので一般的な対策は困難です。

VC++に限れば、無限大かどうかを判断する方法もありますが、それがゼロ除算によるものなのか、オーバーフローの結果やHUGE_VALによるものなのか判断がつきません。

Q0除算の例外処理ができない!!助けて!!

0除算の例外処理ができない!!助けて!!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Try
If (Flag = "数値") Then
Flag = "演算子"
Work = Total + Calc + Input
Total = js.Eval(Work)
Input = ""
TextBox1.Text = Total
End If
Catch ex As Exception
MessageBox.Show("Exception Error : 0除算を行いました。")
End Try


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Total + Calc + Inputは、すべて文字列です。



実行すると、ポップアップではなく、テキストエリアにこんな文字列が・・・
0除算しても例外が発生しない・・・

0 / 0 ・・・NaN (非数値)
1 / 0 ・・・+∞

そもそも、0除算ってなんですか??? 0で割っても例外が出ない!!

0除算の例外処理ができない!!助けて!!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Try
If (Flag = "数値") Then
Flag = "演算子"
Work = Total + Calc + Input
Total = js.Eval(Work)
Input = ""
TextBox1.Text = Total
End If
Catch ex As Exception
MessageBox.Show("Exception Error : 0除算を行いました。")
End Try
...続きを読む

Aベストアンサー

・コードが少ない
・変数の型が不明
・変数なのかも不明
・クラスの中身が不明

もっと単純に記述してからクラス化した方がいいのでは?
むしろわかりやすく書かないと的確な答えは返ってこない。

Exceptionでは0除算のエラーは拾えません。
だからCatchできないのです。

--------------------------------------------------------------
Try
If (Flag = "数値") Then
Flag = "演算子"
Work = Total + Calc + Input
Total = js.Eval(Work)
Input = ""
TextBox1.Text = Total
End If
Catch ex As Exception
MessageBox.Show("システムエラーが発生しました。")
Catch Zero_ex As DivideByZeroException
MessageBox.Show("Exception Error : 0除算を行いました。")
End Try
--------------------------------------------------------------

■Exceptionとは
http://msdn.microsoft.com/ja-jp/library/system.exception%28VS.80%29.aspx

■ゼロ除算の回避方法
http://blog.livedoor.jp/akf0/archives/51073757.html

・コードが少ない
・変数の型が不明
・変数なのかも不明
・クラスの中身が不明

もっと単純に記述してからクラス化した方がいいのでは?
むしろわかりやすく書かないと的確な答えは返ってこない。

Exceptionでは0除算のエラーは拾えません。
だからCatchできないのです。

--------------------------------------------------------------
Try
If (Flag = "数値") Then
Flag = "演算子"
Work = Total + Calc + Input
Total = js.Eval(Work)
Input = ""
TextBox1.Text = Total
End If
Catch ...続きを読む

QC言語で電卓を作成する。

C言語を用いて三項まで計算できる電卓を作りたいのですが、どうも上手くいきません。
四則演算(+、-、×、÷)の優先順位を用いたプログラミング方法が分かりません。
以下に自分で作成したソースを添付します。
このソースに修正や追加して3項までの四則演算できるプログラミングを教えていただけますか?
宜しくお願いします。

#include <stdio.h>

int main(void)
{
int answer;/*答え*/
int x,y,z;/*x=第一項,y=第二項,第三項*/
char op1,op2;/*演算子1、演算子2*/

while(1){
printf("式を入力してください\n");
printf("式:");
scanf("%d %c %d %c %d" ,&x,&op1,&y,&op2,&z);

if((op1=='+'|'-'|'*'|'/') && (op2=='+'|'-'|'*'|'/')){

switch(op2){
case '+':
answer=y+z;
break;

case '-':
answer=y-z;
break;

case '*':
answer=y*z;
break;

case '/':
if(z==0){
printf("ERROR\n");
return 0;
}
answer=y/z;
break;

default:
printf("ERROR\n");
return 0;
}
switch(op1){
case '+':
answer=x+answer;
break;

case '-':
answer=x-answer;
break;

case '*':
answer=x*answer;
break;

case '/':
if(y==0){
printf("ERROR\n");
return 0;
}
answer=x/answer;
break;

default:
printf("ERROR\n");
return 0;
}
printf("答え:%d\n",answer);
}

else {
switch(op1){
case '+':
answer=x+y;
break;

case '-':
answer=x-y;
break;

case '*':
answer=x*y;
break;

case '/':
if(y==0){
printf("ERROR\n");
return 0;
}
answer=x/y;
break;

default:
printf("ERROR\n");
return 0;
}
printf("答え:%d\n",answer);
}

}
}
左辺に×、÷が来ても優先的に計算されません。

C言語を用いて三項まで計算できる電卓を作りたいのですが、どうも上手くいきません。
四則演算(+、-、×、÷)の優先順位を用いたプログラミング方法が分かりません。
以下に自分で作成したソースを添付します。
このソースに修正や追加して3項までの四則演算できるプログラミングを教えていただけますか?
宜しくお願いします。

#include <stdio.h>

int main(void)
{
int answer;/*答え*/
int x,y,z;/*x=第一項,y=第二項,第三項*/
char op1,op2;/*演算子1、演算子2*/

while(1){
printf("式を入力してください\n...続きを読む

Aベストアンサー

どこまでの道具が使えるのかどうかにはよりますが、雰囲気からすれば、2項の「電卓」はコードがあるようですね。
これを、3項に拡張する場合、だらだらとコードを付け加えてゆくよりは、今ある部分を機能的に独立させる方が見通しは良くなります。

たとえば、こんな感じ。



int calc2term(int a, char op, int b)
{
// a op b の値を返す
}

int comp_op(char op1, char op2)
{
// op1 と op2 優先順序を確認する
// op1 が優先なら、-1 を
// op2 が優先なら、1 を
// 優先順序が同じなら 0 を返す。
}


int main()
{
int answer;

// ここまでで、z, y,z op1, op2 が入力されたものとする

if (comp_op(op1, op2) == 1) // 特別扱いするのは、op2 のほうが優先順序が高いときだけ
{
answer = calc2term(y, op2, z);
answer = calc2term(x, op1, answer);
// op2 のほうが優先順位が高いので x op1 (y op2 z) を計算する。
}
else // それ以外の時は、op1 op2 の優先順序が同じ時も含めて、左から順に計算すればいい
{
answer = calc2term(x, op1, y);
answer = clac2term(answer, op2, z);
// (x op1 y) op2 z を計算する
}

// answer の値を表示する。

return 0;
}

どこまでの道具が使えるのかどうかにはよりますが、雰囲気からすれば、2項の「電卓」はコードがあるようですね。
これを、3項に拡張する場合、だらだらとコードを付け加えてゆくよりは、今ある部分を機能的に独立させる方が見通しは良くなります。

たとえば、こんな感じ。



int calc2term(int a, char op, int b)
{
// a op b の値を返す
}

int comp_op(char op1, char op2)
{
// op1 と op2 優先順序を確認する
// op1 が優先なら、-1 を
// op2 が優先なら、1 を
// 優先順序が同じなら 0 を返...続きを読む

QC#にて別クラスの関数を使いたい

C#にて、別クラスの関数を使用する方法を教えてほしいです。

下記のような、構造体を受け取るメソッドを作りました。

*****************************
private struct MyPoint
{
public int x;
public int y;
}

private void proc1(MyPoint pt)
{
MessageBox.Show("座標:" ; pt.x + "," + pt.y + "実行結果");
}

private void button1_Click(object sender ,System.EventArgs e)
{

MyPoint pt;
pt.x = 10;
pt.y = 20;
proc(pt);
}
*****************************

別のフォームのクラスから、proc1を呼び出したいのですが、やり方がわかりません。
どうか、教えてください。

Aベストアンサー

同じ定義をしたとしても別の名前空間に書いた構造体は同一とはみなされません。

呼び出し先クラスでの構造体を private では無く、public で宣言して下さい。

呼び出し元では、

MyClass.MyPoint pt;

のようにして実体を作ります。

Qvisualstudio C# テキストボックスの数値を取得して計算する方法を教えてください。

visualstudio C#でアプリケーションを作っています。初心者です。
テキストボックスを2回クリックして、2点間の距離を算出するという部分を作りたいのですがうまくいきません。
ビルドはできるのですが、アプリを使用すると、
「型 'System.FormatException' の初回例外が mscorlib.dll で発生しました
追加情報:入力文字列の形式が正しくありません。」
と表示されます。

テキストボックス4つはそれぞれx1x2y1y2が表示されています。
各変数を取得し、計算させテキストボックに表示させる方法を知りたいです。

以下自分なりにつくったソースコードですが、問題点等教えていただいたいです。
よろしくお願いします。

int x1,x2,y1,y2;
double z;
x1 = int.Parse(textBox1.Text);
y1 = int.Parse(textBox2.Text);
x2 = int.Parse(textBox3.Text);
y2 = int.Parse(textBox4.Text);
z = Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2));
textBox5.Text = z.ToString();

visualstudio C#でアプリケーションを作っています。初心者です。
テキストボックスを2回クリックして、2点間の距離を算出するという部分を作りたいのですがうまくいきません。
ビルドはできるのですが、アプリを使用すると、
「型 'System.FormatException' の初回例外が mscorlib.dll で発生しました
追加情報:入力文字列の形式が正しくありません。」
と表示されます。

テキストボックス4つはそれぞれx1x2y1y2が表示されています。
各変数を取得し、計算させテキストボックに表示させる方法を知りた...続きを読む

Aベストアンサー

>入力という形ではないですが、数値は表示されています。

数字と数値は区別してほしいところですが…まぁ、本題ではないので……。

コード実行時には全てに数字が入っている。
ということでいいんですかね?
『数字以外』が入っていたり、『空』だったりするとエラーになると思いますが。
https://msdn.microsoft.com/ja-jp/library/b3h1hf19(v=vs.110).aspx

例外出さないようにする。というのであれば、
https://msdn.microsoft.com/ja-jp/library/f02979c7(v=vs.110).aspx
辺りを使用して戻り値を確認するべき…でしょうか。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング