whileループでノ問題
whileループでノ問題
[1.1]教授のコメントのいみを理解し直したい。
[1.2]大学のプログラムの授業で、整数を素因数分解するプログラムを作った。
[1.3]whileループで,iが代入されないまま参照されるのを直す。
[1.4]コンパイルすると正しく起動するが 、教授のコメントがわからなくて困っている。
[2] 環境
[2.1] OS : Windows vista
[2.2] コンパイラ名 :gcc
[3] その他
・授業で習った程度で、ほとんどわからない状態です
よろしくお願いしますm(__)m
プログラム本体
#include<stdio.h>
int prime(int x);
int getprime(int x);
void printfact(int x);
int main(){
int input;
printf("正数を入力: ");
scanf("%d",&input);
if(input < 1){
printf("BAD \n");
return 0;
}
printfact(input);
return 0;
}
int prime(int x){
int k,i;
if(x<2) return 0;
for(k=x-1;k>1;k--){
if(x%i == 0){
return 0;
}
}
return 1;
}
int getprime(int x){
int i,k;
if(x<2) return 0;
for(k=1;x>=k;k++){
if(x%k == 0){
if(prime(k)) return k;
}
}
return 0; //0を返す
}
void printfact(int x){
int i;
char c='=';
printf("%d",x);
if(x==1) printf("=1");
else if(x!=0){
while(i!=0){
i=getprime(x);
if(i!=0){
printf("%c%d",c,i);
c = '*';
x = x/i;
}
}
}
printf("\n");
return;
}
[1.2]大学のプログラムの授業で、整数を素因数分解するプログラムを作った。
[1.3]whileループで,iが代入されないまま参照されるのを直す。
[1.4]コンパイルすると正しく起動するが 、教授のコメントがわからなくて困っている。
[2] 環境
[2.1] OS : Windows vista
[2.2] コンパイラ名 :gcc
[3] その他
・授業で習った程度で、ほとんどわからない状態です
よろしくお願いしますm(__)m
プログラム本体
#include<stdio.h>
int prime(int x);
int getprime(int x);
void printfact(int x);
int main(){
int input;
printf("正数を入力: ");
scanf("%d",&input);
if(input < 1){
printf("BAD \n");
return 0;
}
printfact(input);
return 0;
}
int prime(int x){
int k,i;
if(x<2) return 0;
for(k=x-1;k>1;k--){
if(x%i == 0){
return 0;
}
}
return 1;
}
int getprime(int x){
int i,k;
if(x<2) return 0;
for(k=1;x>=k;k++){
if(x%k == 0){
if(prime(k)) return k;
}
}
return 0; //0を返す
}
void printfact(int x){
int i;
char c='=';
printf("%d",x);
if(x==1) printf("=1");
else if(x!=0){
while(i!=0){
i=getprime(x);
if(i!=0){
printf("%c%d",c,i);
c = '*';
x = x/i;
}
}
}
printf("\n");
return;
}
Re:whileループでノ問題
> [1.1]教授のコメントのいみを理解し直したい。
> return 0; //0を返す
コメントって、↑これしかないじゃん。
最悪のコメントに近いです。
(1を返す、などと書いてあったら本当に最悪)
教授の真意は量り知れませんが、
直すとしたら、コメントを削除かな。
> [3] その他
> ・授業で習った程度で、ほとんどわからない状態です
何が判らないのですか?
あるいは、どこまでなら判るのですか?
> return 0; //0を返す
コメントって、↑これしかないじゃん。
最悪のコメントに近いです。
(1を返す、などと書いてあったら本当に最悪)
教授の真意は量り知れませんが、
直すとしたら、コメントを削除かな。
> [3] その他
> ・授業で習った程度で、ほとんどわからない状態です
何が判らないのですか?
あるいは、どこまでなら判るのですか?
Re:whileループでノ問題
> > return 0; //0を返す
> コメントって、↑これしかないじゃん。
まさかとは思いましたが、本当にそうなのかもしれませんね。
ここから読み取れるのは、このソースが純粋なC90のものではなく、C99か、GCC拡張を用いているか、そのどちらかだということですね。
> コメントって、↑これしかないじゃん。
まさかとは思いましたが、本当にそうなのかもしれませんね。
ここから読み取れるのは、このソースが純粋なC90のものではなく、C99か、GCC拡張を用いているか、そのどちらかだということですね。
Re:whileループでノ問題
コメントは「whileループで,iが代入されないまま参照されています。」
です。
教科書を見てもこのプログラム作るのにかなりかかりました。
return 0;
をどうしたらいいんですか?
無知ですみません。
です。
教科書を見てもこのプログラム作るのにかなりかかりました。
return 0;
をどうしたらいいんですか?
無知ですみません。
Re:whileループでノ問題
もしかして、
コメントって、ソースコード中のコメントではなくて、提出したソースコードに対する
先生のコメントという意味ですか?
それで
>コメントは「whileループで,iが代入されないまま参照されています。」
このいみは、
void printfact(int x){
int i;
から
while(i!=0){
のまでの間にiに値を入れてないので、プログラムが正しく動かないかもしれませんよという意味です。
コメントって、ソースコード中のコメントではなくて、提出したソースコードに対する
先生のコメントという意味ですか?
それで
>コメントは「whileループで,iが代入されないまま参照されています。」
このいみは、
void printfact(int x){
int i;
から
while(i!=0){
のまでの間にiに値を入れてないので、プログラムが正しく動かないかもしれませんよという意味です。
Re:whileループでノ問題
説明不足ですみません。
なるほど、そういうことなんですか。
ずっとwhile文のなかを見ていました。
意味はわかったのですが、それを解決するためには、
どのようにしたらよいのですか?
i=getprime(x);
これを加えたらよいのでしょうか?
なるほど、そういうことなんですか。
ずっとwhile文のなかを見ていました。
意味はわかったのですが、それを解決するためには、
どのようにしたらよいのですか?
i=getprime(x);
これを加えたらよいのでしょうか?
Re:whileループでノ問題
というか、心を持たないコンパイラの警告メッセージじゃあるまいし、先生のコメントも的を射てませんね。
iが初期化されていないのは、printfactだけでなく、primeもそうです。
何か初期値を与えればよいというものではなく、もっと根本的な問題があります。
まずはアルゴリズムを確認し直してください。
Cがそれほど得意ではないのであれば、計算の手順を日本語で正確に記述してから、Cに翻訳することをお勧めします。
iが初期化されていないのは、printfactだけでなく、primeもそうです。
何か初期値を与えればよいというものではなく、もっと根本的な問題があります。
まずはアルゴリズムを確認し直してください。
Cがそれほど得意ではないのであれば、計算の手順を日本語で正確に記述してから、Cに翻訳することをお勧めします。
Re:whileループでノ問題
たかぎさん
早いコメントありがとうございます。
>iが初期化されていないのは、printfactだけでなく、primeもそうです。
ということですが、
初期化しないとしたらどのようにしてやればいいのですか?
また、
日本語からCに翻訳とのことですが、そういうことはまったく習っていないです。
早いコメントありがとうございます。
>iが初期化されていないのは、printfactだけでなく、primeもそうです。
ということですが、
初期化しないとしたらどのようにしてやればいいのですか?
また、
日本語からCに翻訳とのことですが、そういうことはまったく習っていないです。
Re:whileループでノ問題
こんばんは。
以前から気になっていた事があるので
lotusさんの、このご質問に便乗させて頂きます事、ご勘弁下さい。
なお、新しいスレをたてた方が良い様でしたら、ご指導の程、宜しくお願い致します。(_ _)
OS:Windows NT 環境:VC++2008(SP1)
lotusさんの提示されたソースを自分なりに、編集させて頂きました。
編集させて頂いたソースを
try.c
try.cpp
それぞれ、試してみました。
私の環境で、それぞれのファイルで試した結果のエラーや警告を報告させて頂きます。
私の以下のソース内での質問:(↓以前から、これが疑問に思ってた事なのですが^^;)
「IMEの設定で、半角文字設定で押した時のTabキーと
全角文字設定で押した時のTabキー」の違いはありますか?
(↑便乗させて頂いた上での質問です。ごめんなさい。)
すみません。試させて下さい。
Tabやタグが、意図通りに表示できなければ、必要であれば編集させて頂きます。(謝
//try.c
1>------ ビルド開始: プロジェクト: try, 構成: Debug Win32 ------
1>コンパイルしています...
1>try.c (←誤字編集)
warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead.
To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf' の宣言を確認してください。
1>(略)(45) : warning C4101: 'i' : ローカル変数は 1 度も使われていません。
1>(略)(34) : warning C4700: 初期化されていないローカル変数 'i' が使用されます
1>(略)(70) : warning C4700: 初期化されていないローカル変数 'i' が使用されます
1>リンクしています...
1>マニフェストを埋め込んでいます...
1>ビルドログは(略)" に保存されました。
1>try - エラー 0、警告 4
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========

以前から気になっていた事があるので
lotusさんの、このご質問に便乗させて頂きます事、ご勘弁下さい。
なお、新しいスレをたてた方が良い様でしたら、ご指導の程、宜しくお願い致します。(_ _)
OS:Windows NT 環境:VC++2008(SP1)
lotusさんの提示されたソースを自分なりに、編集させて頂きました。
編集させて頂いたソースを
try.c
try.cpp
それぞれ、試してみました。
私の環境で、それぞれのファイルで試した結果のエラーや警告を報告させて頂きます。
私の以下のソース内での質問:(↓以前から、これが疑問に思ってた事なのですが^^;)
「IMEの設定で、半角文字設定で押した時のTabキーと
全角文字設定で押した時のTabキー」の違いはありますか?
(↑便乗させて頂いた上での質問です。ごめんなさい。)
すみません。試させて下さい。
Tabやタグが、意図通りに表示できなければ、必要であれば編集させて頂きます。(謝
//try.c
#include<stdio.h> // 1行目
// 2行目(空行)
int prime(int x); // 3行目
int getprime(int x); // 4行目
void printfact(int x); // 5行目
// 6行目(空行)
int main(){ // 7行目
// 8行目(空行)
int input; // 9行目
//10行目(空行)
printf("正数を入力: "); //11行目
scanf("%d",&input); //12行目
//13行目(空行)
if(input < 1){ //14行目
//15行目(空行)
printf("BAD \n"); //16行目
//17行目(空行)
return 0; //18行目
} //19行目
//20行目(空行)
printfact(input); //21行目
//22行目(空行)
return 0; //23行目
} //24行目
//25行目(空行)
int prime(int x){ //26行目
//27行目(空行)
int k,i; //28行目
//29行目(空行)
if(x<2) return 0; //30行目
//31行目(空行)
for(k=x-1;k>1;k--){ //32行目
//33行目(空行)
if(x%i == 0){ //34行目
//35行目(空行)
return 0; //36行目
} //37行目
} //38行目
//39行目(空行)
return 1; //40行目
} //41行目
//42行目(空行)
int getprime(int x){ //43行目
//44行目(空行)
int i,k; //45行目
//46行目(空行)
if(x<2) return 0; //47行目
//48行目(空行)
for(k=1;x>=k;k++){ //49行目
//50行目(空行)
if(x%k == 0){ //51行目
//52行目(空行)
if(prime(k)) return k; //53行目
} //54行目
} //55行目
//56行目(空行)
return 0; //0を返す //57行目
} //58行目
//59行目(空行)
void printfact(int x){ //60行目
//61行目(空行)
int i; //62行目
char c='='; //63行目
//64行目(空行)
printf("%d",x); //65行目
//66行目(空行)
if(x==1) printf("=1"); //67行目
else if(x!=0){ //68行目
//69行目(空行)
while(i!=0){ //70行目
//71行目(空行)
i=getprime(x); //72行目
//73行目(空行)
if(i!=0){ //74行目
//75行目(空行)
printf("%c%d",c,i); //76行目
//77行目(空行)
c = '*'; //78行目
x = x/i; //79行目
} //80行目
} //81行目
} //82行目
//83行目(空行)
printf("\n"); //84行目
//85行目(空行)
return; //86行目
}
------------------------------------------------------------------------------------------------1>------ ビルド開始: プロジェクト: try, 構成: Debug Win32 ------
1>コンパイルしています...
1>try.c (←誤字編集)
warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead.
To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf' の宣言を確認してください。
1>(略)(45) : warning C4101: 'i' : ローカル変数は 1 度も使われていません。
1>(略)(34) : warning C4700: 初期化されていないローカル変数 'i' が使用されます
1>(略)(70) : warning C4700: 初期化されていないローカル変数 'i' が使用されます
1>リンクしています...
1>マニフェストを埋め込んでいます...
1>ビルドログは(略)" に保存されました。
1>try - エラー 0、警告 4
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========

Re:whileループでノ問題
>> コメントって、ソースコード中のコメントではなくて、提出したソースコードに対する
>> 先生のコメントという意味ですか?
>普通はそうでしょう。
私はそのような経験がなかったから思いつかなかったのです。
大学時代にコードの添削を受けたことなんてないです。
lotusさんへ
>日本語からCに翻訳とのことですが、そういうことはまったく習っていないです。
C言語を習うことが日常の言語からC言語への翻訳方法を習うことではないですか?
素因数分解を通常どのようにやりますか?
まずはを日本語(+数式)で表現します。
それをC言語に直してあげればプログラムが出来ます。
>> 先生のコメントという意味ですか?
>普通はそうでしょう。
私はそのような経験がなかったから思いつかなかったのです。
大学時代にコードの添削を受けたことなんてないです。
lotusさんへ
>日本語からCに翻訳とのことですが、そういうことはまったく習っていないです。
C言語を習うことが日常の言語からC言語への翻訳方法を習うことではないですか?
素因数分解を通常どのようにやりますか?
まずはを日本語(+数式)で表現します。
それをC言語に直してあげればプログラムが出来ます。
Re:whileループでノ問題
> 私はそのような経験がなかったから思いつかなかったのです。
> 大学時代にコードの添削を受けたことなんてないです。
ソースコードレビューやら静的検証やらで、いうなれば所見が出てくることがあるわけですが、ここでいうコメントはそっちの意味ですね。
> >日本語からCに翻訳とのことですが、そういうことはまったく習っていないです。
> C言語を習うことが日常の言語からC言語への翻訳方法を習うことではないですか?
慣れてくれば最初からCで考えますが、不慣れなうちはそれしかありませんね。
英語なんかでもそうですよね。
> 大学時代にコードの添削を受けたことなんてないです。
ソースコードレビューやら静的検証やらで、いうなれば所見が出てくることがあるわけですが、ここでいうコメントはそっちの意味ですね。
> >日本語からCに翻訳とのことですが、そういうことはまったく習っていないです。
> C言語を習うことが日常の言語からC言語への翻訳方法を習うことではないですか?
慣れてくれば最初からCで考えますが、不慣れなうちはそれしかありませんね。
英語なんかでもそうですよね。
Re:whileループでノ問題
<<No:52469
醜すぎるソースで申し訳御座いません。
//try.cpp の報告
1>------ ビルド開始: プロジェクト: training, 構成: Debug Win32 ------
1>コンパイルしています...
1>try.cpp
1>(略)visual studio 2008\projects\training\p46\osarai4.cpp(12) : warning C4996: 'scanf':
This function or variable may be unsafe. Consider using scanf_s instead.
To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf'
の宣言を確認してください。
1>(略)(45) : warning C4101: 'i' : ローカル変数は 1 度も使われていません。
1>(略)(34) : warning C4700: 初期化されていないローカル変数 'i' が使用されます
1>(略)(70) : warning C4700: 初期化されていないローカル変数 'i' が使用されます
1>リンクしています...
1>マニフェストを埋め込んでいます...
1>(略)Visual Studio 2008\Projects\training\Debug\BuildLog.htm" に保存されました。
1>try - エラー 0、警告 4
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
こんな感じでした。
お騒がせしました。おやすみなさい。
醜すぎるソースで申し訳御座いません。
//try.cpp の報告
1>------ ビルド開始: プロジェクト: training, 構成: Debug Win32 ------
1>コンパイルしています...
1>try.cpp
1>(略)visual studio 2008\projects\training\p46\osarai4.cpp(12) : warning C4996: 'scanf':
This function or variable may be unsafe. Consider using scanf_s instead.
To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf'
の宣言を確認してください。
1>(略)(45) : warning C4101: 'i' : ローカル変数は 1 度も使われていません。
1>(略)(34) : warning C4700: 初期化されていないローカル変数 'i' が使用されます
1>(略)(70) : warning C4700: 初期化されていないローカル変数 'i' が使用されます
1>リンクしています...
1>マニフェストを埋め込んでいます...
1>(略)Visual Studio 2008\Projects\training\Debug\BuildLog.htm" に保存されました。
1>try - エラー 0、警告 4
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
こんな感じでした。
お騒がせしました。おやすみなさい。
Re:whileループでノ問題
もしかして・・・?(激汗
もしかして、このスレのQ∩Aって
お身内の方々の受け答えだったのですか?(汗
そうでしたら、余計な口出しをして申し訳御座いませんでした。
もし、そうでしたら私のレス、お手数ですが早急に全て削除お願い致します。
失礼します。(_ _)
もしかして、このスレのQ∩Aって
お身内の方々の受け答えだったのですか?(汗
そうでしたら、余計な口出しをして申し訳御座いませんでした。
もし、そうでしたら私のレス、お手数ですが早急に全て削除お願い致します。
失礼します。(_ _)
Re:whileループでノ問題
>>iが初期化されていないのは、printfactだけでなく、primeもそうです。
>ということですが、
>初期化しないとしたらどのようにしてやればいいのですか?
もしかして、各関数で使ってるiとかkが共通だと思ってませんか?
ぱっと見た感想です。
>ムンバさん
ここで質問する意味は分かりませんが、使ってる文字コード表を見ればタブが一つしかないのが分かると思いますけど・・・
もしかしたらいろんなタブがある文字コードがあるのかも知れないのです。
ないとは思いますが。
僕のブラウザの文字エンコーディングを見ると、見慣れぬ文字コードも多々あるので。
#include<stdio.h>
int main(){
printf("%x\n",' ');
printf("%x\n",' ');
return 0;
}
こんなんでも結果は分かりますね。
もしかして質問の意図と違うかもしれません。
>ということですが、
>初期化しないとしたらどのようにしてやればいいのですか?
もしかして、各関数で使ってるiとかkが共通だと思ってませんか?
ぱっと見た感想です。
>ムンバさん
ここで質問する意味は分かりませんが、使ってる文字コード表を見ればタブが一つしかないのが分かると思いますけど・・・
もしかしたらいろんなタブがある文字コードがあるのかも知れないのです。
ないとは思いますが。
僕のブラウザの文字エンコーディングを見ると、見慣れぬ文字コードも多々あるので。
#include<stdio.h>
int main(){
printf("%x\n",' ');
printf("%x\n",' ');
return 0;
}
こんなんでも結果は分かりますね。
もしかして質問の意図と違うかもしれません。
Re:whileループでノ問題
> お身内の方々の受け答えだったのですか?(汗
そんなことはありませんので、ご心配なく。
ムンバさんが確認してくださった警告メッセージが、私がいうところの「心を持たないコンパイラの警告メッセージ」に相当します。
そんなことはありませんので、ご心配なく。
ムンバさんが確認してくださった警告メッセージが、私がいうところの「心を持たないコンパイラの警告メッセージ」に相当します。
Re:whileループでノ問題
おはようございます!
たかぎさん、sizumaさん、了解しました。
ご解説ありがとうございます。
---追加---
sizumaさん、例文ありがとうございます。
先ほどは、急いでいたもので
編集・追加になってしまいました。
失礼しました。
---脱字編集---
たかぎさん、sizumaさん、了解しました。
ご解説ありがとうございます。
---追加---
sizumaさん、例文ありがとうございます。
先ほどは、急いでいたもので
編集・追加になってしまいました。
失礼しました。
---脱字編集---

Re:whileループでノ問題
コメントが遅くなりました。
sizumaさん
>もしかして、各関数で使ってるiとかkが共通だと思ってませんか?
>ぱっと見た感想です。
そうは思っていません。
どのようにしたらいいのか見当がつきません。
どのようにしたら、
教授の「whileループで,iが代入されないまま参照されています。」
を直すことができるのでしょうか?
よければ教えていただけないでしょうか?
sizumaさん
>もしかして、各関数で使ってるiとかkが共通だと思ってませんか?
>ぱっと見た感想です。
そうは思っていません。
どのようにしたらいいのか見当がつきません。
どのようにしたら、
教授の「whileループで,iが代入されないまま参照されています。」
を直すことができるのでしょうか?
よければ教えていただけないでしょうか?
Re:whileループでノ問題
> どのようにしたら、
> 教授の「whileループで,iが代入されないまま参照されています。」
> を直すことができるのでしょうか?
それを直すだけなら、変数の定義時に初期化子を指定するか、定義直後に何らかの値を代入すれば済みます。
ただし、ここで考えないといけないのは、教授のコメントに対応することが目的なのか、まともに動かすことが目的なのかということです。
> 教授の「whileループで,iが代入されないまま参照されています。」
> を直すことができるのでしょうか?
それを直すだけなら、変数の定義時に初期化子を指定するか、定義直後に何らかの値を代入すれば済みます。
ただし、ここで考えないといけないのは、教授のコメントに対応することが目的なのか、まともに動かすことが目的なのかということです。
Re:whileループでノ問題
たかぎさんありがとうございます。
>それを直すだけなら、変数の定義時に初期化子を指定するか、定義直後に何らかの値を代入すれば済みます。
ということは、
int i = 0;
int k = 0;
としたらいいのですよね?
>ここで考えないといけないのは、教授のコメントに対応することが目的なのか、まともに動かすことが目的なのかということです。
ということですが、
初めのソースをコンパイルして実行すると、正しく動きます。
上の方でたかぎさんは、根本的な問題があるとおっしゃいましたが、
それはどういう意味なのですか?
>それを直すだけなら、変数の定義時に初期化子を指定するか、定義直後に何らかの値を代入すれば済みます。
ということは、
int i = 0;
int k = 0;
としたらいいのですよね?
>ここで考えないといけないのは、教授のコメントに対応することが目的なのか、まともに動かすことが目的なのかということです。
ということですが、
初めのソースをコンパイルして実行すると、正しく動きます。
上の方でたかぎさんは、根本的な問題があるとおっしゃいましたが、
それはどういう意味なのですか?
Re:whileループでノ問題
おはようございます~?!
>どのようにしたら、
>教授の「whileループで,iが代入されないまま参照されています。」
>を直すことができるのでしょうか?
教授のコメント:「whileループで,iが代入されないまま参照されています。」
,i だと参照されないのでは無いのでしょうか?
>Title: whileループでノ問題
の ノ に、何か意味が、あるいは訴えたい事があるのかもしれません。
,i は、代入されてません。
,i を i に変えて、教授に「whileループで、iが代入されないまま参照されています。」
の間違えなのではないでしょうか?
と、質問されては如何でしょうか。
今日は、日曜日なので無理かもしれませんが、次回の通学時に
その教授が見つかれば、お聞きしては如何ですか?
>どのようにしたら、
>教授の「whileループで,iが代入されないまま参照されています。」
>を直すことができるのでしょうか?
教授のコメント:「whileループで,iが代入されないまま参照されています。」
,i だと参照されないのでは無いのでしょうか?
>Title: whileループでノ問題
の ノ に、何か意味が、あるいは訴えたい事があるのかもしれません。
,i は、代入されてません。
,i を i に変えて、教授に「whileループで、iが代入されないまま参照されています。」
の間違えなのではないでしょうか?
と、質問されては如何でしょうか。
今日は、日曜日なので無理かもしれませんが、次回の通学時に
その教授が見つかれば、お聞きしては如何ですか?
Re:whileループでノ問題
ムンバさん
おはようございますw
>Title: whileループでノ問題
の ノ は変換ミスです。
すみません。
教授のコメントは正しくは
「whileループの最初で,iが代入されないまま参照されています.」
こうでした。
間違っていてすみません。
おはようございますw
>Title: whileループでノ問題
の ノ は変換ミスです。
すみません。
教授のコメントは正しくは
「whileループの最初で,iが代入されないまま参照されています.」
こうでした。
間違っていてすみません。
Re:whileループでノ問題
おはようございます~!
カラス鳴いてますしね。^^
教授のコメントの違いが知りたいので、お時間ある時にでも
ご解説お願い致します。
>教授の「whileループで,iが代入されないまま参照されています。」
が、↓
>教授の「whileループの最初で,iが代入されないまま参照されています.」
に変更されてます。
---編集部位・突っ込むつもりは無いんです。---
半角/全角の記号に変換(変更)されてる事が気になっただけです。
おやすみなさい。

カラス鳴いてますしね。^^
教授のコメントの違いが知りたいので、お時間ある時にでも
ご解説お願い致します。
>教授の「whileループで,iが代入されないまま参照されています。」
が、↓
>教授の「whileループの最初で,iが代入されないまま参照されています.」
に変更されてます。
---編集部位・突っ込むつもりは無いんです。---
半角/全角の記号に変換(変更)されてる事が気になっただけです。
おやすみなさい。

Re:whileループでノ問題
ムンバさん
コメントの違いは、教授のコメントを正しく書き直しただけなので
僕にもよくわかりません。
教科書を読んでも描いてなかったので質問なのですが、
初期化子とは、何のことなのですか?
int i = 0;
のようにするのとは違うのですか?
コメントの違いは、教授のコメントを正しく書き直しただけなので
僕にもよくわかりません。
教科書を読んでも描いてなかったので質問なのですが、
初期化子とは、何のことなのですか?
int i = 0;
のようにするのとは違うのですか?
Re:whileループでノ問題
>教科書を読んでも描いてなかったので質問なのですが、
>初期化子とは、何のことなのですか?
i>nt i = 0;
>のようにするのとは違うのですか?
たかぎさん
>たまたま動くことがあるのかもしれませんが、私の手元ではまともに動きません
そうなんですか!?
>変数の定義時に初期化子を指定するか、定義直後に何らかの値を代入すれば済みます。
とのことですが、ネットでも初期化子について調べていたのですが、
初期化子のことがよくわかりません。
教えていただけないでしょうか?
>初期化子とは、何のことなのですか?
i>nt i = 0;
>のようにするのとは違うのですか?
たかぎさん
>たまたま動くことがあるのかもしれませんが、私の手元ではまともに動きません
そうなんですか!?
>変数の定義時に初期化子を指定するか、定義直後に何らかの値を代入すれば済みます。
とのことですが、ネットでも初期化子について調べていたのですが、
初期化子のことがよくわかりません。
教えていただけないでしょうか?
Re:whileループでノ問題
その教授のコメントは見るたびに
. が 。
に
,; が , ;
に、変わってしまう
lotusさんにも解らない、教授のコメントなんですね。
理解できました。再度ありがとうございました。
おやすみなさい。
===================================================
以降、lotusさんの、再度ご質問
>教科書を読んでも描いてなかったので質問なのですが、
>初期化子とは、何のことなのですか?
>int i = 0;
>のようにするのとは違うのですか?
. が 。
に
,; が , ;
に、変わってしまう
lotusさんにも解らない、教授のコメントなんですね。
理解できました。再度ありがとうございました。
おやすみなさい。
===================================================
以降、lotusさんの、再度ご質問
>教科書を読んでも描いてなかったので質問なのですが、
>初期化子とは、何のことなのですか?
>int i = 0;
>のようにするのとは違うのですか?
Re:whileループでノ問題
> ネットでも初期化子について調べていたのですが、 初期化子のことがよくわかりません。
ネットもよいですが、体系立った学習にはまともな書籍を使うことをお勧めします。
ネットもよいですが、体系立った学習にはまともな書籍を使うことをお勧めします。
Re:whileループでノ問題
昨年度の後期に買ったC言語入門という教科書を読んでみたのですが、初期化については書いてあったのですが、初期化子についてはかいてなかったためネットでも調べてみたのですが、初期化子がどのようなものかわからなかった次第です><
Re:whileループでノ問題
> 初期化子についても教えてもらえるとうれしいのですが・・・・・
一応これだけ...
初期化子というのは、オブジェクトを定義する際に、オブジェクトの初期値を指定するためのものです。
int a = 123;
char b[/url] = "abc";
double c[/url] = { 1.0, 2.3, 4.5 };
上記のようなオブジェクトの定義があれば、123、"abc"、{ 1.0, 2.3, 4.5 }がそれぞれ初期化子になります。
一応これだけ...
初期化子というのは、オブジェクトを定義する際に、オブジェクトの初期値を指定するためのものです。
int a = 123;
char b[/url] = "abc";
double c[/url] = { 1.0, 2.3, 4.5 };
上記のようなオブジェクトの定義があれば、123、"abc"、{ 1.0, 2.3, 4.5 }がそれぞれ初期化子になります。
Re:whileループでノ問題
たかぎさん
ありがとうございます
初期化したその値のことを初期化子というんですね。
とりあえず、ここで初期化子を与えたプログラムソースを提出してやりたいと思います。
ながながと超初心はに付き合っていただきありがとうございますm(__)m
ありがとうございます
初期化したその値のことを初期化子というんですね。
とりあえず、ここで初期化子を与えたプログラムソースを提出してやりたいと思います。
ながながと超初心はに付き合っていただきありがとうございますm(__)m
Re:whileループでノ問題
どんな値で初期化しても、正しい結果が出るとは思えないのですが。。。
参考までに、サンプルプログラムを書いてみました。
これを解析すれば正しく動くプログラムが作れるはずです。
入力値が2以上のときした正しくうごかない(エラー処理はしてない)のと、
一部実装依存かなと思うところがありますが(確認はしてない)、それは取り合えず無視ということで。
#include <stdio.h>
#define PRINT(x,y)(printf("%d : %d\n",x,y))
void f(int in,int num,int count)
{
if(in<=1?PRINT(num,count),1:0
+in%num==0?f(in/num,num,count+1),1:0)return;
(count!=0)?PRINT(num,count),count=0:1;
f(in,num+1,count);
}
int main()
{
f(1008,2,0);
return 0;
}
/*********************/
追記
一つ言い忘れてましたが、これをそのまま提出しない方がいいと思います。
参考までに、サンプルプログラムを書いてみました。
これを解析すれば正しく動くプログラムが作れるはずです。
入力値が2以上のときした正しくうごかない(エラー処理はしてない)のと、
一部実装依存かなと思うところがありますが(確認はしてない)、それは取り合えず無視ということで。
#include <stdio.h>
#define PRINT(x,y)(printf("%d : %d\n",x,y))
void f(int in,int num,int count)
{
if(in<=1?PRINT(num,count),1:0
+in%num==0?f(in/num,num,count+1),1:0)return;
(count!=0)?PRINT(num,count),count=0:1;
f(in,num+1,count);
}
int main()
{
f(1008,2,0);
return 0;
}
/*********************/
追記
一つ言い忘れてましたが、これをそのまま提出しない方がいいと思います。
