C/C++の宿題を片付けます 97代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/10/23(火) 23:48:35【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
【前スレ】
C/C++の宿題を片付けます 97代目
http://pc11.2ch.net/test/read.cgi/tech/1191937213/
0153デフォルトの名無しさん
2007/10/25(木) 06:10:11課題にはそのとおり書いてあったんですが・・。
自分には問題の�@〜�Bの意味がさっぱりで・・・。
>>83
それが答えってことになるのですか?
0154デフォルトの名無しさん
2007/10/25(木) 06:30:230155デフォルトの名無しさん
2007/10/25(木) 07:17:130156デフォルトの名無しさん
2007/10/25(木) 09:26:14[2] 問題文(含コード&リンク):このC言語で作られたプログラムをC++に変えて下さい
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5146.txt
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: すいません、よくわかりません。
講義では「Microsoft Visual Studio .NET 2003」を使用しています
[3.3] 言語: CからC++へ
[4] 期限: 明日が終わるまで
[5] その他の制限: 特になし
明日までと急なことで申し訳ありませんがお願いします。
0157デフォルトの名無しさん
2007/10/25(木) 09:59:01本当にそんな問題が……?
0158デフォルトの名無しさん
2007/10/25(木) 10:04:20すでにC++ですっていって提出しちゃえば?
問題が曖昧すぎ
0159デフォルトの名無しさん
2007/10/25(木) 10:18:09問題文は文章でなく口頭で出題されました。全くこの通りです。
すでにC++になっているんでしょうか?
0160156 ◆B5khfT.h4o
2007/10/25(木) 10:19:390161デフォルトの名無しさん
2007/10/25(木) 10:56:23拡張子cppでコンパイルしてみな
0162デフォルトの名無しさん
2007/10/25(木) 11:03:08get()で返すとか、そういう風にすればどう?
あとprintfをcoutに無理矢理直すとそれらしく見える。別にprintfでも
C++の範囲内なのだが。
0163デフォルトの名無しさん
2007/10/25(木) 11:31:04無理矢理C++にしてみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5147.txt
0164デフォルトの名無しさん
2007/10/25(木) 13:40:38一つ目の製品はちゃんと発注するんですけど、二つ目以降は発注が行われないんですけど
どうすればいいんですか?
0165147
2007/10/25(木) 14:00:28// 製品情報初期化
int ADD_NUM = (rand()%81)+FIRST_NUM;
int ADD_NUM_LOWER = (rand()%31)+50;
int ADD_DAYS = (rand()%5)+1;
の部分に
// 製品情報初期化
int ADD_NUM = (rand()%81)+FIRST_NUM;
int ADD_NUM_LOWER = (rand()%31)+50;
int ADD_DAYS = (rand()%5)+1;
inc_day = 0;
を書き足せばよかったみたい。
ということでソースは下記に。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5148.txt
>>152も参考に。
0166デフォルトの名無しさん
2007/10/25(木) 14:06:31できました。本当にありがとうございました。
016765です
2007/10/25(木) 14:48:32変数を州ごとに集計して平均を出す部分がよくわかりません。
>67
ファンクションについてはまだ授業で習っていないので、先生に避けたほうがいいと言われました。
でも、Voidとか変数のReferenceとか基本的なことは本で読んだので、使ってくださってもけっこうです。
提出するコードは、ファンクションを使わないように書き換えます。
>70
はい。州の略はその通りで大丈夫です。
0168デフォルトの名無しさん
2007/10/25(木) 15:30:40ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5149.txt
っていう課題が新たに出されたので、やっていただけませんか?
以前のプログラムがとても見やすかったので、よろしくお願いします。
0169デフォルトの名無しさん
2007/10/25(木) 16:52:28ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5150.txt
・しっかりとgetlineを使っている。
・line.substr(13, 2)とline.substr(23, 4)を使って読み込んでいるので、gasprices.txtの配置がずれたら限りなくアウト。
0170デフォルトの名無しさん
2007/10/25(木) 16:54:31まだ、待っています。出来る方お願いします。
アドバイスはいくつか貰ったのですが、関数から関数への受け渡しがうまく行きません。
0171169
2007/10/25(木) 17:00:34・1行目にある #include <algorithm> は削除。
・出力は一応CSV のはず。
・アメリカの略号に誤入力があるかもしれない。
・アメリカの州って50だったっけ?
0172コンパイルは出来たがあってないぞ
2007/10/25(木) 17:06:21#include<string.h>
void d_word(char st[], int pos, int len){
int l=strlen(st);
int i;
for(i=pos; i<=l-len; i++) {
st[i] = st[i+len]; }}
void search_del(char st1[], char st2[]){
int i, j;
int m1=strlen(st1);
int m2=strlen(st2);
for(i=0; i<=m1-m2; i++) {
for(j=0; j<m2; j++) {
if(st1[i+j] != st2[j])
break; }
if(j=m2) {
d_word(st1, i, m2);
m1 -= m2;
}}}
int main(){
char str1[256], str2[256];
printf("string? : ");
gets(str1);
printf("deleted word? : ");
gets(str2);
search_del(str1, str2);
puts(str1);
return 0;}
0173デフォルトの名無しさん
2007/10/25(木) 17:22:18問題【0からa-1までの整数の乱数をn個発生させ、発生した整数のヒストグラムを表示しなさい。
ただし。a<21とし、aとnはキーボードから入力する】
______________________________________________とりあえずいままで作成したコードです__________________________________
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
main(void)
{
int n,a,b,i,val;
int c[21];
printf("0からa-1までの整数の乱数をn個発生させ、\n");
printf("発生した整数のヒストグラムを表示させます\n");
printf("1から21までの任意の整数aを入力してください。\n");
scanf("%d",&a);
printf("任意の正の整数nを入力してください。\n");
scanf("%d",&n);
if(a<=0||a>=22)
{printf("aの値を入力しなおしてください。\n");}
else{
val=(double)rand()/(RAND_MAX+1)*a;
if(n<=0) {printf("nの値を入力しなおしてください。\n");}
else { for (i=0; i<=(a-1); i++)
{printf("aが%dのとき、%d回\n",i,c[val]);
c[val]=c[val]+1;}
}
}
}___________________________________________________________________________________________________________________________
0174173
2007/10/25(木) 17:24:12〜は〜回という形式にします
volとかそのへんの扱いかたがよく分からずに参っております
よろしくお願いいたします。
0175156 ◆B5khfT.h4o
2007/10/25(木) 17:26:49とりあえず課題を出したうえで、C++にするのはどういうことか詳しく聞いてみます。
017665です
2007/10/25(木) 17:31:19丁寧にありがとうございます。
はい、アメリカの州は50です。
ところで、私は途中まで以下のようにコードを組み立てたのですが、以下のようなやり方でも、プログラムを完成させることはできますか?
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main (int argc, char **argv)
{
char peek;
ifstream myFile;
string cityName,
stateName;
float gasPrice;
myFile.open("gasprice_file.txt");
while((peek = myFile.peek () ) ! = EOF) {
myFile >> cityName;
myFile >> stateName;
myFile >> gasPrice;
If(! myFile) {
myFile.clear();
cityName = cityName + " " + stateName;
myFile >> sateName;
myFile >> gasPrice;
{
myFile.close();
return 0;
}
0177デフォルトの名無しさん
2007/10/25(木) 17:53:30#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main(void)
{
int n=-1,a=0,b,i,val,c[21];
for(i=0;i<21;i++) c[i]=0;
srand((unsigned int)time(NULL));// 乱数の初期化
printf("0からa-1までの整数の乱数をn個発生させ\n");
printf("発生した整数のヒストグラムを表示します。\n");
printf("1から21までの任意の整数aを入力してください。\n");
while(!(a>0&&a<22)){
scanf("%d",&a);
if(a<1||a>21)
printf("aの値を入力しなおしてください。\n");
}
printf("任意の正の整数nを入力してください。\n");
while(n<0){
scanf("%d",&n);
if(n<0)
printf("nの値を入力しなおしてください。\n");
}
for(i=0;i<n;i++){
val=(double)rand()/(RAND_MAX+1)*a;
c[val]++;
}
for (i=0; i<=(a-1); i++)
printf("%d = %d回\n",i,c[i]);
}
表示はヒストグラムでなくてもいいのかな。
0178デフォルトの名無しさん
2007/10/25(木) 17:58:47アドバイスって言うか>>20で回答もらってるじゃない。
・if(j=m2)をif(j==m2)
・printf("%d\n", st1);をprintf("%s\n", st1);
この2点の変更だけで動くはず。変更の仕方が間違ってるんだと思う。
0179デフォルトの名無しさん
2007/10/25(木) 18:06:46whileの条件とループの中のifで2回判定するのはムダ
0180デフォルトの名無しさん
2007/10/25(木) 18:22:58while(scanf("%d",&a),!(a>0&&a<22))
printf("aの値を入力しなおしてください。\n");
printf("任意の正の整数nを入力してください。\n");
while(scanf("%d",&n),n<0)
printf("nの値を入力しなおしてください。\n");
>>179の指摘したムダを省くと多分こうなると思います。
0181デフォルトの名無しさん
2007/10/25(木) 18:26:06while(scanf("%d",&a),!(a>0&&a<22)){
printf("aの値を入力しなおしてください。\n");
fflush(stdin);
}
printf("任意の正の整数nを入力してください。\n");
while(scanf("%d",&n),n<0){
printf("nの値を入力しなおしてください。\n");
fflush(stdin);
}
こうでした。
0182デフォルトの名無しさん
2007/10/25(木) 18:34:53この様にコード書いたけどコンパイラが通らないです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5151.txt
0183デフォルトの名無しさん
2007/10/25(木) 18:38:11見ずにコメント。1.改行コード 2.全角スペース
そろそろコンパイラが吐いたエラー貼ったらどうだ?
0184デフォルトの名無しさん
2007/10/25(木) 18:42:43#include<string.h>を追加。もしかしてstr〜の関数習ってない?
0185デフォルトの名無しさん
2007/10/25(木) 18:45:55ありがとうございます
実行してみたところ、
0以外の数字が何度やっても0回になってしまいますが
これはどうすればよろしいのでしょうか?
0186デフォルトの名無しさん
2007/10/25(木) 18:50:01エラーが無いので下に張りました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5152.txt
>>184
追加しても効果なかったです。関数str〜習ってます。
0187デフォルトの名無しさん
2007/10/25(木) 18:52:46「エラーが無いので」×
「エラーが長いので」○
0188デフォルトの名無しさん
2007/10/25(木) 18:54:50[2] 問題文:ファイルの内容を読み込んで、下記の例のように読み込んだ内容を
ディスプレイに表示させよ。
ファイルの内容
誕生年:2000
誕生月:1
誕生日:2
身長:120.0
体重:21.0
名字:Kouno
名前:Hiro
実行例
氏名 Kouno Hiroです。
生年月日は2000年1月2日です
身長120,0cm 体重21,0kgです
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年10月26日
[5] その他の制限: ライブラリ関数は使っても大丈夫です。
読み込むことはできたのですが、fgetsを使うと「誕生年:2000」と読み込んで
しまって2000だけ表示させることができません。
よろしくお願いします。
0189デフォルトの名無しさん
2007/10/25(木) 18:57:41valにちゃんと値が入ってないのかな。
val=(double)rand()/(RAND_MAX+1)*a;
を
val=rand()%a;
に変えてみてください。
>>186
インデントを全角スペースでやってない?
0190デフォルトの名無しさん
2007/10/25(木) 19:04:06盲点、スペースを全角でやっていました。
スペースを全て消したらコンパイルが通って、ちょんと動きました。
全角スペースでエラー返されるんですね、勉強になりました。
次からはスペースの全角/半角に気をつけます。
0191デフォルトの名無しさん
2007/10/25(木) 19:09:39ありがとうございます!ちゃんとできました
助かりました
0192デフォルトの名無しさん
2007/10/25(木) 19:57:16http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5153.txt
0194デフォルトの名無しさん
2007/10/25(木) 20:39:32[2] 問題文(含コード&リンク):
http://case.f7.ems.okayama-u.ac.jp/statedu/lispstat-book/node85.html
にならって以下のデータ平均分散を用いて確率を出せ。10次元です。
データ
-18.858 1.046 -1.616 4.023 1.857 4.207 6.451 0.989
-3.807 0.744
平均
-6.388222e+00 -1.383500e+01 -1.249702e+01 -3.617623e+00 2.185494e-01
3.840833e+00 6.477101e+00 -1.552781e+01 4.537848e+00 -2.995257e+00
分散
1.504899e+01 2.376009e+01 2.176429e+01 2.650845e+01 2.850247e+01
5.442906e+01 3.594814e+01 7.991224e+01 2.946554e+01 3.397208e+01
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年10月26日まで
[5] その他の制限: なし
019578&153
2007/10/25(木) 20:56:27実装仕様もあって、書いてたことが違ってました。
以下が訂正問題です。
[1] 授業単元:文字列操作プログラム
[2] 問題文(含コード&リンク):
配列とポインタを使用し、文字列操作を行うプログラムを作成せよ。
�@独自のstrlen関数mystrlen関数を自作する。
文字列のポインタを受け取り、文字列の長さを返す関数を作成する。
�A独自のstrcpy関数mystrcpy関数を自作する。
文字列のポインタ2つを受け取り、文字列のコピーを行う関数を作成する。
�B独自のatoi関数myatoi関数を自作する。
数値文字列のポインタを受け取り、数値を返す関数を作成する。
�C独自のitoa関数myitoa関数を自作する。
数値を受け取り、指定された基数で文字列変換を行う関数を作成する。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:不明
[3.3] 言語:C言語
[4] 期限:2007年10月26日朝5:00まで
>>196に続く
019678&153
2007/10/25(木) 20:56:58[5] その他の制限:実装仕様として、
�@int mystrlen(const char*s)
第一引数:文字列のポインタ
戻り値:文字列の長さを返す
�Achar*mystrcpy(char*s1,const char*s2);
第一引数:コピー先バッファのポインタ
第二引数:コピー元文字列のポインタ
戻り値:第一引数の文字列へのポインタを返す
�Bint myatoi(const char*nptr);
第一引数:変換元の数値文字列
戻り値:変換された値を返す
�Cchar*myioa(int value,char*buff,int radix);
第一引数:変換元の整数
第二引数:変換後の数値文字列を格納するバッファのアドレス
第三引数:基数(何進数で変換するか。2〜36の範囲内で指定可能)
戻り値:第二引数の文字列へのポインタを返す
と、なっております。
すいませんが回答の方をよろしくお願いします
0198デフォルトの名無しさん
2007/10/25(木) 21:28:40いまさら?これから変更するの面倒だし
期限:2007年10月26日朝5:00
ってことは残り7時間、無理。
がんばれノシ
0199デフォルトの名無しさん
2007/10/25(木) 21:31:160200デフォルトの名無しさん
2007/10/25(木) 21:31:22ありがとうございます!
感謝します!
0201デフォルトの名無しさん
2007/10/25(木) 21:36:03[1] 授業単元:C++プログラミング
[2] 問題文(含コード&リンク):
次のクラス定義を参照して、関数 func 内の処理を記述してください。
関数 func 内では p が派生クラス MagazineMotorcycle のインスタンスを指すかどうかを調べて、
もしそうならメンバー関数 Reserve を呼び出してください。そうでなければ false を返してください。
class Magazine
{
public:
virtual bool Order(int amount = 1) = 0;
};
class MagazineMotorcycle : public Magazine
{
public:
bool Order(int amount = 1) {}
bool Reserve() {}
};
bool func(Magazine* p)
{
// 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理
}
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C++
[4] 期限: 10/26 12:00
[5] その他の制限:なし
020278&153
2007/10/25(木) 21:45:03昨日書き込んで、今日間違い気づいたんですよorz
できればお願いします。自分にとっては、これってホントに初級編!?って
いうぐらい難しい
0203デフォルトの名無しさん
2007/10/25(木) 21:46:42bool func(Magazine* p)
{
// 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理
if (MagazineMotorcycle* mm = dynamic_cast<MagazineMotorcycle*>(p))
mm->Reserve();
return false;
}
これでおk?
0204デフォルトの名無しさん
2007/10/25(木) 22:03:47[2] 問題文(含コード&リンク):stack.cpp 中のpushとpop関数を完成せよ。
stack.cpp:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5154.txt
[3] 環境
[3.1] OS:win xp
[3.2] Microsoft Visual Studio .NET 2003
[3.3] 言語:c++
[4] 期限:2007年10月26日9:30まで
[5] その他の制限:(どこまで習っているか)構造体、ファイル処理まで
どうかよろしくお願いします。
0205デフォルトの名無しさん
2007/10/25(木) 22:10:08ありがとうございます。
こちらを提出してみます。
0206デフォルトの名無しさん
2007/10/25(木) 22:12:28bool func(Magazine* p)
{
// 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理
if (MagazineMotorcycle* mm = dynamic_cast<MagazineMotorcycle*>(p))
return mm->Reserve();
return false;
}
こんどこそおk?
0207デフォルトの名無しさん
2007/10/25(木) 22:26:15// データvalをスタック x に積む
void push(int *x,int val)
{
// (1) スタックがオーバフローかどうかをチェック
if (stack_pointer < stack_size) {
// (2) オーバフローでなければデータ val をスタック x につむ
x[stack_pointer++] = val;
}
}
// データをスタック x からおろす
void pop(int *x)
{
// (1) スタックがアンダーフローかどうかをチェック
if (stack_pointer > 0) {
// (2) アンダーフローでなければスタックxからデータをおろして、
// スタックポインターを調整
stack_pointer--;
}
}
これでおk?
0208デフォルトの名無しさん
2007/10/25(木) 22:41:25本当にありがとうございます。
助かりました。
020957
2007/10/25(木) 22:54:44レスありがとうございます。
今日の朝、main関数を作って動かしてみたのですが、
おかしいです。
例えば、連結リストのaの値を10、11、12とすると、
11、10、56787
と、一番最後が変な数値になってしまいます。
並び替える前に表示すると、10、11、12となってちゃんと動作するので、
表示する関数は間違ってないと思います。
一応補足として、自分が扱っている連結リストは一番最初に、aに値が
含まれていない要素があり、その後からaに値が含まれる要素が並びます。
0210デフォルトの名無しさん
2007/10/25(木) 23:10:52#include<stdio.h>
int mystrlen(const char *s)
{
int len=0;
while(*s++!='\0') len++;
return len;
}
int myatoi(const char *nptr)
{
int i,n=0,sign=0,len=0;
const char *s=nptr;
while(*s++!='\0') len++;
if(*nptr=='-'){
sign++; len--; *nptr++;
}
for(i=0;i<len;i++)
n=10*n+*nptr++-'0';
return sign ? -n : n;
}
mystrcpy,myitoaは>>83のままで仕様満たしてるのでそれ以外を。
0211デフォルトの名無しさん
2007/10/25(木) 23:11:09ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5149.txt
っていう課題が新たに出されたので、やっていただけませんか?
以前のプログラムがとても見やすかったので、よろしくお願いします。
0212デフォルトの名無しさん
2007/10/25(木) 23:19:380214デフォルトの名無しさん
2007/10/25(木) 23:21:23糞リストの仕様を書かなかったほうが悪い。
0215デフォルトの名無しさん
2007/10/25(木) 23:22:42[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
1:int型整数をchar型配列の文字列に変換するitoa関数を作れ
2:long型整数をchar型配列の文字列に変換するltoa関数を作れ
3:float型小数をchar型配列の文字列に変換するftoa関数を作れ
[3] 環境
[3.1] OS: XP sp2
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語: C
[4] 期限: 明日26日(金)の16時まで
0216デフォルトの名無しさん
2007/10/25(木) 23:33:351.
char* itoa(int n){static char c[16];sprintf(c,"%d",n);return c;}
2.
char* ltoa(long n){static char c[16];sprintf(c,"%ld",n);return c;}
3.
char* ftoa(float n){static char c[16];sprintf(c,"%f",n);return c;}
0217デフォルトの名無しさん
2007/10/25(木) 23:34:03itoaは >>83 にあるよ。ltoaはitoaとほとんど変わらん。
ftoaも小数点以下あるだけであんま変わらないな。
021857
2007/10/25(木) 23:37:20申し訳ないです。
リストの仕様は以下の様になります。
・リストは連結リストで片方向リストです。
・次の要素がない場合(リストの一番最後)は、次の要素へのポインタをNULLとします。
・リストの一番最初には、aに値が含まれていない要素があります。
よろしくお願いします。
0219デフォルトの名無しさん
2007/10/25(木) 23:42:130220デフォルトの名無しさん
2007/10/25(木) 23:45:52static struct c *re_internal(struct c *l)
{
struct c *p;
if(l->n==NULL) return l;
p = re(l->n);
l->n->n = l;
l->n = NULL;
return p;
}
struct c *re(struct c *l)
{
if(l->n) l->n = re_internal(l->n);
return l;
}
0221デフォルトの名無しさん
2007/10/25(木) 23:49:080222215
2007/10/26(金) 00:03:01さすがにsprintfは使うわけにはいかないかと・・・w
>>217
ありがとうございます。
>>83を参考にしてやってみようと思います。
022357
2007/10/26(金) 00:03:47減点はするけど、出さないよりは、ましだから今週の課題と一緒に来週に
出しなさいと言われました。
>>220
ありがとうございます。
リストの仕様は>>218に書いた通りですが、
問題自体は>>57に書いた通り、再帰を使わないと…
0224デフォルトの名無しさん
2007/10/26(金) 00:08:57re_internalの中でre呼び出してる
022557
2007/10/26(金) 00:23:54再帰って自分自身の関数を呼び出すんじゃないですっけ?
これだと、他の関数を呼び出してるだけな気がするのですが…
一つの関数で作ることって出来ないのですかね?
0226デフォルトの名無しさん
2007/10/26(金) 00:24:24static struct c *re_internal(struct c *l)
{
struct c *p;
if(l->n==NULL) return l;
p = re_internal(l->n); // <- この行
l->n->n = l;
l->n = NULL;
return p;
}
struct c *re(struct c *l)
{
if(l->n) l->n = re_internal(l->n);
return l;
}
>>224 thx
0228デフォルトの名無しさん
2007/10/26(金) 00:58:090229168
2007/10/26(金) 00:58:4528日までにお願いしたいんですけど・・・
よろしくお願いします。
0230デフォルトの名無しさん
2007/10/26(金) 07:29:15[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5156.txt
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 2007年10月26日
[5] その他の制限: ライブラリ関数は使ってもおkです
徹夜で考えたんですが分からなかったのでお願いします
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5155.txtのよに書いたのですが
セグメントエラーが出てしまいます。
ダメなところとかがあったら直して教えてください。
0231デフォルトの名無しさん
2007/10/26(金) 07:51:19比較用演算子 == を使うこと.
if(fop=NULL)
if(fout=NULL)
あと、終盤で下記不要
> heikin=goukei/NUM;
> fprintf(fout,"番号\t平均点との差\n");
> for(i=0;i<NUM;i++)
> {
> fscanf(fop,"%d%d",&gakusei[i].bangou,&gakusei[i].seiseki);
> goukei=+gakusei[i].seiseki;
> }
最後は goukeiもNUMも整数なのでgoukei/NUMは整数となるのを防ぐ
heikin=(double)goukei/NUM;
0232デフォルトの名無しさん
2007/10/26(金) 08:09:1914〜21行目: 使わない変数 (fairu, cp, sirusi1, sirusi2) の宣言は外しましょう
21行目: heikin は int 型でいいんじゃない?
double 型で行きたい場合、int型変数 (seiseki, goukei等) との計算をするときにキャストとか考えた方が良い
24,26行目: scanf("%s", &open); → scanf("%s", open);
ポインタを習っているかは知りませんが、配列名は単独で使用するとポインタ型になります
30,42行目: if (fop=NULL) → if (fop == NULL)
C言語での比較演算子は == です
56行目: goukei=+gakusei[i].seiseki; → goukei += gakusei[i].seiseki;
演算子を見直しましょう
63〜70行目: 平均2回計算してるから消そう
74行目: "%d\t%dn" → "%d\t%d\n"
改行文字は "\n" で表します
0233デフォルトの名無しさん
2007/10/26(金) 08:16:51>>231さん
朝早くだったのにレスありがとうございます。
おかげ様でセグメントエラーも出ないで実行できました
来週中間試験があるので
もっと勉強しなきゃいけないなと思いました。
ホントにお世話様でした
0234デフォルトの名無しさん
2007/10/26(金) 08:46:170235課題お願いします
2007/10/26(金) 09:05:21[2] 問題文:n個からr個を選ぶ組み合わせは、nCr = n!/r!(n-r)! ただし、n! = 1*2*3*…*(n-1)*nで求められる。そこで、n!を求める関数functorial(n)を定義し、それを3度呼び出す形で、組み合わせnCrをもおめるプログラムを作成せよ。
[3] 環境
[3.1] OS: (WindowsXP)
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語: C
[4] 期限: 今日の昼までに。
[5] その他の制限: 授業で配列とポインタは習いました。この問題は「関数」というセクションの問題です。大学の授業なのであまり難しくなり過ぎないようにお願いします。
0236235
2007/10/26(金) 09:07:30[2] 問題文:n個からr個を選ぶ組み合わせは、nCr = n!/r!(n-r)! ただし、n! = 1*2*3*…*(n-1)*nで求められる。そこで、n!を求める関数functorial(n)を定義し、それを3度呼び出す形で、組み合わせnCr を求めるプログラムを作成せよ。
0237デフォルトの名無しさん
2007/10/26(金) 09:09:55{
return n<2 ? 1 : n * function(n-1);
}
int nCr(int n, int r)
{
return function(n) / function(r) / function(n-r);
}
0238デフォルトの名無しさん
2007/10/26(金) 09:11:280239デフォルトの名無しさん
2007/10/26(金) 09:20:03中間試験は筆記と実技があって
実技は端末からサーバーにアクセスして書きます。
実技は今のままじゃ、受かる気がしません…
ファイル処理、ポインタがかなりヤバイです
0240デフォルトの名無しさん
2007/10/26(金) 09:23:34階乗ならfactorialだし、関数ならfunctionだからfuncだけみて間違っちまった。
0241デフォルトの名無しさん
2007/10/26(金) 10:59:15[2] 問題文:3人の昼食代を入力し、その平均を関数aveにて計算し、
「割り勘で△円」と表示するプログラム
(定義例:double ave(double c1,double c2,double c3))
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: ([2007年10月26日まで] できれば早いほうがうれしいです。
[5] その他の制限:定義例を使ってください
if,while,switch,forは習いました
お願いします
0242デフォルトの名無しさん
2007/10/26(金) 11:01:220243デフォルトの名無しさん
2007/10/26(金) 11:05:00別人だけど、フロッピーでソース提出とか、メールで添付とかもあるけど、一番多いのは紙。
正直、このご時勢で紙でやるのは馬鹿だと思う。
0244デフォルトの名無しさん
2007/10/26(金) 11:14:18小数点出てもいいらしいです。要はaveを使って計算したいのだと思います。
0245デフォルトの名無しさん
2007/10/26(金) 11:18:400246デフォルトの名無しさん
2007/10/26(金) 11:19:06国がやってる情報処理系の資格試験は、全部紙だぞ?
0247デフォルトの名無しさん
2007/10/26(金) 11:24:49[1] 授業単元: C言語演習�U
[2] 問題文(含コード&リンク):
前回の授業で"姓/名"という形式の文字列を入力すると、これを姓と名を表す2つの文字列に分割するプログラムを作成した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5158.txt
このプログラムを関数を用いた形に書き換えようと思い、次のプログラムを作成した。
このプログラムを実行すると、おかしな出力になってしまった。
問題1:このプログラムのどこが間違っているのか、その理由を答えよ。
(ヒント:pt_s,pt_mはローカル変数)
問題2:プログラムを書き直せ。
(配列を渡す方法、ポインタのアドレスを渡す方法などある)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C言語
[4] 期限:29日(月)
0248デフォルトの名無しさん
2007/10/26(金) 11:34:38うちも紙〜
さすがにプログラムを卓上で作りコード全部書けは無いけど、
5〜6行くらいの穴埋めでプログラムを完成させよとか。
0249デフォルトの名無しさん
2007/10/26(金) 11:59:09あったら死ねるけどw
普段書かない記号とか書かなきゃならんし、
インデント一つ追加しようと思ったらその間書き直しだし、
書いてる事がタイプ以上に考えてる事に追いつかないし、
変数名チェックも全部自分でしなけりゃならんから面倒だし。
0250デフォルトの名無しさん
2007/10/26(金) 12:01:52うちは進んでるよ。
テストプログラムを当日教室で下してきて実行すると、P検みたいなプログラムが走って画面左半分が問題書いてあって、右半分の上がコマンドプロンプト?で下がテキストパッドになってる。
問題にある仕様のプログラムをテキストパッドで作って、「実行」ボタンがその下にあるから押すとコマンドプロンプトで自動的にコンパイル+実行してくれる。
作ってる途中のものを試しでコンパイルする度、実行はうざかった。
問題全部作ったら問題1番最後の回答終了を押すと自動で結果をサーバーに送信して、プログラム終了。
ファイヤーウォールに引っ掛かって提出できないとか、提出時に回線が込んでて提出できないとかで、良悪あるけどね。
0251デフォルトの名無しさん
2007/10/26(金) 13:04:09なんだかすごい環境だな。
0252デフォルトの名無しさん
2007/10/26(金) 13:09:33高専電気科の情報の授業では
ごく普通にPCでやってるぞ
しかも、授業で書いたコードを参照してもいいというオマケ付きで。
授業理解度を確かめるのならこういう方式でもよさげな気がする。
■ このスレッドは過去ログ倉庫に格納されています