いつもお世話になります。
「入力した数値を入れ替えるプログラム」をうっているのですが上手くいきません。
改善方法について教えて下さい。初心者です。
mainの上で関数を宣言をしてます。
入力した数値を入れ替えるプログラム
- tk-xleader
- 記事: 158
- 登録日時: 14年前
- 連絡を取る:
Re: 入力した数値を入れ替えるプログラム
「数字を入れ替える」という本題からは外れるのですが、swap関数の戻り値をintにしているのに、return文で戻り値を指定しないのは良くありません。
void swapにするか、return文で値を返すかしてください。
void swapにするか、return文で値を返すかしてください。
Re: 入力した数値を入れ替えるプログラム
returnの値がありませんがこれはどうなんでしょう。
VisualC++以外だったらコンパイル通るんでしょうか・・・?
まぁそれはとりあえず置いときまして、
main関数で宣言されているa,bとswapの引数のa,bは異なるものです。
swap関数のa,bを変更してもmain関数のa,bは変更されません。
この書き方で意図されている動きをさせるなら参照渡しを使うのがいいと思います。
Programing Place C++編(言語解説) 第15章 参照
しかしこの程度ならわざわざswap関数を作らなくても直接main関数の中に書けば良いのではないのかと思いますが・・・
VisualC++以外だったらコンパイル通るんでしょうか・・・?
まぁそれはとりあえず置いときまして、
main関数で宣言されているa,bとswapの引数のa,bは異なるものです。
swap関数のa,bを変更してもmain関数のa,bは変更されません。
この書き方で意図されている動きをさせるなら参照渡しを使うのがいいと思います。
Programing Place C++編(言語解説) 第15章 参照
しかしこの程度ならわざわざswap関数を作らなくても直接main関数の中に書けば良いのではないのかと思いますが・・・
Re: 入力した数値を入れ替えるプログラム
アドバイスをくれた方々、ありがとうございました。
プログラム勉強中で参考書に書いてる問題に取り組んでいたのですがいまいち理解が・・・
とりあえずポインタを使って問題解決しました。
なら成立するのですが、
と、returnを返そうとするとエラーがでます。
なんでですか・・・。
プログラム勉強中で参考書に書いてる問題に取り組んでいたのですがいまいち理解が・・・
とりあえずポインタを使って問題解決しました。
#include<iostream>
using namespace std;
void swap(int *x , int *y)
{
int z;
z =*y; //bの値をcに代入
*y=*x; //aの値をbに代入
*x= z; //cの値をaに代入
return;
}
int main()
{
int a, b;
a = 10;
b = 20;
swap(&a , &b);
cout << " a = "<< a << ", b = " << b <<endl;
return 0;
}
void swap(int *x , int *y)
{
int z;
z =*y; //bの値をcに代入
*y=*x; //aの値をbに代入
*x= z; //cの値をaに代入
return 0;
}
なんでですか・・・。
Re: 入力した数値を入れ替えるプログラム
void 型関数に戻り値はありません
int swapであれば正常に動作しますが、
void型なのでエラーとなります
あとvoid型であれば関数末のreturnは不要ですよ
int swapであれば正常に動作しますが、
void型なのでエラーとなります
あとvoid型であれば関数末のreturnは不要ですよ