よくわかりません
- purin52002
- 記事: 235
- 登録日時: 7年前
- 連絡を取る:
Re: よくわかりません
まずvoid型の関数を作ります。関数名はここではFuncとします。あとで自分の好きな名前にしてください。
つぎに引数をchar型にします。引数名をcとします。あとで自分の好きな名前にしてください。
つぎに関数の中身を作っていきます。
ASCIIコードはご存知ですか?知ってても知らなくてもとりあえずググります。
ASCIIコードを眺めてると、なんとなく規則性が見えてくるような、、、そうでもないような、、、
多分関数の中身を考えることがキモだと思いますのでここは自分で考えてみてください^^
つぎに引数をchar型にします。引数名をcとします。あとで自分の好きな名前にしてください。
つぎに関数の中身を作っていきます。
ASCIIコードはご存知ですか?知ってても知らなくてもとりあえずググります。
ASCIIコードを眺めてると、なんとなく規則性が見えてくるような、、、そうでもないような、、、
多分関数の中身を考えることがキモだと思いますのでここは自分で考えてみてください^^
オフトピック
ヒント
aのascii->97
Aのascii->65
bのascii->98
Bのascii->?
aのascii->97
Aのascii->65
bのascii->98
Bのascii->?
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^
Re: よくわかりません
C言語ですよ。表示形式がC++なだけです。tennga さんが書きました:これもしかしてc++ですよね?
ぼくが扱っているプログラミングCなんですよ、、、
Dango San
Re: よくわかりません
確かに、データを返さないといけないのにvoid型というのはよくわかりませんね。tennga さんが書きました:小文字を渡すと大文字に変換して返す void 型の関数を作成方法がわかりません。
出題者に確認したほうがいいかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: よくわかりません
標準入力から入力された小文字を、そのまま出力するプログラムを書いて
codeタグを付けて貼り付けてください。
main の中で、関数を呼ばずに大文字に変換して出力することはできますか?
void ではなく、変換した大文字を返却値として返す関数は書けますか?
上記に回答していただければ、ポインタを使った方法を示します。
「よくわかりません」などという不適切な件名を付けないでください。
「void型の関数で値を返す方法」などとしてほしかった。
フォーラムルールは読んでいますか?
codeタグを付けて貼り付けてください。
main の中で、関数を呼ばずに大文字に変換して出力することはできますか?
void ではなく、変換した大文字を返却値として返す関数は書けますか?
上記に回答していただければ、ポインタを使った方法を示します。
「よくわかりません」などという不適切な件名を付けないでください。
「void型の関数で値を返す方法」などとしてほしかった。
フォーラムルールは読んでいますか?
Re: よくわかりません
scanfの書式%cはchar*型のデータが対応することを要求し、int*型のデータを渡してしまうと未定義動作になります。
さらに、char型よりint型のサイズが大きい環境では、int型の一部(リトルエンディアンでは上位)のビットが初期化されないことが考えられ、よくないでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: よくわかりません
回答として不満ですが、ポインタを使った方法を示します。tennga さんが書きました:たぶんできないですね、、、
#include <stdio.h>
double conv(double x)
{
return x * 1.61;
}
int main(void)
{
double a, b;
scanf("%lf", &a);
b = conv(a);
printf("%g\n", b);
return 0;
}
main は、conv を用いて、標準入力から入力された値を 1.61倍の値に
変換して出力するプログラムです。
通常、関数は、上の例のように返却値として値を返しますが、ポインタ
を使用すると、次の例のように引数を用いて値を返すことができます。
#include <stdio.h>
void conv2(double x, double *p)
{
*p = x * 1.61;
}
int main(void)
{
double a, b;
scanf("%lf", &a);
conv2(a, &b);
printf("%g\n", b);
return 0;
}
&b は、変数 b のアドレスです。アドレスは「ポインタの値」です。
conv2 を呼び出すと、p は、その値を受け取るので、b を指します。
「*p =」は「b =」と同じ意味になります。
以上、理解できましたか?
Re: よくわかりません
一つのポインタで、値をもらうことも返すこともできるという例です。
conv は、double の値を渡すと、1.61倍の値に変換して返す関数です。
main は、conv を用いて、標準入力から入力された値を 1.61倍の値に
変換して出力するプログラムで、変数は a だけです。
通常、関数は、上の例のように返却値として値を返しますが、ポインタ
を使用すると、次の例のように引数を用いて値を受け取ることも返す
こともできます。
p は「double へのポインタ」です。
&a は、変数 a のアドレスです。アドレスは「ポインタの値」です。
conv1 を呼び出すと、p は、その値を受け取るので、a を指します。
「*p *=」は「a *=」と同じ意味になり、
「a = a * 1.61」と同じ意味になります。
小文字を大文字に変換する関数は、double * の代わりに char * の
引数を使えばよいでしょうお。 さあ、main はどう書けばよいでしょうか?
#include <stdio.h>
double conv(double x)
{
return x * 1.61;
}
int main(void)
{
double a;
scanf("%lf", &a);
a = conv(a);
printf("%g\n", a);
return 0;
}
main は、conv を用いて、標準入力から入力された値を 1.61倍の値に
変換して出力するプログラムで、変数は a だけです。
通常、関数は、上の例のように返却値として値を返しますが、ポインタ
を使用すると、次の例のように引数を用いて値を受け取ることも返す
こともできます。
#include <stdio.h>
void conv1(double *p)
{
*p *= 1.61; // *p = *p * 1.61; でも同じ
}
int main(void)
{
double a;
scanf("%lf", &a);
conv1(&a);
printf("%g\n", a);
return 0;
}
&a は、変数 a のアドレスです。アドレスは「ポインタの値」です。
conv1 を呼び出すと、p は、その値を受け取るので、a を指します。
「*p *=」は「a *=」と同じ意味になり、
「a = a * 1.61」と同じ意味になります。
小文字を大文字に変換する関数は、double * の代わりに char * の
引数を使えばよいでしょうお。 さあ、main はどう書けばよいでしょうか?