プロが教えるわが家の防犯対策術!

C言語について質問なんですが((。繰り返しを指示するプログラムがどうも上手くいきません・・・

C言語について質問なんですが((。繰り返しを指示するプログラムがどうも上手くいきませんorz。詳しい方是非応援に(TAT)!

今打ち込んでいるとこなんですがどうもうまくいかなくて(orz

どんな内容かといいますとテキストボックス1に入力した数値を

テキストボックス2に入力した回数分掛けた値をもとめ

テクストボックス3に出力するものです

例えばテクストボックス1に「13」と入力し、テクストボックス2に「2」と入力したら

169とテクストボックス3に出力したいのですが上手くいかなくて。。。

for(i=0;i<b;i++)この後に繰り返しの式を書かなければと思うのですが・・・それも思いつかず(TAT)
っていうか他に2~3個方法があるのですがこの for(i=0;i<b;i++)があっているのかもわからず・・・orz
是非、是非力をかしてください!

ちなみにプログラムはこんな感じになってます↓
private void button5_Click(object sender, EventArgs e)
{
//2の0乗=1
//2の1乗=1*2*2=2
//2の2乗=1*2*2=4
//2の3乗=1*2*2*2=8
//2の4乗=1*2*2*2*2*=16
int a, b, c,i;

//入力
//textboxの数値を変数aに入力
a = int.Parse(textBox1.Text);
//↑がわからに場合数字のドキュメントで数値入力を確認

//textbox2の数値を変数bに入力
b = int.Parse(textBox2.Text);

//処理
//cに1を代入
//b回繰り返す
//cにaを掛ける
c = 1;

//出力
//求めた答えをtextbox4に出力
textBox3.Text = c.ToString();

for(i=0;i<b;i++)
{

}}

A 回答 (5件)

どんな風に書いたのか、それでどんな風になったのか、がわからないので、正確に答えようがないですが。



> //出力
> //求めた答えをtextbox4に出力
> textBox3.Text = c.ToString();
>
> for(i=0;i<b;i++)
> {
>
> }

この順番だと、textBox3は計算前のcの値(1)になるだけで、forで計算した結果にならないのではないでしょうか。
    • good
    • 0

単純に質問文の通りならこんな感じでしょうか。



c = 1;
for( i = 1; i <= b; i ++)
{
  c = c * a;

}

for文が出力処理の後ろにあるのも妙なものですし、
プログラミングの世界での話しまで持ち出してみるならば
「上手くいかない」と判定するに足る情報が提示されていなかったりもします。

もっと言うなら、変数宣言がint型なので
入力条件と実行環境によってはオーバーフローとなる危険性もあったり。

この手の定番モノの無限ループやループ回数異常はなさそうですが…
    • good
    • 0

--- 質問 ---


テキストボックス1に入力した数値をテキストボックス2に入力した回数分掛けた値をもとめテクストボックス3に出力するものです。
例えばテクストボックス1に「13」と入力し、テクストボックス2に「2」と入力したら169とテクストボックス3に出力したい。


C++ではなく、C言語についての質問ならば、べき乗ですからint型変数textbox[] について cast 演算子(double)を用いてこんな風になろうかと思います。



#include <stdio.h>
#include <math.h>

int main(void)
{
int textbox[4];
char c;

do {
printf("textbox1? ");
scanf("%d", &textbox[1]);
printf("textbox2? ");
scanf("%d", &textbox[2]);
textbox[3]=pow((double)textbox[1],(double)textbox[2]);
printf("textbox3= %d\n", textbox[3]);
printf("\tContinue? ");
scanf("%*c%c", &c);
} while (c=='\n');

return 0;
}



-----結果-----
textbox1? 13
textbox2? 2
textbox3= 169
Continue? n
    • good
    • 0

#3です。


for() の練習にこだわるならば #2さんが答えになります。


#include <stdio.h>
int my_pow(int, int);

int main(void)
{
int textbox[4];
char c;

do {
printf("textbox1? ");
scanf("%d", &textbox[1]);
printf("textbox2? ");
scanf("%d", &textbox[2]);
textbox[3]=my_pow(textbox[1], textbox[2]);
printf("textbox3= %d\n", textbox[3]);
printf("\tContinue? ");
scanf("%*c%c", &c);
} while (c=='\n');

return 0;
}

int my_pow(int x, int y)
{
int i,t=1;
for(i=0; i<y; i++)
t*=x;
return t;
}
    • good
    • 0

プログラムを見ると private void ~とか、Cには無い書きかたしてるので、正確にはC#で、テキストボックスというのも.NetのフォームのTextBoxのことではないかと。


よって、int配列がどうのというのは関係ないのでは。



質問者様へ。
CとC#(ついでにC++,Java等)は構文が似ていますが、いろんなところに違いがあって、まったく別の言語です。
混同しないようにしましょう。
    • good
    • 0

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