08/04/24 22:15:19
>>430
回答ありがとうございました,しかし実行したら
1年目のつがい数は1
2年目のつがい数は1で、前年の1.000000倍、
3年目のつがい数は2で、前年の2.000000倍、
4年目のつがい数は4で、前年の2.000000倍、
5年目のつがい数は8で、前年の2.000000倍、
6年目のつがい数は16で、前年の2.000000倍、
7年目のつがい数は32で、前年の2.000000倍、
8年目のつがい数は64で、前年の2.000000倍、
9年目のつがい数は128で、前年の2.000000倍、
10年目のつがい数は256で、前年の2.000000倍、
かな?
と表示されました,10年目のつがいの数は55になるはずなので
ちょっと違っているみたいです.つがいの数はフィボナッチ数になる
らしく
1,1,2,3,5,8,13・・・と続くみたいなんです,すみません.
433:425
08/04/24 22:16:02
プログラム機能仕様に、
「一覧ファイル(infile.csv)を開き、char型配のDATAに学籍番号を読み込む。」とありました。
説明不足で申し訳ないです。
434:425
08/04/24 22:18:30
>>426
アンカーつけ忘れました。すいません
435:デフォルトの名無しさん
08/04/24 22:24:13
>>432
そっか、各世代がまた産むからと思って、足しすぎた。
num_of_pairs(year - 2)が生まれる全数だね。
int num_of_pairs(int year)
{
if(year < 1)
return 0;
else if(year == 1)
return 1;
else
return num_of_pairs(year - 2) + num_of_pairs(year - 1);
}
436:デフォルトの名無しさん
08/04/24 22:26:45
>>435
これで何とか間に合いそうです.完璧な回答ありがとうございました!
437:426
08/04/24 22:32:59
>>434
今ひとつ、はっきりしません。
問題を全部さらしていただくとありがたいのですが。
438:デフォルトの名無しさん
08/04/24 22:36:17
[1] 授業単元:Cプログラミング言語
[2] 問題文(含コード&リンク):
①URLリンク(kansai2channeler.hp.infoseek.co.jp)
②URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン:CPad for Borland
[3.3] 言語: (C)
[4] 期限:明日まで
[5] その他の制限:txt参照
連投ですいません。前回質問させていただいたのですが、また質問させてもらいます。
①で有効範囲外に数字以外が入ると、エラーを起こしてしまい
数字以外を無視するということができなかったのですが、どうすればいいでしょうか?
@プログラムとして見づらいとこのことで、少し修正もできればよろしくお願いします。
そして②の方なのですが、nを使用してとのことで>>144さんのやり方をしたのですが、
どうもa自体を使うなとのことだったので、少しいじってみたのですが、
警告 W8008 wa_prc19.c 30: 条件が常に真(関数 main )
警告 W8008 wa_prc19.c 30: 条件が常に真(関数 main )
警告 W8066 wa_prc19.c 31: 実行されないコード(関数 main )
と出てしまい、書き方が悪かったせいで、反転作業が常に0に;
そして、先ほどの①とは逆に、
例)255asdと書くとそのまま255で処理してしまい、不正入力として扱わない。
256はエラーだが、2550は255の処理をする。
といった感じになってしまってます。
今日中で申し訳ないのですが、よろしければよろしくお願いします。
439:デフォルトの名無しさん
08/04/24 23:13:22
>>438
① URLリンク(kansai2channeler.hp.infoseek.co.jp)
440:デフォルトの名無しさん
08/04/24 23:20:36
>>425
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
とりあえず、「char 型配列 である DATA に順に格納する」ことにして作成しました。
プログラムの最後で、char DATA[] の中身を画面に出力させています。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
441:425
08/04/24 23:27:06
>>437
えっと、作業をチームで分担していて自分は学籍番号検索処理を任されています。
全体的なプログラム内容は、一覧ファイル(infile.csv)に生徒の情報(グループ名、学籍番号、名前など)を登録していくことです。
その際、学籍番号は入力必須で、検索機能を使うことで重複していないか確認するというものです。
現在、手元にプログラム設計書のプログラム機能仕様書しかないのでとりあえずこれを書き出します。(機能仕様書は講師の方に一応okをもらいました)
概要:学籍番号欄に入力されたデータ(char型配列)が学生の一覧ファイルに入っているかの判定処理。
関数名:int GKS(char *value) //学籍番号のみをMAIN関数から受け取って使う。
戻り値:int error_no //初期値0のエラー判定フラグ
引数:*value //ブラウザから学籍番号欄に入力されたchar型配列データ。
詳細:①MAIN関数からvalueを受け取る。
②一覧ファイル(infile.csv)を開き、char型配列のDATAに読み込む。
②-1 temp.csvを開く。
③infile.csvの学籍番号とvalueを比較する。
③-1 valueと一致するデータがある場合、該当する全データ(グループ名、学籍番号、名前等)をtemp.csvに書き込む。
③-2 valueと一致するデータがない場合、int型error_noに”1”を格納する。
④一覧ファイル、temp.csvを閉じる。
⑤MAIN関数に、error_noを渡す。
プログラミング初心者で説明できることもこのくらいしかなく申し訳ないです。
分からなければそれはそれで結構ですので分かった場合のみ解答お願いします。
今日中と書きましたが2時頃まで待ちます。もしくは明日の朝に確認します。
442:デフォルトの名無しさん
08/04/24 23:28:10
>>439
横から口出してもうしわけないけど
欲を言えばinputIntの戻り値はenumにするともっとまとまると思うよ。
キレイなコードごちそうさまでした。
443:デフォルトの名無しさん
08/04/24 23:33:31
ケツから押し込むようで申し込みたいんだけど
欲を言えばisdigitでも使っておk
444:デフォルトの名無しさん
08/04/24 23:34:42
>>438
んー、これの一部は、私が書いたものですね。
①では、cnt が 0~7 の間のときに数字以外のものが入力されたら err = 1 とすればいいのではないでしょうか。
②では cnt は使わなくてもいいと思います。
またまた同じことを言うのはもうしわけありませんが、
同じような処理(二進数を表示する)は、サブの関数にするのがわかりやすいと思うのですが、いかが?
「n を左にシフトさせる -> 表示する -> また右にシフトして元に戻す。」
とするくらいならば、
「n を左にシフトさせた結果をサブの関数に渡す。サブの関数は渡された値を表示する。」と考えるのです。
メインでは n の値自身は変化しないので、「元に戻すためにシフトする」必要がなくなると思います。
全ビットを反転させる演算子は ^ ではなくて ~ です。
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
① URLリンク(kansai2channeler.hp.infoseek.co.jp)
② URLリンク(kansai2channeler.hp.infoseek.co.jp)
445:439
08/04/24 23:37:31
>>438
②
問題点を挙げるので、それぞれ理解してください。
・入力処理でunsigned charに入れると、256以上が入らないので、エラーチェックができない。
・不正文字のチェックがif(cnt<3)の中に入っているので、4文字目以降をチェックしていない。
・unsigned charの上限は255なので、if(n>255)の条件は絶対に成立しない。(警告の原因)
・nを直接左シフトすると、右シフトしても左端のビットは戻ってこない(必ずビットは0)。
・n^=n は、n=n^nと等価。n^nは必ず0になる。^は排他的論理和。
・printfの引数にnは3つもいらない(実害無し)
ということで、はいデバッグ済みのソース
URLリンク(kansai2channeler.hp.infoseek.co.jp)
>>442
それは思ったが、当人のレベルを考えて控えた・・・。
446:425
08/04/24 23:37:32
>>440
ありがとうございます!明日これでやってみます。
説明不足でほんとすいませんでした。
447:デフォルトの名無しさん
08/04/25 00:00:56
>>441
では、GKS() 自体については私はくわからないので、すみませんが考えていただくことにして、
「GKS() を動作させる準備として、配列 DATA[][] に infile.csv の学籍番号データを読み込んでおく」プログラムを up します。
DATA は、DATA[i][1024]にして、
一人目の学籍番号は DATA[1][0]~DATA[1][学籍番号の桁数 - 1] に記録、
二人目の学籍番号は DATA[2][0]~DATA[2][学籍番号の桁数 - 1] に記録、
...
i 人目の学籍番号は DATA[i][0]~DATA[i][学籍番号の桁数 - 1] に記録,
としました。
確認した環境は WindowsXP, 処理系は cygwin(3.4.4) です。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
448:TT
08/04/25 01:46:08
「Continue文」を使った宿題が出ました
内容が「60点以上を合格とし、合格者の平均点を出力する」です
誰かソースを教えて下さいm(_ _)m
449:デフォルトの名無しさん
08/04/25 01:49:20
>>1を読んで書き直し
450:デフォルトの名無しさん
08/04/25 02:07:32
>>436
内部はやっぱり頭悪いなw
451:デフォルトの名無しさん
08/04/25 05:00:29
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年4月25日22:00まで
[5] その他の制限:先生が言ってたヒントでは問1は二重ループを、
問2はメモリの動的確保を使えばいいということです。
自分でもかなり考えたのですが結局どうやればいいのか分かりませんでした…。
よろしくお願いします。
452:デフォルトの名無しさん
08/04/25 05:41:34
>>451
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int myStrstr(char *strA, char *strB){
int i, j, pos;
pos = -1;
for(i=0; strA[i] != '\0'; ++i){
if(strA[i] == strB[0]){
for(j=1; strB[j] != '\0' && strA[i+j] == strB[j]; ++j);
if(strB[j] == '\0'){
pos = i;
break;
}
}
}
return pos;
}
char* strDouble(char *strA){
char *p;
int i;
p = (char*)malloc(sizeof(char) * (strlen(strA) * 2 + 1));
if(p == NULL) return NULL;
for(i=0; strA[i] != '\0'; ++i){
p[i*2] = strA[i];
p[i*2+1] = strA[i];
}
p[i*2] = '\0';
return p;
}