ぼるじょあがC/C++の宿題を片付けますYO! 39代目
レス数が1000を超えています。これ以上書き込みはできません。
0001ぼるじょあ ◆yBEncckFOU
05/01/25 19:53:17――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
・複雑なAAはスレが荒れたり問題が埋もれる原因になりますので使用を控えてください。
―――――――――――――――――――――――――――――――
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで/無期限 のいずれか
[5] その他の制限:
【アップローダー】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【歴代スレは>>1-10辺り】
38代目 http://pc5.2ch.net/test/read.cgi/tech/1105541524/
37代目: http://pc5.2ch.net/test/read.cgi/tech/1103913840/
36代目: http://pc5.2ch.net/test/read.cgi/tech/1102753497/
35代目: http://pc5.2ch.net/test/read.cgi/tech/1101568895/
34代目: http://pc5.2ch.net/test/read.cgi/tech/1100530682/
33代目: http://pc5.2ch.net/test/read.cgi/tech/1097932699/
32代目: http://pc5.2ch.net/test/read.cgi/tech/1097592876/
31代目: http://pc5.2ch.net/test/read.cgi/tech/1095075678/
30代目: http://pc5.2ch.net/test/read.cgi/tech/1091954342/
29代目: http://pc5.2ch.net/test/read.cgi/tech/1090765027/
0002デフォルトの名無しさん
05/01/25 19:55:150003ぼるじょあ ◆yBEncckFOU
05/01/25 19:55:1627代目: http://pc5.2ch.net/test/read.cgi/tech/1089448445/
26代目: http://pc5.2ch.net/test/read.cgi/tech/1088860889/
25代目: http://pc5.2ch.net/test/read.cgi/tech/1087929711/
24代目: http://pc5.2ch.net/test/read.cgi/tech/1086612317/
23代目: http://pc5.2ch.net/test/read.cgi/tech/1085149383/
22代目: http://pc5.2ch.net/test/read.cgi/tech/1083050221/
21代目: http://pc5.2ch.net/test/read.cgi/tech/1078157730/
20代目: http://pc5.2ch.net/test/read.cgi/tech/1075217631/
19代目: http://pc5.2ch.net/test/read.cgi/tech/1073566342/
18代目: http://pc5.2ch.net/test/read.cgi/tech/1071407728/
17代目: http://pc5.2ch.net/tech/kako/1070/10704/1070469896.html
16代目: http://pc5.2ch.net/tech/kako/1069/10698/1069837000.html
15代目: http://pc5.2ch.net/tech/kako/1068/10689/1068950713.html
14代目: http://pc5.2ch.net/tech/kako/1067/10671/1067175933.html
13代目: http://pc5.2ch.net/tech/kako/1064/10645/1064541405.html
12代目: http://pc5.2ch.net/tech/kako/1060/10607/1060706382.html
11代目: http://pc5.2ch.net/tech/kako/1058/10582/1058283913.html
10代目: http://pc5.2ch.net/tech/kako/1057/10570/1057070174.html
9代目: http://pc5.2ch.net/tech/kako/1055/10559/1055944101.html
8代目: http://pc5.2ch.net/tech/kako/1055/10550/1055056940.html
7代目: http://pc5.2ch.net/tech/kako/1053/10539/1053963794.html
6代目: http://pc5.2ch.net/tech/kako/1053/10530/1053045530.html
5代目: http://pc5.2ch.net/tech/kako/1051/10515/1051594046.html
4代目: http://pc5.2ch.net/tech/kako/1045/10450/1045074808.html
3代目: http://pc5.2ch.net/tech/kako/1041/10419/1041992392.html
2代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
1代目: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html
では、どうぞ。
0004ぼるじょあ ◆yBEncckFOU
05/01/25 20:02:120005デフォルトの名無しさん
05/01/25 20:05:160006デフォルトの名無しさん
05/01/25 20:26:45授業単元 大学の「情報処理」という講義名の課題
問題 1文字列をキーボードから読み取り、その文字列を暗号化した文字列を表示するプログラム。ただし、入力する文字列は英数記号のみとする。
2 暗号化は次の方法で行う。文字列中のローマ字を大文字小文字を問わず下記に示すとおりの置き換えを行う。
3 ローマ字以外の文字は暗号化しない。
a b c d e f g h i j k l m
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
n o p q r s t u v w x y z
環境 Borland C++5.5.1 WinXP
期限 2005年1月27日
なにとぞよろしくお願いします。
0007デフォルトの名無しさん
05/01/25 20:29:33うざいマルチ
0008デフォルトの名無しさん
05/01/25 20:31:32乙
00096
05/01/25 20:34:000010デフォルトの名無しさん
05/01/25 20:36:06トリプルマルチ、暴言吐き。
00116
05/01/25 20:44:24読まずにお願いしてしまい誠に申し訳ありません。以後気をつけます。
0012デフォルトの名無しさん
05/01/25 20:48:25浮気するなら離婚してこい
0013デフォルトの名無しさん
05/01/25 20:57:4200146
05/01/25 21:12:2100156
05/01/25 21:20:29前スレ見て解き方が分かりました。どうもありがとうございました。
00166
05/01/25 21:25:310017 ◆0vfXsQKCwI
05/01/25 21:33:540018デフォルトの名無しさん
05/01/25 21:40:210019ぼるじょあ
05/01/25 21:54:33| ('3`) マンドクセ
/ ̄ノ( ヘヘ ̄ ̄
0020デフォルトの名無しさん
05/01/25 22:01:11#include <stdlib.h>
#include <string.h>
int main(void)
{
char str[BUFSIZ], str2[BUFSIZ];
int len, i;
if(fgets(str, sizeof(str), stdin) == NULL) exit(1);
if(sscanf(str, "%s", str2) != 1) exit(1);
len = strlen(str2);
for(i=0; i<len; i++)
if((str2[i] >= 'a' && str2[i] <= 'm') ||
(str2[i] >= 'A' && str2[i] <= 'M')) str2[i] += 13;
else if((str2[i] >= 'n' && str2[i] <= 'z') ||
(str2[i] >= 'N' && str2[i] <= 'Z')) str2[i] -= 13;
printf("%s\n", str2);
return 0;
}
0021デフォルトの名無しさん
05/01/25 22:09:22動作確認しました。本当にありがとうございました!
0022ぼるじょあ ◆yBEncckFOU
05/01/25 22:53:18(・3・)エェー 乙だYO!
0023デフォルトの名無しさん
05/01/25 22:55:040024デフォルトの名無しさん
05/01/25 22:57:430026デフォルトの名無しさん
05/01/25 23:13:30のだが。タイムマシン?
0027デフォルトの名無しさん
05/01/25 23:16:410028デフォルトの名無しさん
05/01/25 23:21:090029デフォルトの名無しさん
05/01/25 23:26:330030デフォルトの名無しさん
05/01/25 23:28:050031デフォルトの名無しさん
05/01/26 00:19:47アスキーを仮定するのはいいとして、せめて13でなく'N'-'A'にしようや。
0032デフォルトの名無しさん
05/01/26 00:32:02EBCDICだったらどうすんだよ。
0033デフォルトの名無しさん
05/01/26 00:46:270034デフォルトの名無しさん
05/01/26 00:46:31それなら元のスレで私が書いたのでできる。
0035デフォルトの名無しさん
05/01/26 01:22:22>>939
どうもありがとうございました。
まだ少し時間があるので、お手本にして自分でも作ってみます。
お世話になりました。
0036前スレ730
05/01/26 01:57:20[1] 授業単元:C++研究
[2] 問題文(含コード&リンク):
テキストボックスに文字を入力し、"い"が入力されたら画像1を、"ろ"なら画像2を、
"は"なら画像1を1秒表示後、画像2に切り替え表示するプログラムを作成せよ。
画像の保管場所はそれぞれ、画像1="C:\1.bmp"、画像2="C:\2.bmp"とする。
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ(バージョン):Visual C++ 6.0
[3.3] 言語:C++
[4] 期限:2005年2月1日
製作にはMFCを使用するようなのですが担当教官にもわからないらしく、
締め切りは延ばしてもらったもののお手上げ状態です。
どうかよろしくおねがいします。
0037デフォルトの名無しさん
05/01/26 01:59:11学校側へ直接抗議して下さい
無能な教官へ金を流す事はありません
絶対にクビにしてあげてください
0038デフォルトの名無しさん
05/01/26 02:14:490039デフォルトの名無しさん
05/01/26 02:52:27[2] 問題文(含コード&リンク): n次の正方行列の行列式を消去法を行い、全てのピボットの積で求めるプログラム
[3] 環境
[3.1] OS: win xp
[3.2] コンパイラ(バージョン): bcc 32
[3.3] 言語:C
[4] 期限:2005年1月31日hh:mmまで/
[5] その他の制限:はじめにnを入力し、次に各要素を入力してから、答えが出てくるようにしていただきたいです。
よろしくお願いします。
0040デフォルトの名無しさん
05/01/26 02:57:58ソースを貼るので、どなたかわかる人がいましたらご指摘おねがいします。
まだ勉強途中なので模範ソースを貼っていただけたらうれしいです。
少し長くなりますがよろしくお願いします。
#include<stdio.h>
#define YSIZE 640
#define XSIZE 480
#define HIGH 255
#define LOW 0
#define L_BASE 100 /*連結成分のラベルのベース値*/
main(){
FILE *fp,*fg;
unsigned char in[YSIZE][XSIZE];
unsigned char out[YSIZE][XSIZE];
unsigned char image[YSIZE][XSIZE];
char str[1000];
int i,j,cnt,xs,ys,label;
int w,h; /* 画像の大きさ */
int d; /* 画像の階調 */
for(j=0;j<YSIZE;j++) {/*配列の初期化*/
for(i=0;i<XSIZE;i++){
in[i][j]=out[i][j]=0;
image[i][j]=0; } }
fp=fopen("nitika.pgm","rb");/*ファイル開く、読み込み*/
if(fp == NULL){
printf("open error");
exit(1); }
0041デフォルトの名無しさん
05/01/26 02:59:32fscanf(fp,"%d %d",&w,&h); /* 画像の大きさの読み込み */
fscanf(fp,"%d",&d); /* 画像の階調の読み込み */
for(j=0;j<h;j++){
for(i=0;i<w;i++) {
fscanf(fp,"%d",&in[j][i]); } }
fclose(fp);/*ファイル閉じ*/
labeling(in,out,cnt);/*ラベリング*/
fp=fopen("label.pgm","rb");/*書き込みファイル開く*/
fprintf(fg, "P2\n%d% d\n%d\n",XSIZE , YSIZE, 255);
for(j=0;j<h;j++) {/*書き込み*/
for(i=0;i<w;i++){
fprintf(fg,"%d",out[i][j]);}}
fclose(fg);/*ファイル閉じ*/}
labeling(in,out,image,cnt)
unsigned char in[YSIZE][XSIZE];
unsigned char out[YSIZE][XSIZE];
unsigned char image[YSIZE][XSIZE];
int cnt;
0042デフォルトの名無しさん
05/01/26 03:01:04int i,j,label,ys,xs;
for(i=0;i<YSIZE;i++)
for(j=0;j<XSIZE;j++)
out[i][j]=in[i][j];
label=L_BASE;
for(i=0;i<YSIZE;i++){
for(j=0;j<XSIZE;j++){
if(out[i][j]==HIGH){
if(label>=HIGH){
printf("Error!!too many labels.\n");
return -1;}
image[ys][xs]=label;
for(;;){
cnt=0;
for(i=0;i<YSIZE;i++)
for(j=0;j<XSIZE;j++)
if(image[i][j]==label){
if(image[i][j+1]==HIGH){
image[i][j+1]=label;cnt++;
}
if(image[i-1][j+1]==HIGH){
image[i-1][j+1]=label;cnt++;
}
if(image[i-1][j]==HIGH){
image[i-1][j]=label;cnt++;
}
0043デフォルトの名無しさん
05/01/26 03:02:11image[i-1][j-1]=label;cnt++;
}
if(image[i][j-1]==HIGH){
image[i][j-1]=label;cnt++;
}
if(image[i+1][j-1]==HIGH){
image[i+1][j-1]=label;cnt++;
}
if(image[i+1][j]==HIGH){
image[i+1][j]=label;cnt++;
}
if(image[i+1][j+1]==HIGH){
image[i+1][j+1]=label;cnt++;}}
if(cnt==0)break;}}
label++;
}}
cnt=label-L_BASE;
printf("number of labels:%d\n",cnt);
return 0;}
0044デフォルトの名無しさん
05/01/26 03:12:03>>授業単元:C++研究
・・研究…ですか…いや、いいんですけどね。
というか、この問題ってC++とあまり関係ないんじゃないか?
37の言うとおり。その教官はかなりやばいぞ。
>>38
しかもC:直下に保存。イヤすぎる・・
0045デフォルトの名無しさん
05/01/26 03:24:120046デフォルトの名無しさん
05/01/26 03:25:04講師に教わったって将来ネタに出来るからいいじゃないか
0047デフォルトの名無しさん
05/01/26 03:28:13模範ソースよろ
004840
05/01/26 03:36:08すいません、C言語苦手なのでなかなか綺麗なソースってかけないものでして・・・
0049デフォルトの名無しさん
05/01/26 03:43:08長いんだからうpろーだつかえ
どうせ>>1のテンプレもよんでねーんだろ
0050デフォルトの名無しさん
05/01/26 03:46:03005140
05/01/26 03:58:48アップローダーの方に貼りましたのでよろしくお願いします。
0052デフォルトの名無しさん
05/01/26 04:02:551言われて0.5しかできねーのかてめーは
リンクぐらいはれや
なんで回答者がわざわざ探さないとならんのだ
0053デフォルトの名無しさん
05/01/26 04:07:41確かにおっしゃるとうりです、もうしわけない!
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=130
0054デフォルトの名無しさん
05/01/26 04:16:51日本語も不自由な人なんですね
0055デフォルトの名無しさん
05/01/26 04:22:59全然ダメだよこれじゃ…コンパイル通るわけ無い。もうね、アボガド。
やりたいことはわかる。問題は基本がなってないって事。
基礎からやり直せ、話はそれからだ。ガンガレ
0056デフォルトの名無しさん
05/01/26 04:34:05そうですか、ありがとうございます。
自分でもひどいプログラムだとは思ってるんですけどね・・・・
できれば模範ソースだけでも貼っていただけませんか?
0057デフォルトの名無しさん
05/01/26 04:36:360058デフォルトの名無しさん
05/01/26 04:45:59またお前か!!!
進歩の無い人間に教えるのは無駄なので、模範ソースは作りません。
0059デフォルトの名無しさん
05/01/26 05:02:07ん?
二値化を教えてくれた人ですか? あのときはありがとうございました!
これ以上質問すると迷惑っぽいのでもう少し自分で考えてみます。
ありがとうございました
0060デフォルトの名無しさん
05/01/26 05:07:050061デフォルトの名無しさん
05/01/26 05:14:24とりあえず機械的にインデントを直してみたのを
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=130
に貼ってみたよ。中身は見てないっす。gccでコンパイル/リンクは通ってるよ。
0062デフォルトの名無しさん
05/01/26 05:15:59もどってきたら基礎も何もやってなかったらガッカリだよな
0064デフォルトの名無しさん
05/01/26 05:26:20実行はエラーがでてできなかったけどコンパイルはできました。
ありがとうございます!
なんとかいじって見ます。
>>62
教えてくれたのは普通の二値化でしたよね?
それを判別分析法で閾値求めるプログラムにするので必死だったんですよ・・・
特に分散のあたりが・・・・。
言い訳じみてごめんなさい。
0065sage
05/01/26 06:27:13君が教えてもらってたのは画像ファイルを読み込んでタダ表示するだけのものだっただろ?
あの段階でよくそこまでいけね
0066デフォルトの名無しさん
05/01/26 08:58:402値化も教えた。
他にも、エラーチェックしろとかpgmは桁数制限があるぞとかエラー処理しろとかもうね……
情けなくて泣きたくなってきたよ_/ ̄|○
0067デフォルトの名無しさん
05/01/26 09:22:41判別分析法で閾値もとめるプログラムはできてるんだろうし。
>>64
ラベリングならここ参考になるよ
http://cutie.dip.jp/pc/image/13.php#
006867
05/01/26 09:27:47まぁ誰かヒマだったらやってあげて
0071デフォルトの名無しさん
05/01/26 10:26:08データは番号(整数、名前(文字型10文字、とする。
このデータをハッシュテーブルへ
1)登録 2)削除 3)探索 4)表示
が行える機能を有すること。
なお同じ番号がある場合は登録エラーとなる表示を行う。
ハッシュ関数は、kmod Lとし、Lは13とする。
�A上記の課題をオープンアドレス法で実現せよ。
ただしデータ数は15件できるように設計せよ。
これをプログラミングしてください!
どなたかお願いします!
0072デフォルトの名無しさん
05/01/26 10:32:07言語の指定くらいしろよ!
0073デフォルトの名無しさん
05/01/26 10:42:42C言語です!
0074デフォルトの名無しさん
05/01/26 10:44:40期限の指定くらいしろよ!
0077デフォルトの名無しさん
05/01/26 10:59:09ググル方法を勉強しろよ
007871
05/01/26 11:07:460079デフォルトの名無しさん
05/01/26 11:39:16問題文を易しめの文章でおながいします。
0080デフォルトの名無しさん
05/01/26 11:42:440081学部精
05/01/26 11:43:14二つの配列に文字を入力してそれが一致しているか 判定するプログラムです
strstr strlen のヘッダファイルは使ってはいけないんです
これの代わりをうまく書いて作成してもらいたいです
例 kyou ha iitenki 入力 iitenki 結果 seikai!
あと○×ゲームの配列を使ってのプログラム作成をお願いします
(できるだけヘッダファイルを使わずにおねがいします)
0082デフォルトの名無しさん
05/01/26 11:47:43言語の指定くらいしろよ!
0083デフォルトの名無しさん
05/01/26 11:50:46って事だろうな
0084デフォルトの名無しさん
05/01/26 11:51:01こんなやつばっかりだよorz
0085デフォルトの名無しさん
05/01/26 12:02:25だめだ。数�Tまでしかやってないから分からん・・。
0086学部精
05/01/26 12:02:37C言語です
0087学部精
05/01/26 12:04:14[1] 授業単元: 情報工学
[2] 問題文(含コード&リンク): さっきのです
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ(バージョン): cc
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:2004年1月28日[5] その他の制限: はやくしないとアボンに(;´∀`)
0088デフォルトの名無しさん
05/01/26 12:08:591つ目の入力は、複数の文字列、2つ目の入力は1つの文字列で、
一つ目の文字列のどれかと、2つ目の文字列が一致すれば正解という事?
0089デフォルトの名無しさん
05/01/26 12:18:54http://www.mit.msn.to/matrix/determinant.html
ここの入力部を作ればいいだけの話じゃないんだろか
0090デフォルトの名無しさん
05/01/26 12:20:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/132.txt
0091デフォルトの名無しさん
05/01/26 12:20:29これなんかむかつくw
0092デフォルトの名無しさん
05/01/26 12:21:59> [4] 期限:2004年1月28日[5] その他の制限: はやくしないとアボンに(;´∀`)
ふ〜ん。で?
0093デフォルトの名無しさん
05/01/26 12:32:45おそらく
printf("kyouha %s\n >",str1);
scanf("%s",str2);
printf("%s\n",strcmp(str1,str2)==0?"seikai":"huseikai");
だと思うけど
本人が問題の意味分かってなさそうだし書き込みムカつくから俺はやらない
0094デフォルトの名無しさん
05/01/26 12:38:290095デフォルトの名無しさん
05/01/26 12:43:28char s[]="できるだけヘッダファイル使わないで$";
asm{
mov dx,offset s
mov ah,09h
int 21h
};
0096学部精
05/01/26 12:47:35>>88
>>81>>87
1つ目の入力は、複数の文字列、2つ目の入力は1つの文字列で、
一つ目の文字列のどれかと、2つ目の文字列が一致すれば正解という事?
二つ目も複数でもいいんです。 1つ目と二つ目の長さを比較して短い方を
keywordにします
0097学部精
05/01/26 12:48:330098デフォルトの名無しさん
05/01/26 12:51:26ここでの質問者の態度たるものをわかっていないね
0099デフォルトの名無しさん
05/01/26 12:53:250100デフォルトの名無しさん
05/01/26 12:58:49int strcmp(const char *, const char *);
int printf(const char *, ...);
int main() { ... }
0101デフォルトの名無しさん
05/01/26 12:59:12難しくてわかる人いないだろうなここには。
0102学部精
05/01/26 13:00:19ペロペロ
0103デフォルトの名無しさん
05/01/26 13:01:190104学部精
05/01/26 13:01:41そうなんです
0105学部精
05/01/26 13:05:50うぷおね^^
0106デフォルトの名無しさん
05/01/26 13:08:16ttp://en.wikibooks.org/wiki/Programming:C_strings#The_strcmp_function
0107学部精
05/01/26 13:08:36性根叩き直してきます
では^^
0108デフォルトの名無しさん
05/01/26 13:08:560109デフォルトの名無しさん
05/01/26 13:15:22#include <stdio.h>
int my_strcmp(const char *str1, const char *str2)
{
int i;
for(i=0; str1[i] != '\0' && str2[i] != '\0'; i++)
if(str1[i] > str2[i]) return 1;
else if(str1[i] < str2[i]) return -1;
if(str1[i] != '\0') return 1;
else if(str2[i] != '\0') return -1;
return 0;
}
int main(void)
{
printf("%d\n", my_strcmp("hoge", "hoge"));
printf("%d\n", my_strcmp("hoge", "hofuman"));
printf("%d\n", my_strcmp("hoge", "hoh"));
printf("%d\n", my_strcmp("hoge", "hogen"));
return 0;
}
0110デフォルトの名無しさん
05/01/26 13:19:200111デフォルトの名無しさん
05/01/26 13:23:520112デフォルトの名無しさん
05/01/26 13:24:12101==学部精
0113デフォルトの名無しさん
05/01/26 13:26:330114デフォルトの名無しさん
05/01/26 13:27:33いや、Cを知らない/センスのないコードだな
0115デフォルトの名無しさん
05/01/26 13:33:36ブランクも結構あるが、もう5年ぐらいやっていると思うけど・・。
0116デフォルトの名無しさん
05/01/26 13:38:51int strcmp(const char* s,cost char* t){
for(i=0;s[i]!='\0';i++)if(s[i]!=t[i])break;
return s[i]-t[i];
}
0117デフォルトの名無しさん
05/01/26 13:38:58{
unsigned char u1, u2;
while(*s1 && (*s1 == *s2)?(s1++,s2++,1):0);
return (((u1 = *(unsigned char*)s1) < (u2 = *(unsigned char*)s2)) ? -1 : u1>u2);
}
0118デフォルトの名無しさん
05/01/26 13:48:26なるほど。forでのNULチェックは片方だけでいいし、
抜けるだけにしておいて、大小は最後だけでいいのか。
>>117
何となくは分かるけど難しい。実際はこんな感じで書かれているんだろうか。
0119デフォルトの名無しさん
05/01/26 13:49:25>>106
0120デフォルトの名無しさん
05/01/26 14:08:58すまそ。
なるほど。意外と易しめに書いてある。
0121デフォルトの名無しさん
05/01/26 14:16:450122デフォルトの名無しさん
05/01/26 14:17:41for ( ; *s == *t ; s++, t++)
if (*s == '\0')
return(0);
retun(*s - *t);
こっちのほうがわかり易いが、好みか
0123デフォルトの名無しさん
05/01/26 14:25:25>>117はわざわざわかりにくく書いてるようにしか見えない
0124デフォルトの名無しさん
05/01/26 14:34:02名前を何人分か入力させ、その名前を入力順、逆順に表示するプログラムを
双方向連結リストを使って作成せよ。
OS:WINDOWS XP
コンパイラ(バージョン):VISUAL C++ ver6.0
言語:C
よろしくお願いします。
0125デフォルトの名無しさん
05/01/26 14:40:31sよりtの方が文字数長いときって、s==tよりs<tの方が嬉しいけど。
0126デフォルトの名無しさん
05/01/26 14:46:490127デフォルトの名無しさん
05/01/26 14:51:01学部精か?
バカか?最後の行よく見ろ。
0128デフォルトの名無しさん
05/01/26 14:51:070129デフォルトの名無しさん
05/01/26 14:52:16>>127
0130デフォルトの名無しさん
05/01/26 14:54:36漏れもさっきおなじこと思った。
まあ落ち着いてよく見ろ。
0132デフォルトの名無しさん
05/01/26 14:56:340133デフォルトの名無しさん
05/01/26 14:58:290134デフォルトの名無しさん
05/01/26 14:59:100135デフォルトの名無しさん
05/01/26 15:02:30計算結果は加減酸は条件分岐意がいい見ないし。それは、int,
ちゃーは符号突き出し関係ある明?
0136デフォルトの名無しさん
05/01/26 15:04:15printf("%d\n", my_strcmp("ほげ", "ほげぶ"));
printf("%d\n", my_strcmp("ほげ", "ほあた"));
の結果は?
0137デフォルトの名無しさん
05/01/26 15:05:50名前を何人分か入力させ、その名前を入力順、逆順に表示するプログラムを
双方向連結リストを使って作成せよ。
OS:WINDOWS XP
コンパイラ(バージョン):VISUAL C++ ver6.0
言語:C
期限 2005年1月27日
よろしくお願いします。
0138デフォルトの名無しさん
05/01/26 15:09:03それを、上記の3つのルーチンで試した結果をここで報告してくれたら
おじさんうれしいぞ
0139デフォルトの名無しさん
05/01/26 15:10:08ぼるじょあのアホー!
0140デフォルトの名無しさん
05/01/26 15:12:13unsigned char * で作ってる方は正常
char * で作ってる方は s!=t のときに常に s>t
0141デフォルトの名無しさん
05/01/26 15:14:11スマソ
char * で作ってる方は strlen(s)!=strlen(t) のときに常に s>t
0142デフォルトの名無しさん
05/01/26 15:18:02違うよ
> cat mystrcmp.c
#include <stdio.h>
int my_strcmp(char *a, char *b)
{
for(; *a == *b; a++, b++)
if(*a == '\0')
return 0;
return *a - *b;
}
int main(void)
{
char *a = "ほげ";
char *b = "ほげぶ";
printf("a[%s] - b[%s] => %d\n", a, b, my_strcmp(a, b));
printf("b[%s] - a[%s] => %d\n", b, a, my_strcmp(b, a));
return 0;
}
> gcc -o mystrcmp mystrcmp.c ; ./mystrcmp
a[ほげ] - b[ほげぶ] => 126
b[ほげぶ] - a[ほげ] => -126
>
0143RYO
05/01/26 15:25:460144デフォルトの名無しさん
05/01/26 15:27:20それ以外かで判定
0145デフォルトの名無しさん
05/01/26 15:28:430146デフォルトの名無しさん
05/01/26 15:29:140147gakubusei
05/01/26 15:30:01madaumaku dekinaino so-su harune osiindakedo
0148デフォルトの名無しさん
05/01/26 15:30:22#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLINE 256
struct Link { struct Link *next, *prev; char name[MAXLINE]; };
void printAll(struct Link *top)
{
struct Link *ptr; for (ptr = top->next; ptr != top; ptr = ptr->next) { printf("%s\n", ptr->name); }
}
void printReverse(struct Link *top)
{
struct Link *ptr; for (ptr = top->prev; ptr != top; ptr = ptr->prev) { printf("%s\n", ptr->name); }
}
void addLink(struct Link *top, struct Link *l) {
top->prev->next = l; l->prev = top->prev; top->prev = l; l->next = top;
}
struct Link *linkMalloc(void) { return (struct Link*) malloc(sizeof(struct Link)); }
int main(void)
{
struct Link top, *link; char buff[MAXLINE];
top.next = top.prev = ⊤
while (fgets(buff, MAXLINE, stdin) != NULL) {
buff[strlen(buff) - 1] = '\0'; link = linkMalloc(); strncpy(link->name, buff, MAXLINE); addLink(&top, link);
}
printAll(&top);
printReverse(&top);
return 0;
}
0149デフォルトの名無しさん
05/01/26 15:30:230150gakubusei
05/01/26 15:31:10main(){
char retuA[256],retuB[256];
int i,j,k,l=0,e=0,f=0,g=0;
printf("文字列Aを入力してください。\n");
gets(retuA);
printf("文字列Bを入力してください。\n");
gets(retuB);
for(i = 0;retuA[i] != '\0';i++);
for(j = 0;retuB[j] != '\0';j++);
if(i >= j){
do{
while(retuA[g] == retuB[f]){
f++;
g++;
if(retuA[g] != retuB[f])
f = 0;
else {
if(retuB[f] == '\0')
l = 1;
0151gakubusei
05/01/26 15:32:14}
e++;
g++;
}while(e < i - j);
}
else{
do{
while(retuB[g] == retuA[f]){
f++;
g++;
if(retuB[g] != retuA[f])
f = 0;
else {
if(retuA[f] == '\0')
l = 1;
}
}
e++;
g++;
}while(e < j - i);
}
0152gakubusei
05/01/26 15:33:00printf("success!\n");
else
printf("failure!\n");
}
0153gakubusei
05/01/26 15:34:120154gakubusei
05/01/26 15:35:00文字列Aを入力してください。
dklfjsldk dfjlsjdl dflsdkjfdls jkfd
文字列Bを入力してください。
jkfd
success!
文字列Aを入力してください。
jfklsdjkl djflsdjfl djflsj jdkf
文字列Bを入力してください。
j
failure!
文字列Aを入力してください。
djkfjlsd djfklsdjf djfklsdjfl jdsae ajfd
文字列Bを入力してください。
jdsae
failure!
nanoyone-... aidano moji ga mitukattemo failure ni naccyau,,,
oatasuke...
0155デフォルトの名無しさん
05/01/26 15:36:040156デフォルトの名無しさん
05/01/26 15:39:180157デフォルトの名無しさん
05/01/26 15:39:500158デフォルトの名無しさん
05/01/26 15:40:540159RYO
05/01/26 15:45:30それはどのように使えばいいんですか??
0160gakubusei
05/01/26 15:49:03emacs ni haranaito...マンドクサイ
0161デフォルトの名無しさん
05/01/26 15:51:18お前らでやれ世だな。がー
0162デフォルトの名無しさん
05/01/26 15:51:590163デフォルトの名無しさん
05/01/26 15:58:15やりたいのですが、どうやったら簡単にできるでしょうか?
0164デフォルトの名無しさん
05/01/26 15:59:080165デフォルトの名無しさん
05/01/26 15:59:21016639
05/01/26 15:59:23[1] 授業単元: C言語
[2] 問題文(含コード&リンク): n次の正方行列の行列式を消去法を行い、全てのピボットの積で求めるプログラム
参考としては、>>89さんが言っていたとおり、ttp://www.mit.msn.to/matrix/determinant.html
のプログラムに行列の入力部を入れて欲しいです。
[3] 環境
[3.1] OS: win xp
[3.2] コンパイラ(バージョン): bcc 32
[3.3] 言語:C
[4] 期限:2005年1月31日hh:mmまで/
[5] その他の制限:はじめにnを入力し、次に各要素を入力してから、答えが出てくるようにしていただきたいです。
よろしくお願いします。
0167デフォルトの名無しさん
05/01/26 15:59:410168デフォルトの名無しさん
05/01/26 16:02:37Nが可変でないといけないだろうから、
ttp://www.mit.msn.to/matrix/determinant.html
のプログラムに行列の入力部を入れて使うだけじゃ無理。
面倒だからやらない。
0169デフォルトの名無しさん
05/01/26 16:04:48考案した算法だ。それでググルが良い?
0171デフォルトの名無しさん
05/01/26 16:12:55ガウスの消去法。
昔数値計算の授業で作ったのをやるよ。
なぜかgauss.hおよびmain関数を書いたファイルが見つからず。
ひょっとして作りかけの可能性もあるが未検証。
0172デフォルトの名無しさん
05/01/26 16:16:21そんな、高等なもの、学部or高校or中学or小学or幼稚園or保育園に教えないよね
0173171
05/01/26 16:19:06あとガウスの綴りがgausなのかgaussなのかはっきりしろと。
まあ使いたきゃ自己責任で。
0174デフォルトの名無しさん
05/01/26 16:20:393次ならこれで求まる
x=mat[0][0]*mat[1][1]*mat[2][2]+
mat[0][1]*mat[1][2]*mat[2][0]+
mat[0][2]*mat[1][0]*mat[2][1]-
mat[0][0]*mat[1][2]*mat[2][1]-
mat[0][1]*mat[1][0]*mat[2][2]-
mat[0][2]*mat[1][1]*mat[2][0];
0176デフォルトの名無しさん
05/01/26 16:22:18ガウスに関してはFortranで十分、いまさら、Cで書き換える必要なし。
すき者は書き換えやれ。
0177デフォルトの名無しさん
05/01/26 16:23:30対角行列に変換する
017839
05/01/26 16:24:24それをどこに入れればいいのかわかりません。
ttp://www.mit.msn.to/matrix/determinant.html のどこかに入れるのですか?
阿呆でごめんなさい。
0179デフォルトの名無しさん
05/01/26 16:24:420180デフォルトの名無しさん
05/01/26 16:26:140181デフォルトの名無しさん
05/01/26 16:29:45ここ読んでごらん
ttp://www.akita-nct.jp/~yamamoto/lecture/2004/5E/linear_equations/how_to_make_GJ/gaussj.pdf
0182デフォルトの名無しさん
05/01/26 16:39:29xの実部┘ └yの実部
.. xの虚部┐ ┌yの虚部
それを二次元離散フーリエ変換したfimage[N][N][N][N]と
xの実部┘ └yの実部
こんどはそのfimage[N][N][N][N]が渡されたときさらに
xの虚部┐ ┌yの虚部
それを二次元逆離散フーリエ変換したifimage[N][N][N][N]を
.. xの実部┘ └yの実部
返すプログラムを作ってくれませんか
018339
05/01/26 16:40:33なんとなくガウスの消去法のプログラムを見れば何をやっているのかは分かるのですが、
行列式を求めるために上三角行列のピボットの積を求めるプログラムソースをどのように書いて、
入れればよいのか分かりません。よろしくお願いします。
0184デフォルトの名無しさん
05/01/26 16:41:230185デフォルトの名無しさん
05/01/26 16:41:430186デフォルトの名無しさん
05/01/26 16:45:52今なら、SSEでやるのが、楽だし、行列計算はベクターで計算しろ
0187デフォルトの名無しさん
05/01/26 16:46:11>>144
0188デフォルトの名無しさん
05/01/26 16:46:34Cならisdigit駆使
C++ならboost::lexical_castが楽
0189デフォルトの名無しさん
05/01/26 16:47:45その144で言っている0x30とかの使いかたが分らないんですけど
0190デフォルトの名無しさん
05/01/26 16:50:080191デフォルトの名無しさん
05/01/26 16:50:21どこまでのエラー検査したいか?
1、数字以外を検出したらアボート
2、桁数以内で変な文字があったらアボート
3、2+範囲チェックでアボート
4、リアルタイムでで検査しながら警告する
5、最後まで付き合う
0192デフォルトの名無しさん
05/01/26 16:54:000193183
05/01/26 16:58:240194182
05/01/26 16:59:090195デフォルトの名無しさん
05/01/26 17:01:48さん、厳密ならargcを調べるしかない、つうか仕方ないよ。
一番楽なのは,Winの5だな
0196デフォルトの名無しさん
05/01/26 17:05:10教えたんだよ、バグのほうがひどいな、お前の処理なんぞ1ナノ秒しか
動いてない
0197デフォルトの名無しさん
05/01/26 17:10:07[2] 問題文(含コード&リンク): 3次の正方行列の行列式を消去法を行い、全てのピボットの積で求めるプログラム
参考としては、>>89さんが言っていたとおり、ttp://www.mit.msn.to/matrix/determinant.html
のプログラムに行列の入力部を入れて欲しいです。
[3] 環境
[3.1] OS: win xp
[3.2] コンパイラ(バージョン): bcc 32
[3.3] 言語:C
[4] 期限:2005年1月31日
[5] その他の制限:各要素を入力してから、答えが出てくるようにしていただきたいです。
改めて、よろしくお願いします。
0198デフォルトの名無しさん
05/01/26 17:12:160199デフォルトの名無しさん
05/01/26 17:13:080200デフォルトの名無しさん
05/01/26 17:15:120201デフォルトの名無しさん
05/01/26 17:20:25>>89サイトのやつを引っ張ってやっつけ仕事
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/134.txt
0202デフォルトの名無しさん
05/01/26 17:25:220203デフォルトの名無しさん
05/01/26 17:30:08質問者の態度がアレだからしゃーないけどね
0205デフォルトの名無しさん
05/01/26 17:32:480206デフォルトの名無しさん
05/01/26 17:35:210207デフォルトの名無しさん
05/01/26 17:36:550208デフォルトの名無しさん
05/01/26 17:42:02[2] 問題文(含コード&リンク): n次の正方行列Aの逆行列Xを求めて出力し、
その逆行列と元の行列を掛けてAX=XA=Iとなることを示すプログラム。
[3] 環境
[3.1] OS: win xp
[3.2] コンパイラ(バージョン): bcc 32
[3.3] 言語:C
[4] 期限:2005年1月31日
[5] その他の制限:はじめにnを入力し、各要素を入力して答えがでてくるプログラム
よろしくお願いします。
0209デフォルトの名無しさん
05/01/26 17:43:090210デフォルトの名無しさん
05/01/26 17:44:590212デフォルトの名無しさん
05/01/26 18:11:51わかった、役所の子供はうまいな、しょうがない知ってる人教えるか
0213デフォルトの名無しさん
05/01/26 18:21:17行列式まで出来てるんだから、あと余因子行列つくれば終わり。
もしくは対角化部分を改造して行基本変形で求める。
0214デフォルトの名無しさん
05/01/26 18:38:240215デフォルトの名無しさん
05/01/26 18:42:140216デフォルトの名無しさん
05/01/26 18:47:47全部載ってるな
0217208
05/01/26 18:54:41これにAX=XA=Iを示すにはどこにどのようなプログラムを入れればよいですか?
よろしくお願いします。
0218デフォルトの名無しさん
05/01/26 19:06:57そもそもそういう次元の問題ではないことは明白であろう。
思考能力に障害があるだけ。
0219デフォルトの名無しさん
05/01/26 19:45:410220デフォルトの名無しさん
05/01/26 19:57:556つ変数の平均速度を求めるプログラムで
最初にユーザーがmを打ったら、最後の結果がmphと表示される
kと打ったら、kmph表示される
qと打ったら、プログラムを何もせずに終了させる。
この方法が分かりません・・・
分かる人が居たらお願いします
0221デフォルトの名無しさん
05/01/26 20:00:14定数教えて、そうすれば電卓でOK
0222デフォルトの名無しさん
05/01/26 20:15:53#define values 6
main(void)
{float First, Second, Third, Fourth, Fifth, Sixth, total, average;
FILE*inp,*outp;
inp = fopen("c:speeds.txt","r");
outp = fopen("c:speeds result1.txt" , "w");
First ;
Second ;
Third ;
Fourth ;
Fifth ;
Sixth ;
total ;
average;
0223デフォルトの名無しさん
05/01/26 20:16:22fprintf(outp, "Speed at 8:30am : %.2f\n",First);
fscanf(inp, "%f",&Second);
fprintf(outp, "Speed at 8:35am : %.2f\n",Second);
fscanf(inp, "%f",&Third);
fprintf(outp, "Speed at 8:40am : %.2f\n",Third);
fscanf(inp, "%f",&Fourth);
fprintf(outp, "Speed at 8:45am : %.2f\n",Fourth);
fscanf(inp, "%f",&Fifth);
fprintf(outp, "Speed at 8:50am : %.2f\n",Fifth);
fscanf(inp, "%f",&Sixth);
fprintf(outp, "Speed at 8:55am : %.2f\n",Sixth);
total= First + Second + Third + Fourth + Fifth + Sixth;
average = total / values;
fprintf(outp, "\n");
fprintf(outp, "The average speed for this half-hour interval is : %.2f\n",average);
fclose(inp);
fclose(outp);
return(0); }
これの最後の部分と8時30〜8時55分までのスピードの後ろに
ユーザーがmを打ったら、mphと表示される
kと打ったら、kmph表示される
qと打ったら計算せずに終了させる風にしたいのですが・・・
教えてもらえたらありがたいです。
0224デフォルトの名無しさん
05/01/26 20:20:31;
PrintLn('これの最後の部分と8時30〜8時55分までのスピードの後ろに
ユーザーがmを打ったら、mphと表示される
kと打ったら、kmph表示される
qと打ったら計算せずに終了させる風にしたいのですが・・・
教えてもらえたらありがたいです。'
Exit
0225
05/01/26 20:36:270226デフォルトの名無しさん
05/01/26 21:27:24入力された文字を適当な変数に読み込む
その変数が'm'か'k'なら、ファイルから読み込んだ値を表示させた後の部分にに、
[ その文字(変数)ph ] を表示させる
その変数が'q'なら、平均の計算とその結果部分を表示させないようにする
こういうことか?
質問文を読んでも書きかけのソースをみても何をしたいのかよくわからん
そもそも言語の指定すらないし
0227デフォルトの名無しさん
05/01/26 23:22:17まず、日本語を書け。本題はそれからだ。
0228137
05/01/27 00:05:26ありがとうございます、助かりました。
0229デフォルトの名無しさん
05/01/27 02:04:348進、2進についてはビット処理を行うこと。
繰り返し文を用いることにより、いくつかのデータで実行を確認してみよ
12 000000000014 00000000000000000000000000001100
てのがありまして、とりあえず10→8進数のを書いてみたんですがうまくいきません
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/136.txt
7や9を入力すると正常なんですがちょっと値が大きかったり小さかったりするとワケノワカラン結果になります
10→8→2進数にする方法を教えてください
0230デフォルトの名無しさん
05/01/27 02:23:23sinsuu_8(a,s);
s[20]='\0';
0231デフォルトの名無しさん
05/01/27 04:19:188進表示用の文字列を用いて2進表示用の文字列を作るってこと?
そうじゃなくて入力した整数値から2進表示用の文字列を作りたいんだったら、
8進数に変換するのと同じ方法で出来るが?
それと、8進表示の文字列は問いで書いてある桁分でいいんじゃないのか?
intの大きさ判ってるか?
あと、細かいようだけど、あんなに短いコードなのになぜわざわざうpするんだYO!
ガンガレ。ノシ
0232デフォルトの名無しさん
05/01/27 08:56:240233デフォルトの名無しさん
05/01/27 10:07:258で割る
8進→2進
8進1桁を2進3桁に置換
023471
05/01/27 11:06:30ばっちり動きました!
助かりました。
本当にありがとうございました!
0235デフォルトの名無しさん
05/01/27 12:47:26[1] 授業単元: 暗号・複合化
[2] 問題文(含コード&リンク):
以下のグローバル変数CODEを使って,負でない整数を暗号・復号化する。
/* 0 1 2 3 4 5 6 7 8 9 */
int CODE[] ={0,7,8,9,3,4,5,2,1,6};
ある負でない整数が与えられると,その数のそれぞれの桁の数字をインデックス(添字)としてCODEが参照され,暗号化する。
たとえば,1はCODE[1]→7に暗号化される。他に,628→581, 532→498など。
負でない整数を暗号にする関数[int encode(int data)],復号する(元に戻す)関数[int decode(int code)]を作りなさい。
[3] 環境
[3.1] OS:Windows 2000
[3.2] コンパイラ(バージョン): Visual C++ 6.0
[3.3] 言語:C
[4] 期限:2005年1月28日まで
#define decode(a,n) encode(a,n)
void encode(unsigned int a,int n)
{
int i;
unsigned int c,d;
for(i=0;i<n;i++){
c=a[i];
d=0;
while(c){
d*=10;
d+=CODE[i%10]c%10;
c/=10;
}
}
}
0236デフォルトの名無しさん
05/01/27 12:53:26それデタラメ。
10進数の桁の取り出し方でも考えろ。
0237デフォルトの名無しさん
05/01/27 13:16:32#include <stdio.h>
int CODE[] ={0,7,8,9,3,4,5,2,1,6};
int DIGIT[] = {0,1,2,3,4,5,6,7,8,9};
int find(int data, int *table)
{
for(int i=0;;++i)
if(table[i] == data)
return i;
return -1;
}
int crypt(int src, int* in, int* out)
{
int ret = 0;
for(int x = 1; src; x *= 10, src /= 10)
ret += out[find(src % 10, in)] * x;
return ret;
}
int encode(int data) { return crypt(data, DIGIT, CODE); }
int decode(int code) { return crypt(code, CODE, DIGIT); }
main()
{
//test
int a = encode(12345);
int b = encode(67890);
int c = decode(a);
int d = decode(b);
printf("%d,%d,%d,%d\n", a, b, c, d);
}
0238デフォルトの名無しさん
05/01/27 13:52:51調べたいのですが、一文字づつ0〜9までの値かどうか調べて、
ヒットしなかったら、アルファベットとしてエラーを返す方法以外に
あるでしょうか?
もっと簡単にできそうな気もするのですが、
へぼいロジックしか思いつきません…
0239デフォルトの名無しさん
05/01/27 14:02:57>>145
0240デフォルトの名無しさん
05/01/27 14:05:24[2] 問題文(含コード&リンク): 以下のソースを改良してPGM(P2 アスキー)で作動するように変換せよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=137
[3] 環境
[3.1] OS:
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C/C++/どちらでも可 のいずれか C言語
[4] 期限:年2005月1日30日まで/無期限 のいずれか
[5] その他の制限:
0241240
05/01/27 14:07:00よろしくおねがいします
0242デフォルトの名無しさん
05/01/27 14:32:32isdigitの引数が、int型になっているのですが、
char c[5]; 中身は1 1 1 1 1 とする
isdigit(atoi(c[0])); // forでnullまでまわす
見たいな感じで使用ですか?
0243デフォルトの名無しさん
05/01/27 14:34:340244デフォルトの名無しさん
05/01/27 14:36:03問題文を一文字一句、脚色せずにそのまま、ここに書け。
つうか質問テンプレ使えや。
0245デフォルトの名無しさん
05/01/27 14:46:090246デフォルトの名無しさん
05/01/27 14:48:01何にもわかってない。
atoi,isdigitをマニュアルでみろ
0247242
05/01/27 14:49:19for(i=0;;i++){
if(c_tmpbuf[i] == '\0'){
ShowMessage("文字の終了です");
break;
}
if(isdigit(c_tmpbuf[i]) == false){
ShowMessage("数値でない値が入っています");
break;
}
}
>>244
すいません。
課題じゃなくて疑問だったので、問題文ありません。
スレ違いだったかも…
0248デフォルトの名無しさん
05/01/27 14:53:21・各自の出身地の市区町村(データが入手できない場合には、現住所でもよい)について、
人口に関するデータを入手し、以下の問いを実施しなさい。
(1)現在の人口に関して、男女別、年代別の人口を表とグラフに表し、現状の感想を述
べよ。ホームページなどでグラフが用意されている場合も、いったん表計算にデータ
を取り込み、表とグラフを作成すること。余裕のある人は、感想にとどまらず、分析
を行うと良い。 (例えば近隣の市区町村や都道府県・全国と比較するなど)
(2)過去10年以上の総人口についてその推移状況を説明せよ。余裕のある人は、分析を
行うとよい。(例えば近隣の市区町村と比較する・変化の理由を述べるなど)
(3)過去10年以上のデータを用いて回帰分析を実地し、2010年・2020年の総人口を予測
せよ。また、その結果を考察せよ。余裕のある人は、複数の手法を用いて予測し、そ
の比較を行うとよい。
0249デフォルトの名無しさん
05/01/27 14:53:57�@)予測の基礎となるデータ(出典・データ数)
�A)予測手法(どのような回帰関数を用いたかなど)
�B)結果(グラフも用いること)
�C) 考察
・市区町村の将来像を予測する
・対策えお調べる
・対策を提案する ・・・・・・など
○補足
・人口データにつては、インターネット上の市区町村のページで検索するか、地元
の図書館など利用して調査すると良い。
・合併などによって10年以上のデータが得られない場合は、対応する地域のデータを
合計するなどして自分で作成すること。
・選択した地区町村について、選択した理由を記述すること。
0250デフォルトの名無しさん
05/01/27 14:54:580251デフォルトの名無しさん
05/01/27 14:55:19これC言語でやるの?
統計ライブラリ使わないの?
0252デフォルトの名無しさん
05/01/27 14:56:420253デフォルトの名無しさん
05/01/27 14:59:400254デフォルトの名無しさん
05/01/27 15:00:01「電卓 C言語 ソース 逆ポーランド」 で検索すれば、うじゃうじゃ出ます。
0255デフォルトの名無しさん
05/01/27 15:00:38ここはC/C++のスレです
消えて下さい
0256デフォルトの名無しさん
05/01/27 15:01:19式を使わない電卓なら三変数使って、入力した演算子ごとに処理を変えればできるはずだ
0257デフォルトの名無しさん
05/01/27 15:51:57授業単元 専門学校の「C言語実習」という講義名の宿題です
問題 お年玉付き年賀はがきの当選番号判定プログラム
当選番号は7桁で7桁以上入力はやり直し
1等 1 2 0 7 6 7
4 7 0 8 7 3
2等 下5けた 4 0 1 3 5
3等 下4けた 4 9 7 0
8 1 6 5
4等 下2けた 1 6
3 4
6 4
環境 VISUAL C++ ver6.0
WinXP
期限 2005年1月30日
なにとぞよろしくお願いします。
0258デフォルトの名無しさん
05/01/27 15:54:07入力と出力の仕様を書いてくれ
0259デフォルトの名無しさん
05/01/27 15:59:02番号はint使わずにchar配列に格納すればいい。
0260デフォルトの名無しさん
05/01/27 16:45:07short check(unsigned short _num) {
if (_num == 120767 || _num == 470873)
return 1;
else if (_num % 100000 == 40135)
return 2;
else if (_num % 10000 == 4970 || _num % 10000 == 8165)
return 3;
else if (_num % 100 == 16 || _num % 100 == 34 || _num % 100 == 64)
return 4;
else
return -1;
}
入出力の部分? 仕様がよく分からんからシラネ
0261デフォルトの名無しさん
05/01/27 17:01:35質問の仕方にも問題があるな。
プログラミング以前に直すべきところがある奴ばかりだな…
宿題を人にやってもらうって時点でまともな奴期待するのが悪いんだろうがな。
0262デフォルトの名無しさん
05/01/27 19:20:460263デフォルトの名無しさん
05/01/27 21:16:03回答が得られるんだと思うよ
0264デフォルトの名無しさん
05/01/27 22:36:340265デフォルトの名無しさん
05/01/27 22:56:25026632代目の330
05/01/27 23:07:400267デフォルトの名無しさん
05/01/27 23:09:42はあ?>>1を読めそんなことしたら読みづらくて仕方ないだろ>>1を読め
誰がそんなことやるんだよ>>1を読め
やるんならお前一人でやれ>>1を読め
0268デフォルトの名無しさん
05/01/27 23:26:23なるほどな>>1を読め。試してみるか>>1を読め。
0269デフォルトの名無しさん
05/01/27 23:44:06[2] 問題文(含コード&リンク): for文を使って、数字を次のようなピラミッド型に出力されるように
プログラムを作りなさい
1
222
33333
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:あさってまで
[5] その他の制限:
お願いしまっす
0270269
05/01/27 23:44:58222
33333
です
0271デフォルトの名無しさん
05/01/27 23:52:55027232代目の330
05/01/27 23:56:36027332代目の330
05/01/28 00:05:17#include <stdio.h>
int main(void) {
static const int n = 6;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i - 1; j++)
printf(" ");
for (int j = 0; j < 2 * i + 1; j++)
printf("%c", '0' + i + 1);
printf("\n");
}
}
0274デフォルトの名無しさん
05/01/28 00:07:30[1] 授業単元: プログラミングおよび演習
[2] 問題文(含コード&リンク)
(0、1)で一様分布する変数Xiから標準正規分布する変数Yiを作るには
次の式を用いる。
i=12
Yi=煤@Xi−6.0
i=1
rand()を用いて、Xiを12000個(Yiを1000個)発生させて作成したYiの分布を
*を用いた棒グラフにして示せ。
*1個を10個分とする。
[3] 環境
[3.1] OS: WindowsXP
[3.2] 言語:C
[4] 期限:明日まで
0275デフォルトの名無しさん
05/01/28 00:15:27#include <stdio.h>
int main(void) {
int i,j
for(i=1;i<=3;i++){
for(j=1;j<=3-i;j++){
ptrintf(" ");
}
for(j=1;j<=2*i-1;j++){
printf("%d",j);
}
printf("\n");
}
作ってみたものの本当に動くのか不安だ
0276デフォルトの名無しさん
05/01/28 00:16:120277269
05/01/28 00:20:49エラーが出ます。できません
0278デフォルトの名無しさん
05/01/28 00:33:30これなら?
#include <stdio.h>
#define n 6
int main(void) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i - 1; j++)
printf(" ");
for (int j = 0; j < 2 * i + 1; j++)
printf("%c", '0' + i + 1);
printf("\n");
}
return 0;
}
0279デフォルトの名無しさん
05/01/28 00:35:45あ、こっち。intの場所間違えた。
#include <stdio.h>
#define n 6
int main(void) {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n - i - 1; j++)
printf(" ");
for (j = 0; j < 2 * i + 1; j++)
printf("%c", '0' + i + 1);
printf("\n");
}
return 0;
}
0280269
05/01/28 00:40:36#define n 6
は、習ってないので使えません
0281デフォルトの名無しさん
05/01/28 00:43:38んじゃこっち。
#include <stdio.h>
int main(void) {
int i, j, n = 6;
for (i = 0; i < n; i++) {
for (j = 0; j < n - i - 1; j++)
printf(" ");
for (j = 0; j < 2 * i + 1; j++)
printf("%c", '0' + i + 1);
printf("\n");
}
return 0;
}
0282デフォルトの名無しさん
05/01/28 00:49:06int main(void){
int num, i, j, maxfloor=9;
for(num=1; num<=maxfloor; num++){
for(i=0; i<maxfloor-num; i++){
printf(" ");
}
for(j=1; j<num*2; j++){
printf("%d", num);
}
printf("\n");
}
}
余裕と思ったら以外とややこしかったな…
似たようなモンだけどやったのではっとく
0283269
05/01/28 00:54:11実行結果
1
123
12345
0284デフォルトの名無しさん
05/01/28 00:56:34今丁度実行して笑ったところだったw
0285269
05/01/28 00:57:36実行結果
1
222
33333
4444444
555555555
66666666666
0286269
05/01/28 00:59:23みたいな感じなプログラムにしてほしいんですけど
0287デフォルトの名無しさん
05/01/28 01:00:02ソースコードもこのくらいインデントやれよ
0288デフォルトの名無しさん
05/01/28 01:01:01おいこらちょっとまてーw
0289288
05/01/28 01:02:290290デフォルトの名無しさん
05/01/28 01:03:54>>275は打ち間違えたのか本気で間違っていたのかが気になるところだ
あとfor(j=1;j<=2*i-1;j++) は for(j=1;j<2*i;j++)の方がみやすいな
0291269
05/01/28 01:08:57#include <stdio.h>
int main(void) {
int i,j ;
for(i=1;i<=3;i++){
for(j=1;j<=3-i;j++){
printf(" ");
}
for(j=1;j<2*i;j++){
printf("%d",i);
}
printf("\n");
}
return 0;
}
0292デフォルトの名無しさん
05/01/28 01:11:57ここはお前の日記じゃね(ry
0293デフォルトの名無しさん
05/01/28 01:14:090294デフォルトの名無しさん
05/01/28 01:19:42誰か一緒に解いてください;;
0295デフォルトの名無しさん
05/01/28 01:20:17で、正規分布の方はだれかやってるのか?
お前がやれって?正規分布って何ですか?
0296デフォルトの名無しさん
05/01/28 01:20:23どこかにうpしる
0297デフォルトの名無しさん
05/01/28 01:21:13正規分布は全く同じ問題が前スレで出てたから俺が解いた。
0298デフォルトの名無しさん
05/01/28 01:27:43ここのスレの人から見たら楽な問題なのかもしれませんが
例えば
変数a,bとポインタp_a,p_bを宣言して
scanfで2つの数値をポインタに入力し大きいほうの変数の値を表示する。
こんな感じの問題がかなりあります。
0299デフォルトの名無しさん
05/01/28 01:30:410300デフォルトの名無しさん
05/01/28 01:31:17大量にあるならいちいちここに張られたら困るからな
0301294
05/01/28 01:41:33それじゃあ今からtxtに書きます。
0303281
05/01/28 01:45:200304デフォルトの名無しさん
05/01/28 01:47:57int i;
for(i=1; i<=3; ++i){
memset(buf,'0'+i,i*2-1);
printf("%*c%s\n",3-i+1,' ',buf);
}
0305274
05/01/28 01:51:54全スレ→前スレ
何度もすみません。
0306デフォルトの名無しさん
05/01/28 01:56:11まあ、いいじゃないか、べつにどのソースもかわらん
どうせもう居ないだろ
わざわざマジックナンバー増やしてるあたりがワロス
0307デフォルトの名無しさん
05/01/28 02:02:54>>294まだかな?寝ちゃうナリよ
0308294
05/01/28 02:06:15と>>298です。
読みにくいかも知れませんがよろしくお願いします。
0309デフォルトの名無しさん
05/01/28 02:06:57質問者がわかりやすいと思ったソースを書かせりゃいいんだよ
初心者には下手なコードの方が返って見やすかったりするもんだ
0310294
05/01/28 02:08:03全部ポインタを使ってお願いします。
0311デフォルトの名無しさん
05/01/28 02:15:43んで、おまいはどれくらい解いたのよ?
丸投げされても構わんけど、これくらい出来ないと後々辛いぞ。
0312デフォルトの名無しさん
05/01/28 02:19:11#include <stdio.h>
int main(){
int a, b, *pa=&a, *pb=&b;
*pa = 100;
*pb = 10;
printf("%d + %d = %d\n", a, b, a+b);
printf("%d - %d = %d\n", a, b, a-b);
printf("%d * %d = %d\n", a, b, a*b);
printf("%d / %d = %d\n", a, b, a/b);
return 0;
}
0313デフォルトの名無しさん
05/01/28 02:19:36悪い。ビール買いに行ってた。
ついでに前スレのは縦グラフだったので横グラフ化した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/140.txt
0315294
05/01/28 02:25:41解けた問題は省いたのですが
pr.8なら
while((str1++)!='\0');
でstr1の文字数数えて
s1--;
\0分引いて
while(((str1++)=(s2tr++))!='\0') ;
str1とstr2をともに動かしながらstr1に格納していく。
たぶんあってると思うんですが、
これをポインタを使ってとなるとつらいです・・・。
0316デフォルトの名無しさん
05/01/28 02:26:09#include <stdio.h>
int main(){
char c;
char* p_c;
c = getchar();
p_c = &c;
++c;
putchar(*p_c);
return 0;
}
0317デフォルトの名無しさん
05/01/28 02:27:26たとえばpr1だと
a=100; b=10; pa=&a; pb=&b; printf("%d+%d=%d\n",*pa,*pb,*pa+*pb);
なのか
pa=&a; pb=&b; *pa=100;*pb=10; printf("%d+%d=%d\n",a,b,a+b);
なのかわからん
0318デフォルトの名無しさん
05/01/28 02:27:45/*pr.3*/
#include <stdio.h>
int main(){
char s[] = "abcd";
puts(s);
return 0;
}
0319デフォルトの名無しさん
05/01/28 02:28:53/*pr.4*/
#include <stdio.h>
int main(){
char s[] = "abcde";
char s2[6];
strcpy(s2, s);
puts(s2);
return 0;
}
0320デフォルトの名無しさん
05/01/28 02:32:49>str1とstr2をともに動かしながらstr1に格納していく。
それ、ポインタって言うんじゃねーのか?
0321デフォルトの名無しさん
05/01/28 02:32:50配列つかうのもポインタと別にかわらんしなぁ
#include <stdio.h>
int main(){
char c[]={"abcd"};
char *pc=c;
printf("%s", pc);
return 0;
}
0322デフォルトの名無しさん
05/01/28 02:33:43str[i];i++;
ポインタを使って配列の中身を順番に参照する場合
*str++;
こう区別した方がわかりやすいか?
char *str_p; str_p=str; *str_p++
0324デフォルトの名無しさん
05/01/28 02:36:26(*pa)*(*pb) ;
(*pa)/(*pb);
0325デフォルトの名無しさん
05/01/28 02:41:00/*pr.5*/
#include <stdio.h>
int main(){
char s[] = "France";
char s2[7];
char *p = s, *p2 = s2;
int i = 0;
s2[6] = '\0';
for(i=0;i<6;++i)
{
p2[5-i] = p[i];
}
puts(p2);
return 0;
}
0326デフォルトの名無しさん
05/01/28 02:42:31char *str1_p,*str2_p;
str_p=&str1,str2_p=%str2;
を宣言して
str1とstr2の前に*をつければいいのかな?
0327デフォルトの名無しさん
05/01/28 02:46:04>str_p=&str1,str2_p=%str2;
なんかもう嫌になってきた
0328デフォルトの名無しさん
05/01/28 02:47:23#include <stdio.h>
int main(){
char s[] = "abcd efg h";
char *p = s;
while(*p)
*p == ' ' ? p++ : putchar(*p++);
}
0329デフォルトの名無しさん
05/01/28 02:48:510330デフォルトの名無しさん
05/01/28 02:49:44実行結果
input:abcde
output:5
*/
#include <stdio.h>
int main(){
char c[256], *pc=c;
int i;
gets(pc);
for(i=0; *pc++!='\0';i+=(*pc!=' '));
printf("%d", i);
return 0;
}
0331デフォルトの名無しさん
05/01/28 02:52:48/*pr.7*/
#include <stdio.h>
int main(){
int i = 0, c;
while((c = getchar()) != EOF && c != '\n')
c != ' ' && ++i;
printf("%d\n", i);
}
0333デフォルトの名無しさん
05/01/28 02:59:05/*pr.8*/
#include <stdio.h>
int main(){
char str1[128];
char str2[128];
fgets(str1, 128, stdin);
fgets(str2, 128, stdin);
if(strlen(str1) + strlen(str2) >= 127))
puts("長すぎて問題文に従うと連結不能");
else
{
strcat(str1, str2);
puts(str1);
}
return 0;
}
0334294
05/01/28 03:05:190335デフォルトの名無しさん
05/01/28 03:14:48/*pr.8*/
#include <stdio.h>
#include <string.h>
int main(){
char str1[128], *p_str1=str1;
char str2[128];
fgets(str1, 128, stdin);
fgets(str2, 128, stdin);
while(*p_str1++ != '\n');
*--p_str1='\0';
if(strlen(str1) + strlen(str2) >= 127)
puts("長すぎて問題文に従うと連結不能");
else
{
strcat(str1, str2);
puts(str1);
}
return 0;
}
0336デフォルトの名無しさん
05/01/28 03:24:000337デフォルトの名無しさん
05/01/28 03:26:42>>334がんばれよ〜ノシ
0338デフォルトの名無しさん
05/01/28 03:35:42大丈夫だと思います。
それと、申し訳ないのですが
pr.4、ポインタ使っているバージョンお願いできる方いませんか?
>>298もお願いできますでしょうか?
0339デフォルトの名無しさん
05/01/28 03:44:10まだ大学1回なのでここの人にとっては簡単と…
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
線形リストをつかって数字を入力→入力された数字をソート→表示する。
更にそれをファイルに保存されるようにしなさい。
教授の口頭での説明だったのでわかりにくいと思いますが、これでお願いします。
点数足りない人への救済措置のなのでやばいです…
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ(バージョン): bcc32
[3.3] 言語:C
[4] 期限:2005/01/28
[5] その他の制限: なし
0340デフォルトの名無しさん
05/01/28 03:55:20stringライブラリを使っていいといいなら、なぜ>>319ではダメだというんだ
strcpyを使用しているんだからポインタを使っているだろう
pr8もstrcat使えば一発なんだがな
後pr7ではisspaceの使用はOKなのか?
0341デフォルトの名無しさん
05/01/28 03:59:08期限が今日中か
せめてもう半日はやく来いよ
線形リストの中身はどうなっているんだ?
ソートの方法に指定はないのか?
0342デフォルトの名無しさん
05/01/28 04:04:00ポインタと配列って似てるけどちがうので注意
ポインタは自分自身の値を変えることが出来るが、
str[]のstrは固定だから*str++はできない。
strがポインタなら問題ない。
正しくは*str+i;i++;
と、つっこんでみる。
が、>>321でアホなことを言ってた自分…すっかり忘れ取ったorz
0343デフォルトの名無しさん
05/01/28 04:05:50ついさっきまで悪戦苦闘したんですが無理だったのできたんですが、やっぱ遅かったですかね…。・゚・(ノД`)・゚・。
ソートに指定はないです。
とりあえずちゃんとソートされればどの方法でもいいって言ってました。
線形リストの中身は何も言ってなかったので自己判断でいいとおもいます。
0344デフォルトの名無しさん
05/01/28 04:12:140345デフォルトの名無しさん
05/01/28 04:14:470346294
05/01/28 04:15:26今までstdioとstringしか使ったことないので使用はNGだと思います。
strcpyも便利だと思いましたねぇ。
>>319はポインタ*p_sを使ってお願いします
0347デフォルトの名無しさん
05/01/28 04:33:59リストのソートは
http://www.context.co.jp/~cond/books/algo/
にあるね。(ダウンロードできる)
がんば。
0348339
05/01/28 04:46:25検索してもんですがこんなとこにあったんですね。
ありがとうございます。
これのlist15-2ですよね?
なんかエラー「Error: 外部シンボル '_main'が未解決」とでるんですけどこれは一体なんなんでしょうか?
0349デフォルトの名無しさん
05/01/28 05:08:24[2] 問題文(含コード&リンク):
次の要素の構造体を作り、動的メモリを用いてデータを3個確保しなさい。
要素A: int型 [ID](商品のID)
要素B:Char型 [name](商品の名称)
要素C: short型 [category](商品カテゴリ→ 食品なら[0]、その他なら[1])
*入力時は「名称」「カテゴリー」を入力するように設計すること。また、商品IDデータの格納は0番から自動的に入力します
*データを入力後、全てのデータをコンソールへ出力し、最後にメモリを解放してください
[3] 環境
[3.1] OS:Windows xp Home
[3.2] コンパイラ(バージョン):VisualStudio.Net2003
[3.3] 言語:C++
[4] 期限:2005年01月30日
[5]
構造体のデータとなる商品は、指定が無いので自由です。
初心者むけのソースであれば助かります。
どうぞよろしくお願いします。
0350デフォルトの名無しさん
05/01/28 05:10:06#include <stdio.h>
int main(){
char s[] = "abcde";
char s2[10];
char *p_s, *p_s2;
p_s = s;
p_s2 = s2;
while(*p_s){
*p_s2 = *p_s;
p_s++;
p_s2++;
}
*p_s2 = '\0';
printf("%s\n", s2);
return 0;
}
0351デフォルトの名無しさん
05/01/28 09:09:42#include <iostream>
struct Ware
{
int ID;
char name[256];
short category;
};
main()
{
Ware *wares = new Ware[3];
using namespace std;
for(int i=0; i<3; ++i)
{
wares[i].ID = i;
cout << "商品名入力:";
cin >> wares[i].name;
cout << "商品カテゴリ入力(食品:0,その他:1)";
cin >> wares[i].category;
}
for(int i=0; i<3; ++i)
cout << "ID:" << wares[i].ID << " 商品名:" << wares[i].name << " カテゴリ:"
<< (!wares[i].category ? "食品" : "その他") << endl;
delete[] wares;
}
0352デフォルトの名無しさん
05/01/28 12:13:090353デフォルトの名無しさん
05/01/28 12:27:16[2] 問題文(含コード&リンク):
全部で、3000個程の小数を書き込んだ(1行ずつ改行した)、
テキストファイルから、最大値を求めたいです。
ネットで、「n個の最大値を入力して求める」プログラムを見つけましたが、
とても3000個は入力できません。
どうか、そのプログラムを教えて下さい。
テキストファイルについて、
本当は.datファイルで
-100.68 #2003/10/05 21:51:24
-102.81 #2003/10/05 21:51:34
-101.54 #2003/10/05 21:51:44
ずっと3000行程続いていて、左の値の最大値を知りたいです。
お願いします。
[3] 環境
[3.1] OS: XP Home
[3.2] コンパイラ(バージョン): LSI C-86 Ver3.30試食版
[3.3] C言語
[4] 期限:2005年1月29日
[5] その他の制限:ありません
0354デフォルトの名無しさん
05/01/28 12:37:340355デフォルトの名無しさん
05/01/28 12:39:00>とても3000個は入力できません。
リダイレクトって知ってる?
0356デフォルトの名無しさん
05/01/28 12:42:28すみません。
先程、指摘を受けて、
書き込む前に、こちらに書き込むお断りをしたのですが。
掲示板に不慣れで、どう対処すればいいか分かりませんでした。
0357デフォルトの名無しさん
05/01/28 12:45:00「リダイレクト」は分からないです。
0358デフォルトの名無しさん
05/01/28 12:51:41sort -g なんとか.dat | tail -1
第一項以外表示したくないなら
sort -g なんとか.dat | tail -1 | awk '{print $1}'
か
sort -gr なんとか.dat | awk 'NR == 1 {print $1}'
0359デフォルトの名無しさん
05/01/28 12:58:36「MS-DOS リダイレクション」で検索。
fopen fgets sscanfを調べろ。
最大値をdouble型の最小値か、リストの第1要素の値として、forループで読み込んだ値に従って最大値を補正していけ。
0360デフォルトの名無しさん
05/01/28 13:00:33XP初心者には無理
0361デフォルトの名無しさん
05/01/28 13:23:31#include <stdio.h>
int main(void) {
char line[1000];
double val, max = -99999;
while (fgets(stdio, line, sizeof(line)) {
if (sscanf(line, "%lf", &val) == 1 && val > max)
max = val;
}
printf("max = %f\n", max);
return 0;
}
実行方法は、コマンドラインから
C:\>progname <datafile.dat
としてみてくれ。
prognameと、datafile.datは作った実行ファイル名と、用意されたデータファイル名にしてね
0362デフォルトの名無しさん
05/01/28 13:32:12#include <stdlib.h>
int main(){
FILE *fp;
char str[100];
double f, max;
if ((fp = fopen("data.dat", "r")) == NULL) exit(1);
if(fgets(str, 256, fp) != NULL)
sscanf(str, "%lf", &max);
while (fgets(str, 256, fp) != NULL) {
sscanf(str, "%lf", &f);
if(max < f) max = f;
}
fclose(fp);
if ((fp = fopen("data.dat", "r")) == NULL) exit(1);
while (fgets(str, 256, fp) != NULL) {
sscanf(str, "%lf", &f);
if(max == f) printf("%s", str);
}
fclose(fp);
return 0;
}
0363デフォルトの名無しさん
05/01/28 14:02:41まず、お答え下さった、皆様本当にありがとうございました。
>>362様のプログラムで、無事に求めるもとができました。
求めるdatファイルがたくさんあるので、プログラミングなしでは、
どーしようもありませんでした。
自分では作ることができませんでしたし。
どなたか分かりませんが、大変感謝しております。
ありがとうございました。
0364デフォルトの名無しさん
05/01/28 14:47:290365デフォルトの名無しさん
05/01/28 15:57:48char str[256];
0366C言語超初心者
05/01/28 17:29:24どんなプログラムを組めばいいのですか?
具体的に書くとCRC32が「fecd71de」になる文字列を探しています。
文字数は5〜8文字で探しています。
C言語の達人様、ソースをご教授ください。お願いいたします。m(_ _)m
0367デフォルトの名無しさん
05/01/28 17:52:50まず "A" のハッシュを調べ、期待する値と比べる
次に "B" のハッシュを調べ、期待する値と比べる
次に "C" のハッシュを調べ、期待する値と比べる
・・・中略
次に "AAAAAAAA" のハッシュを調べ、期待する値と比べる
・・・以下略
0368デフォルトの名無しさん
05/01/28 18:12:22それしかないよな…。
0369デフォルトの名無しさん
05/01/28 18:37:33http://www.google.co.jp
0370デフォルトの名無しさん
05/01/28 18:40:35よし俺が作ってやろう
0371デフォルトの名無しさん
05/01/28 18:55:350372デフォルトの名無しさん
05/01/28 19:07:100373デフォルトの名無しさん
05/01/28 19:15:58暗号じゃないよー
0374デフォルトの名無しさん
05/01/28 19:17:12アホだww
暗号を解読するのに総当たりしかないと思っているアホ発見www
0375デフォルトの名無しさん
05/01/28 19:26:490376デフォルトの名無しさん
05/01/28 19:28:580377デフォルトの名無しさん
05/01/28 19:29:45お前見てて痛いぞ
つまんないレス付ける暇があるなら
きっちり指摘した根拠を示せよ。
0378デフォルトの名無しさん
05/01/28 19:47:490379デフォルトの名無しさん
05/01/28 19:50:09アホだww
イヤミと煽りで、相手の反応を楽しむという個人的な楽しみ方なんだよwww
0380デフォルトの名無しさん
05/01/28 19:50:330381デフォルトの名無しさん
05/01/28 19:52:54アホだww
まだ総当たりなんて原始的な方法しか知らないなんてwww
0382デフォルトの名無しさん
05/01/28 19:53:03いまのところはね。
将来総当り以外の素因数分解方法が発見される可能性はある。
0383デフォルトの名無しさん
05/01/28 19:54:120384デフォルトの名無しさん
05/01/28 19:54:180385デフォルトの名無しさん
05/01/28 19:56:080386C言語超初心者
05/01/28 20:04:01しかし、私はなんとも情けない超初心者でして、どうゆうプログラムを
組めば街頭CRC32(fecd71de)になる文字列を見つける事ができるのか分かりません。
答えの一例として、「ah15HFy」及び「hNbNqN」がある。という事だけ知らされています。
他にも答えは沢山あるようです。
何卒、ソースをご教授ください。お願いいたします。m(_ _)m
0387デフォルトの名無しさん
05/01/28 20:04:12これは素数?
0388デフォルトの名無しさん
05/01/28 20:08:030389デフォルトの名無しさん
05/01/28 20:08:19てか他の答えが知りたいだけならC言語なんて知らなくても、
公式から逆算するだけでしょ?
0390C言語超初心者
05/01/28 20:23:10レスありがとう御座います。
公式から逆算する方法を具体的にご教授いただけませんか?
よろしくお願いいたします。
0391デフォルトの名無しさん
05/01/28 20:28:49素数判定プログラムで判定すれば?
0392デフォルトの名無しさん
05/01/28 20:49:25素数ではありません。45801,4650847などで割り切れます。
0393392
05/01/28 20:56:11こんな感じ
316746541384631384351381321968131357468543246984135468
743549681654846468463168135746873516854521685416574987
496465130321654803036124657469877641113
=45801*4650847*3291084669907603651
*45182037627040529163511300901849543599685872922569880
353788290459929632519709223910805922998153973810295248
9868294629
0394デフォルトの名無しさん
05/01/28 22:10:113291084669907603651
とか
45182037627040529163511300901849543599685872922569880
353788290459929632519709223910805922998153973810295248
9868294629
は素数?
0395392
05/01/28 22:12:020396392
05/01/28 22:14:040397デフォルトの名無しさん
05/01/28 22:25:390398デフォルトの名無しさん
05/01/28 23:08:45「ファイル中の文字数,単語数,行数をカウントするプログラムを作成せよ。
単語の切れ目はアルファベット以外の文字、行の終わりは改行文字または
ファイルの終端とします。」
0399デフォルトの名無しさん
05/01/28 23:14:590400デフォルトの名無しさん
05/01/28 23:25:310401デフォルトの名無しさん
05/01/29 00:13:23#include <stdio.h>
#include <conio.h>
#include <ctype.h>
int main(){
int ch, line_num = 0, char_cnt = 0, word_cnt = 0, flag = 0;
char filename[30] = "test.txt";
FILE *fp;
fp = fopen(filename, "r");
if (!fp){
printf("ファイルオープンエラー\n");
} else {
while( (ch = fgetc(fp)) != EOF ){
if (ch == '\n') line_num++;
if (isalpha(ch)){
char_cnt++;
flag = 1;
} else {
if (flag == 1){
word_cnt++;
}
flag = 0;
}
}
fclose(fp);
}
printf("文字数=%d 単語数=%d 行数=%d\n", char_cnt, word_cnt, line_num);
return 0;
}
0402デフォルトの名無しさん
05/01/29 00:25:58UNIXや最新技術に興味のある人や
プログラマー・SEになりたい人・業界に興味のある人あつまれ!
http://off3.2ch.net/test/read.cgi/offevent/1105369044/
0403デフォルトの名無しさん
05/01/29 01:33:11>ご教授いただけませんか?
ということは、提示しただけじゃダメなんだよね?
教えるのは面倒だからパス。
0404デフォルトの名無しさん
05/01/29 01:37:19それを辞書式順序でソートした結果をファイルに出力するプログラムを作れ
・ファイルの入出力にはfopen,fclose,fscanf,fprintf を用いること
・データはファイルから読み込みソート結果はファイルに出力すること
・プログラムは以下の3つの関数に分割して作成すること
◎データを文字列配列に読み込む関数
◎ソートする関数
◎ソート結果をファイルに出力する関数
書いてみました↓、ですが何故か実行しようとするとエラーが出ます
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/143.txt
勿論test.txtにも何も書かれてません 助けてください
0405デフォルトの名無しさん
05/01/29 01:48:30・fopen()のエラーを折角チェックしているのに処理を継続しては台無し。
・fscanf()の戻り値は、「何個変換できたか」チェックするべき。
・defineマクロは大文字で書くのが慣習。
・mojiはポインタの配列だから、そのままではfscanf()で文字列を変換する目的に使えない。
・慣れないうちは、少々面倒でも必ずブロック化({})しておいたほうがいい。
・sort_dateって、何故日付けが関係する?
・できればファイル書き込みのエラーチェックもしよう。
0406404
05/01/29 02:07:58ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/144.txt
修正してみました、ですがコンパイルエラーで「sortcheck2.c 34:問題のあるポインタの変換」
と出てしまい、実行もエラーが出てしまいます。
0407デフォルトの名無しさん
05/01/29 02:13:13349の書き込みの者です。
ご回答下さってありがとうございます!
理想的なソースで、本当に助かりました
ありがとうございました。
0408デフォルトの名無しさん
05/01/29 02:29:31あんた馬鹿ぁ?
指摘されたところを表面だけ辻褄合わせるように修正するのではなく、頭使いなさいよ。
0409デフォルトの名無しさん
05/01/29 02:39:36複素数を含んだ双曲関数(sinh,cosh,tanh)の計算をしたいのですが、どのようにしたらようでしょうか?何かアイディアがあればお願いします。
ヘッダファイルを用い、複素数の和、差、積、商、平方根、絶対値、指数関数については定義済みで、動作確認もされています。
0410デフォルトの名無しさん
05/01/29 02:46:01スレ違い。
0411デフォルトの名無しさん
05/01/29 02:51:56sinh ix = i sin x
あとは加法定理使え。
0412410
05/01/29 03:03:36ちなみに
sinh (A+ iB) = sin A + i sin B
とは、なりませんよね?
それと加法定理からとは
e^(x) - e^(-x)
sinhθ=--------------------
2
ということでしょうか?
しかし、スレ違いということですので、この質問は無視していだだいて結構です。
0414410≠412
05/01/29 03:08:500415デフォルトの名無しさん
05/01/29 03:16:290416デフォルトの名無しさん
05/01/29 03:17:11cosh(z) = 1/2 (exp(z) + exp(-z))
tanh(z) = sinh(z) / cosh(z) = (exp(z) - exp(-z)) / (exp(z) + exp(-z))
指数関数が定義済みならこれで自分でできるはずだろ。
0418デフォルトの名無しさん
05/01/29 03:19:580419409
05/01/29 03:21:28A=complex(1,2);
B=complex(3,-4);
X=sinh(A)*tanh(B);
を計算させたいのですが…
グダグダになっててすみません。
0421409
05/01/29 03:22:07馬鹿ばっか。。。。
0422デフォルトの名無しさん
05/01/29 03:23:03で、Cなの?C++なの?
0423409
05/01/29 03:23:550424デフォルトの名無しさん
05/01/29 03:25:361/2 (exp(A) - exp(-A)) * (exp(B) - exp(-B)) / (exp(B) + exp(-B))
でいいだろ。
0425409
05/01/29 03:26:22ちなみにC++です
0426デフォルトの名無しさん
05/01/29 03:28:06C++にはcomplexクラスがあるが、それを使わないで自前でするって事ですね?
それともcomplexクラスを使うの?
0427デフォルトの名無しさん
05/01/29 03:29:43std::complex<double> A(1, 2), B(3, -4), X;
X = std::sinh(A) * std::tanh(B);
0428デフォルトの名無しさん
05/01/29 03:31:50まず、マルチ先に謝ってこいハゲ。
0429デフォルトの名無しさん
05/01/29 03:34:22わかってるよわかってるけど言いたい年頃なの
0430デフォルトの名無しさん
05/01/29 03:34:46あんたがマルチするからぐだぐだになってるんでしょうが。
0431デフォルトの名無しさん
05/01/29 03:36:19それから、その自作の複素数を扱うクラスもできればどこかにうpしてくれ。
そうでないと、どう答えていいものやらわからない。
0432409
05/01/29 03:38:28class complexのことですか?
勉強不足でして、これについてはわかりません。
ちなみに、424で実行してみます。
大変参考になりました。ありがとうございました。
0433953
05/01/29 03:54:58[2] 問題文: A= 1 +i bとし、bを1から500まで1刻みで増加させ
sinh(A),cosh(A),tanh(A)およびsinh(A)*cosh(A)
を計算し、出力させるプログラムを作りなさい。
[3] 環境
[3.1] OS: Win XP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C++
[4] 期限:2005年1月31日まで
[5] その他の制限:
0434409
05/01/29 03:55:52[1] 授業単元: C言語
[2] 問題文: A= 1 +i bとし、bを1から500まで1刻みで増加させ
sinh(A),cosh(A),tanh(A)およびsinh(A)*cosh(A)
を計算し、出力させるプログラムを作りなさい。
[3] 環境
[3.1] OS: Win XP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C++
[4] 期限:2005年1月31日まで
[5] その他の制限:
0435デフォルトの名無しさん
05/01/29 04:15:35授業単元がC言語なのに、言語はC++なの?コンパイラがC++なんじゃ
なくて?
0436409
05/01/29 04:20:29正式な授業名はプログラミング演習です
0437デフォルトの名無しさん
05/01/29 04:26:15そんなのExcelで十分、帰りなさい
0438デフォルトの名無しさん
05/01/29 04:48:33これじゃいかんのか?
#include <cmath>
#include <iostream>
struct complex {
complex(double real, double imag) : r(real), i(imag){}
double r, i;
};
const complex operator*(const complex& w, const complex& z)
{return complex(w.r * z.r - w.i * z.i, w.r * z.i + w.i * z.r);}
complex sinh(const complex& x)
{return complex(std::sinh(x.r) * std::cos(x.i), std::cosh(x.r) * std::sin(x.i));}
complex cosh(const complex& x)
{return complex(std::cosh(x.r) * std::cos(x.i), std::sinh(x.r) * std::sin(x.i));}
complex tanh(const complex& x)
{return complex(std::sinh(2 * x.r) / std::cosh(2 * x.r) + std::cos(2 * x.i), std::sin(2 * x.i) / std::cosh(2 * x.r) + std::cos(2 * x.i));}
std::ostream& operator<<(std::ostream& o, const complex& c)
{return o << c.r << "+i(" << c.i << ')';}
int main() {
for (int b = 1; b <= 500; ++b) {
complex A(1, b);
std::cout << sinh(A) << ',' << cosh(A) << ',' << tanh(A) << ',' << sinh(A) * cosh(A) << std::endl;
}
}
0439デフォルトの名無しさん
05/01/29 04:48:52お前は何を言ってry
0440409
05/01/29 05:11:18如何せん勉強不足なため、構造体についての知識は多少はあるのですが
クラス等については分かりません。
せっかく438さんが作っていただいたプログラムの内容の理解が現時点
では難しいので、少し待っていただけますか?
同じような事の繰り返しのようですし、ようは置き方(定義)分かればと
いったところでしょうか?
0441デフォルトの名無しさん
05/01/29 05:38:33a.txtの中身は、↓
----------------
2002
Chicago
Adrien Brody
The Pianist
Nicole Kidman
The hours
2001
A Beautiful Mind
Denzel Washington
Training Day
Halle Berry
Monster's Ball
2000
Gladiator
Russell Crowe
Gladiator
Julia Roberts
Erin Brockovich
----------------
です。複数年のデータセットが空行で区切られて並べられているます。
さらに人物の名前 (first name または family name)をキーボードから入力し,リスト中に名前が
存在する場合には,、受賞年、フルネーム,、作品名を表示するプログラムを作ってください。さらに,、その作品が
Best Picture Awardを受賞していれば,、その旨も表示するようにしてください。 また、ループを用いて
"quit" を入力するまで何度でも実行できるようにしてください。お願いします。
C言語です。
0442441
05/01/29 05:40:14Denzelと入力したら、
→ Denzel Washington, 2001 Actor in a Leading Role in "Training Day" となるようにお願いします。
0443デフォルトの名無しさん
05/01/29 05:54:48映画のデータを扱うとは渋いのう。
0444デフォルトの名無しさん
05/01/29 06:02:44>>1
0445409
05/01/29 06:06:57皆さん、アドバイスありがとうございました。
0446デフォルトの名無しさん
05/01/29 06:58:260447441
05/01/29 11:03:39[2] 問題文: >>440-441
[3] 環境
[3.1] OS: Win XP
[3.2] コンパイラ(バージョン): cygwin
[3.3] 言語:C
[4] 期限:2005年1月31日まで
[5] その他の制限:
すいません、テンプレ書き忘れてました。よろしくお願いします。
0448441
05/01/29 11:04:530449デフォルトの名無しさん
05/01/29 11:17:30配列a[]の型は構造体?
0450441
05/01/29 11:33:57えっと、まず
char first_name[サイズ2]
char family_name[サイズ2]
char film[サイズ3] /* 作品名 */
これらの情報を格納する構造体leading_roleを宣言して、次に
int year
char best_picture[サイズ1] /* Best picture award */
struct leading_role actor /* Actor in a Leading Role */
struct leading_role actress /* Actress in a Leading Role */
これらの情報を格納する構造体 academy_awardsを宣言して、
>>441の映画のデータをa.txt に保存してstruct academy_awards型の配列a[]に
データを読み込む感じが理想です。文字列のサイズは問題の起きない程度に設定してください。
後から付け足す感じになってしまって申し訳ございません。
0451デフォルトの名無しさん
05/01/29 11:46:160452441
05/01/29 11:48:16あ、すいませんm(_ _)m
0453デフォルトの名無しさん
05/01/29 13:35:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/145.c
XP持ってないんでXPでは試してないけど。
0454453
05/01/29 13:45:40main最後に
clearNodeaList();
を追加して。
0455441
05/01/29 14:15:13お疲れ様です。どうもありがとうございます。
ところで、コンパイルしたところエラーは無く正常に動作はしたのですが、
# File Read Errorのメッセージしか出ないです。すいませんが、どうしてでしょうか?
0456デフォルトの名無しさん
05/01/29 14:29:020457デフォルトの名無しさん
05/01/29 14:29:30mainの引数にするか入力させろよw
0458453
05/01/29 14:43:41書くのめんどくさかったんでdefineにしちゃった。
0459デフォルトの名無しさん
05/01/29 14:55:29バカ!そこは「バグじゃないです、仕様です」だろ?
0460453
05/01/29 15:13:210461デフォルトの名無しさん
05/01/29 15:21:10バカ!バカ!まんこ!
0462441
05/01/29 17:27:53すいません、C勉強し始めた初心者の俺にはどこが悪いのかわけわかめです。
改良してもう1度うpしてください。お願いします。
0463デフォルトの名無しさん
05/01/29 18:17:08もう一度勉強して出直して下さい。改良はもうたくさんです。
0464デフォルトの名無しさん
05/01/29 18:19:24一応つられてみる
c:ドライブの直下に a.txt を置け
0465デフォルトの名無しさん
05/01/29 19:16:41[2] 問題文(含コード&リンク):
貯金を500万円している。年利0.9%とすると10年でいくらになるか。
6ヶ月ごとの額を表示する。
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ(バージョン):gcc Developer station 2000
[3.3] 言語:C
[4] 期限:1月末日まで
[5] その他の制限:
年利は12で割って0.075で計算してよいとのことです。
複利で1月から初めて一月目から利子をかけるという風にやろうとしています。
前スレ959で一度質問させていただいているのですが、
1年目 6月
12月
2年目 6月
12月
このように表示したいと思っています。
が、未だにどうやればよいものか考えています。
そこで再度質問させていただきます。
どうかご教授願います。
0466デフォルトの名無しさん
05/01/29 20:07:28[2] 問題文(含コード&リンク):
問題1:冷蔵庫(購入価格はソースに明記)を1月1日から使用し、10年後までの購入価格と電気代の総計日別推移を求めるソースを作りなさい。
問題2:また、先ほどの電気代とは別に、一回扉を開けるごとに発生する使用料(1円)がある。
一日に10回開閉すると考え、購入価格と電気代の総計において、最も安くなるのは何日後かを求めるソースを作りなさい。
問題2の作成をお願いします。
*問題1のソースはできあがっていますので、良かったら使ってやって下さい。(アップローダを使用しています)
コチラとなります→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=146
最も安くなる=「購入金額から元を取れた」ということだと思います。
ややこしい問題文ですが、何卒よろしくお願いします。
[3] 環境
[3.1] OS:Windows xp Home
[3.2] コンパイラ(バージョン):VisualStudio.Net2003
[3.3] 言語:C++
[4] 期限:2005年01月31日
[5]
かじった程度なので、問題1のソースは汚いです。
直した方がいい箇所がございましたら、教えて頂けると助かります。
回答頂けます場合は、初心者むけのソースであれば助かります。
どうぞよろしくお願いします。
0467デフォルトの名無しさん
05/01/29 20:29:22問題の意味がまったくわからん。
ソース読んでも分からん。謎。
0468デフォルトの名無しさん
05/01/29 20:53:16冷蔵庫A(高価だけど省電力)と冷蔵庫C(安価だけど電気喰う)を比べて
何日以上使えば、Aの方がお得とかそういうことなのか?
あと関連のあるデータは構造体にまとめる。
struct refrigerator{
int price;
int electricityBill;
};
とか。
0469デフォルトの名無しさん
05/01/29 20:54:16なぜ安いって表現なのかわからんが
一日ごとに10+常にかかる電気代
A:13*日数 + 148000
B:20*日数 + 99800
C34*日数 + 44200
これ書いてるうちに
Aの冷蔵庫がCの冷蔵庫よりお徳になったときって問題じゃね?
って思えてきたんだけど
0471デフォルトの名無しさん
05/01/29 22:00:03>>468 様
>>469 様
わかりづらくて本当にすいません。
本文から随分と噛み砕いて載せてはみたのですが・・
自分の文章力のせいでご迷惑をおかけしてしまい、本当にすいません。
>>468様、>>469様のおっしゃるとおり、
「AとBとCのうち、使っていって
何日目にA(高価だけど省電力)がBやCと比べて一番お得になるか」
を求めるプログラムです。(講師に電話で確認を取りました。)
あと、構造体を使うとのご指摘ありがとうございました。
今から使って作ってみます。
0472デフォルトの名無しさん
05/01/29 22:14:25#include <stdio.h>
int main(void)
{
double deposit = 5000000;
unsigned year, month;
for (year = 1; year <= 10; ++year) {
for (month = 1; month <= 12; ++month) {
deposit = deposit * 1.00075;
if (!(month % 6)) {
printf(month == 6 ? "%2u年目" : " ", year);
printf(" %2u月 %.0f\n", month, deposit);
}
}
}
return 0;
}
0473デフォルトの名無しさん
05/01/29 22:18:20int main(){
DWORD price_A = 148000,price_B = 99800,price_C = 44200;
DWORD day_A = 13,day_B = 20,day_C = 34;
//まずはAとBの比較
DWORD price_diff = price_A - price_B;
DWORD day_diff = day_B - day_A;
DWORD day = price_diff / day_diff + 1;
printf("%d日でA = %d円 B = %d円\n",day,price_A+day_A*day,price_B+day_B*day);
//次にAとCの比較
price_diff = price_A - price_C;
day_diff = day_C - day_A;
day = price_diff / day_diff + 1;
printf("%d日でA = %d円 C = %d円\n",day,price_A+day_A*day,price_C+day_C*day);
}
0474473
05/01/29 22:19:41iostreamはよく理解してないんでCで作っちゃった適当に直しといて
0475デフォルトの名無しさん
05/01/29 22:35:22それっておかしくね?
((元金*1.00075)*1.00075)…=元金*1.0009にはならないっしょ
1.0090372179693092036204172481965 = 9%程度になるわけだが
0476475
05/01/29 22:36:430477デフォルトの名無しさん
05/01/29 22:39:460478デフォルトの名無しさん
05/01/29 23:24:100479デフォルトの名無しさん
05/01/30 00:43:450480デフォルトの名無しさん
05/01/30 00:45:060481デフォルトの名無しさん
05/01/30 01:40:30元のソースで使ってるのかと考えて
元のを見るのがよだきくなって突っ込むのを止めた。
0482デフォルトの名無しさん
05/01/30 01:43:38↑
何語?
0483デフォルトの名無しさん
05/01/30 01:44:580484デフォルトの名無しさん
05/01/30 02:02:200485デフォルトの名無しさん
05/01/30 02:44:05ちなみに標準語だと「だるい」とか「つかれた」とかいう意味ね。
0486デフォルトの名無しさん
05/01/30 03:15:02[2] 問題文(含コード&リンク):整数係数の多項式 f(x) が与えられたとき、そのk次の係数を配列要素f[k]に格納することにより
f(x)を表現するものとし、例えば、f(x)=7 x^5 - 6x^4 + x^3 + 2x + 1の表現はf[]={1, 2, 0, 1, -6, 7}となります。
係数を格納した配列f[]が与えられたときに、これが表す多項式を表示する関数 voidpolynomial_print(int f[])を作成お願いします。
マクロ変数Mを定義し、M-1次の多項式まで扱えるようにしてください。Mの値は6でお願いします。
係数はキーボードから与え、係数は最下位から順に入力するものとします。例えば、
2 3 4 5 6 7 → 7 x^5 + 6 x^4 + 5 x^3 + 4 x^2 + 3 x + 2
-2 -3 -4 -5 -6 -7 → -7 x^5 - 6 x^4 - 5 x^3 - 4 x^2 - 3 x - 2
-1 0 0 0 0 0 → -1
0 0 0 0 0 0 → 0
こんな風になるようにお願いします。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ(バージョン): bcc 32
[3.3] 言語:C
[4] 期限:2005年1月31日
[5] その他の制限:
0487デフォルトの名無しさん
05/01/30 07:11:02以下の二つを守っていただければ幸いです。よろしくお願いします。
1.縦横100*100のウィンドウ内に描くこと。
2.適当な大きさの円(例えば半径30くらい)に内接する三角形
を描画する。
0488デフォルトの名無しさん
05/01/30 07:31:46環境を書けと。
0489デフォルトの名無しさん
05/01/30 08:09:35http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/147.c
意外と長くなってしまった。
0490デフォルトの名無しさん
05/01/30 08:26:23MATXというVC+6.0と連動して(.net非対応)動くソフトを使うために必要なのです。
秋葉歩いても何処にも見つからず、途方に暮れています。
売っている場所知っている方いらっしゃいませんか?
あと.NETのspoke premium と.NET アカデミックのに入ってるライブラリは
同じものでしょうか?(削られていないだろうか・・)
0491デフォルトの名無しさん
05/01/30 08:28:09オークションを探してみたら?
0492デフォルトの名無しさん
05/01/30 08:30:02激安で買えるVisual Stdio.NET theSpoke Disc.9
http://pc5.2ch.net/test/read.cgi/tech/1103381010/
0493486
05/01/30 08:47:26ありがとうございます!
0494487
05/01/30 11:10:59以下の二つを守っていただければ幸いです。よろしくお願いします。
1.縦横100*100のウィンドウ内に描くこと。
2.適当な大きさの円(例えば半径30くらい)に内接する三角形
を描画する。
申し訳ありません、環境…。
OS:WindowsXP、Microsoft Visual C++ 6.0、C言語でお願いします。
0495デフォルトの名無しさん
05/01/30 11:15:54ウインドウ自体なら、ウイザードを使って出すことができるよ。
後は、WM_PAINTの辺りを書き換えるだけだ。
0496デフォルトの名無しさん
05/01/30 11:23:12Cで、ということはWin32APIを使用して、ということでいいのかな?
私はMFC使いだからパスだけど。
1.100*100とは単位は画素? それともその他の寸法単位?
2.は内接する三角形は形を問わないのかな? 問わないなら直角二等辺三角形が楽だろう。
0497デフォルトの名無しさん
05/01/30 11:24:04文盲ですか? それとも自分に都合の悪い情報は切り捨ててしまえる能天気な方ですか?
0498デフォルトの名無しさん
05/01/30 11:25:46(50, 50)を中心とする半径30の円なら、例えば(50, 20)-(20, 50)-(80, 50)だね。
0499487
05/01/30 11:46:55はい、お願いします。
>1.100*100とは単位は画素? それともその他の寸法単位?
ピクセル…って言うんですかね。intで定義してokみたいです。
あまり参考にならないかもしれませんが・・・。
2.は内接する三角形は形を問わないのかな? 問わないなら直角二等辺三角形が楽だろう。
はい、楽なやつで構いません。どうぞよろしくお願いします。
0500デフォルトの名無しさん
05/01/30 12:00:21もう一度>1を読み直して、与えられた課題を寸分違わず書き下してみてくれ。
0501デフォルトの名無しさん
05/01/30 12:00:330502487
05/01/30 15:32:13[2] 問題文(含コード&リンク): 以下の二つの条件を満たし、プログラムを
完成させよ。1.縦横100×100のウィンドウ内に描くこと。
2.適当な大きさの円(例えば半径30くらい)に内接する三角形
を描画する。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ(バージョン): Microsoft Visual C++ 6.0
[3.3] 言語:C
[4] 期限:2005年01月31日まで
よろしくお願いします。
0503デフォルトの名無しさん
05/01/30 16:00:52あんた馬鹿?
それとも釣り?
授業でWindowの描画について、なにか教わってないの?
0504487
05/01/30 16:15:57釣りではありませんが。
0505デフォルトの名無しさん
05/01/30 17:10:34ほらよ。
WinMainの中に全部書いた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/148.txt
0506デフォルトの名無しさん
05/01/30 17:15:43ウィンドウサイズは100x100だよ。
0507デフォルトの名無しさん
05/01/30 17:17:21http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/149.cpp
0508507
05/01/30 17:21:10× py[i] = (int)(cr * cos(k) + cy);
○ py[i] = (int)(cr * sin(k) + cy);
0509デフォルトの名無しさん
05/01/30 17:23:23それにしても醜いソースだな。隙間空ければ見やすいと思ってるんだろか。
0511デフォルトの名無しさん
05/01/30 17:25:21おまけに、LineTo()到達点にMoveTo()してるし。
0512デフォルトの名無しさん
05/01/30 17:28:22逆。
規模が小さければ大域変数でも、さほど見通しが悪くはならない。
0513デフォルトの名無しさん
05/01/30 17:30:48確かに幼稚なソースだが>>509=>>511のほうが幼稚
0514487
05/01/30 17:35:510515デフォルトの名無しさん
05/01/30 17:53:11だな。
>>507 と良く似た書き方する香具師は何人も見たことある。
0516デフォルトの名無しさん
05/01/30 17:54:52http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/148.txt
0517デフォルトの名無しさん
05/01/30 18:02:48自分、VCを使う事があるが、ファイルの新規作成で
「C++ソースファイル」はあっても、「Cソースファイル」は無いから、
拡張子を入力しないとC++になるけど、気にせずコーディングしていた。
それと似たような感じではないのかな。
>>511
C+Win32API+SDKの勉強サイトの、猫とか創作とかでも普通に使われている。
グローバル変数を使わないとしても、結局ローカル変数でもstaticに
しないといけないという、この製作法の組みにくさ自体にも問題があると思う。
MFCを使わせるための、MSの陰謀なのかもしれない。
0518デフォルトの名無しさん
05/01/30 18:07:59ソートするデータは{9,4,10,8,20,4,-3,8}
宣言した変数・配列が一番少なく&&一番容量の少なかった奴にマビノギ垢やる
8時までだ、スタート
0519デフォルトの名無しさん
05/01/30 18:09:500520デフォルトの名無しさん
05/01/30 18:09:510521デフォルトの名無しさん
05/01/30 18:13:360522デフォルトの名無しさん
05/01/30 18:13:39│ ヽ( ,_ノ`)ノ 残念 私のおいなりさんだ
│ へノ /
└→ ω ノ
>
0523デフォルトの名無しさん
05/01/30 18:15:51んじゃ文字数でいいよ
forだったら3文字みたいに
0524デフォルトの名無しさん
05/01/30 18:16:32while(c=fgetc(fp)!=EOF)
???;
ファイルの中身を表示するには
???には何を記述したらよいのでしょうか?
0525デフォルトの名無しさん
05/01/30 18:18:010526デフォルトの名無しさん
05/01/30 18:18:27ただし、c=fgetc(fp)を括弧でくくってからな
0527デフォルトの名無しさん
05/01/30 18:19:010528524
05/01/30 18:20:37無事できました。
0529デフォルトの名無しさん
05/01/30 18:21:12はは、俺と似てるや。
俺もスペース少なすぎる人だ。(インデントはしっかり取るけど)
0530デフォルトの名無しさん
05/01/30 18:26:57だからといって、座標値までグローバルにする必要はないとは思わないかね。
0531デフォルトの名無しさん
05/01/30 18:27:58bekijyou(int a,int b);
main()
{
int m,n;
long kotae;
printf("数値1?");
scanf("%d",&m);
printf("数値2?");
scanf("%d",&n);
kotae=bekijyou(m,n);
printf("%dの%d乗 %ld\n",m,n,kotae);
}
bekijyou(int a,int b)
{
long data;
data=(long)a^b;
return data;
}
数値1と2のべき乗を出す関数を作りたいのですがうまくできませんでした。
直すべき所を教えてくださいm(_ _)m
0532デフォルトの名無しさん
05/01/30 18:30:190533デフォルトの名無しさん
05/01/30 18:30:43[2] 問題文(含コード&リンク):
次のソースコードをANSI規格のcのコードに直せ。
また、なぜそのようにしたか理由を書け。
unsigned char *a;
a = new unsigned char[100];
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ(バージョン):gcc/g++
[3.3] 言語:c/c++
[4] 期限:明日の朝9時30分
[5] その他の制限:なし
a = (unsigned char*)malloc(sizeof(100));
だと思って試しに
int i;
for(i = 0;i<100;i++){
unsigned char *p = a;
*p = i
p++;
}
と要素を代入しようと思ったら途中でcoredumpしました。
多分根本的にnewとmallocの違いを理解していないだけかもしれませんが、
どうかよろしくお願いします。
0534532
05/01/30 18:31:17532は無かったことに(恥
0535デフォルトの名無しさん
05/01/30 18:31:46a = malloc(100);
0536デフォルトの名無しさん
05/01/30 18:32:09data=a;
for(i=1;i<b;i++){
data*=a;
}
0537デフォルトの名無しさん
05/01/30 18:32:50Cだと ^ はXORを意味する。
http://www.kouno.jp/home/c_faq/c14.html#7
0538デフォルトの名無しさん
05/01/30 18:33:14でもだめか?
それから
unsigned char *p = a;
はループの外に出せ。
0539デフォルトの名無しさん
05/01/30 18:33:49data=1;
for(i=0;i<b;i++){
data*=a;
}
0542デフォルトの名無しさん
05/01/30 18:52:11#include<stdio.h>
int d[] = {9,4,10,8,20,4,-3,8};int f(int*b,int i){int*p=b+1;if(i<2)return 0;
if(*b>*p){*p^=*b;*b^=*p;*p^=*b;return 1;}return f(p,i-1);}int main()
{while(f(d,8));for(int i=0; i<8; i++)printf("%d\n", d[i]);return 0;}
// 229文字
0543デフォルトの名無しさん
05/01/30 19:18:17コンパイルエラー残念(MicrosoftVisualC++)
0544デフォルトの名無しさん
05/01/30 19:21:57#include<stdlib.h>
int a(int *b,int *c){return *c-*b;}int main(){int b[]={9,4,10,8,20,4,-3,8},i;qsort(b,8,4,a);for(i=0;i<8;i++)printf("%d ",b[i]);return 0;}
// 172文字
0545デフォルトの名無しさん
05/01/30 19:52:35警告5個
提出できないから却下
もう自分で作るからいいや・・・
>>542,543
おつかれthx
0546294
05/01/30 19:53:39upするので解いてくださる方いませんか?
0547デフォルトの名無しさん
05/01/30 19:56:44上げなければ絶対に誰も答えてくれない
0548294
05/01/30 20:00:46とりあえずファイルに対する問題だけをupしてみました。
よろしくお願いします。
0549デフォルトの名無しさん
05/01/30 20:13:36○投げが基本か。
0550デフォルトの名無しさん
05/01/30 20:15:580551デフォルトの名無しさん
05/01/30 20:22:12とりあえず1だけ
void copyfile(FILE* in,FILE* out){
long filesize;
fseek(in,0,SEEK_END);
filesize = ftell(in);
void* buf = malloc(filesize);
fseek(in,0,SEEK_SET);
fread(buf,filesize,1,in);
fwrite(buf,filesize,1,out);
free(buf);
}
void main(){
char inn[260],outn[260];
FILE *in,*out;
gets(inn);
gets(outn);
in = fopen(inn,"rb");
out = fopen(outn."wb");
// if(in == NULL || out == NULL){
// //エラー処理するならここで
// }
copyfile(in,out);
}
書いたあとに気が付いたけど授業とか用のソースじゃないね
0552551
05/01/30 20:23:260553551
05/01/30 20:26:24fwrite(buf,filesize,1,stdout);
と逃げてみる
0555デフォルトの名無しさん
05/01/30 20:40:33#include <stdlib.h>
int main(){
FILE *fpsrc, *fpdest;
char str[256],src[256],dest[256];
printf("コピー元:");
scanf("%s", src);
printf("コピー先:");
scanf(" %s", dest);
if ((fpsrc = fopen(src, "r")) == NULL) { puts("error"); exit(1);}
if ((fpdest = fopen(dest, "w")) == NULL) { puts("error"); exit(1);}
while (fgets(str, 256, fpsrc) != NULL) {
fputs(str, fpdest);
}
fclose(fpsrc);
fclose(fpdest);
if ((fpsrc = fopen(src, "r")) == NULL) { puts("error"); exit(1);}
while (fgets(str, 256, fpsrc) != NULL) {
printf("%s",str);
}
fclose(fpsrc);
return 0;
}
0556デフォルトの名無しさん
05/01/30 20:44:40#include <stdlib.h>
int main(){
FILE *fpsrc;
char str[256],src[256];
int n;
printf("ファイル名:");
scanf("%s", src);
if ((fpsrc = fopen(src, "r")) == NULL) { puts("error"); exit(1);}
n = 0;
while (fgets(str, 256, fpsrc) != NULL) {
n++;
printf("%d: %s", n, str);
}
fclose(fpsrc);
printf("行数: %d",n);
return 0;
}
0557294
05/01/30 20:47:41構造体に対する問題です。
お願いいたします。
0558551
05/01/30 20:49:18最適解だとは思うが…
マシな解答は>>555のお方に任せるとして
最後に
out = fopen(outn."wb");
->out = fopen(outn,"wb");
だったorz
適当に組むとバグいぱーいだな俺orz
0559デフォルトの名無しさん
05/01/30 20:58:212問ともどうもありがとうございました。
0561デフォルトの名無しさん
05/01/30 21:11:15それをやってきたら3、4くらいはやってやるけど
0562デフォルトの名無しさん
05/01/30 21:13:001,2か1,3のどっちかの出来たらでもいいや
0563294
05/01/30 21:14:000564294
05/01/30 21:18:35今までやってわからなかった問題を途中ですがupしました。
0565デフォルトの名無しさん
05/01/30 21:19:49つまんね。
0566294
05/01/30 21:19:570567デフォルトの名無しさん
05/01/30 21:27:15とりあえずつっこむがincludeだけ使用可ってなによ…
まぁ、前のを見た感じ
基本入出力(stdio)以外のヘッダは使うなってことだろうけど
0568デフォルトの名無しさん
05/01/30 21:34:48[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
1、二部探索木を作成して間順走査(降順)で表示させる。(降順に並べ表示させるだけでいい。)
2、データの追加と削除が出来ること。
[3] 環境
[3.1] OS:Win XP
[3.2] 開発環境:Visual C++ .NET
[3.3] 言語:C
[4] 期限:1月中
[5] その他の制限:特になし。
よろしくお願いします。
0569デフォルトの名無しさん
05/01/30 21:40:56こんな問題です。
ランダムアクセスのプログラムは、超簡単なものでいいと思います。
お願いします!
0570デフォルトの名無しさん
05/01/30 21:42:13・質問は必ず【質問テンプレ】に従ってください
【アップローダー】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
0571294
05/01/30 21:47:03#include<stdio.h>
struct syouhin_data{
char name[20];
int tanka;
int kosuu;
long kingaku;
};
main()
{
long data;
struct syouhin_data syouhin1={"シャープペンシル",500,3,0};
data=(syouhin1.tanka)*(syouhin1.kosuu);
syouhin1.kingaku=data;
printf("商品名:%s\n",syouhin1.name);
printf("単価:%d\n",syouhin1.tanka);
printf("個数:%d\n",syouhin1.kosuu);
printf("金額:%f\n",syouhin1.kingaku);
}
1をやってみましたが、途中で処理がとまってしまいました。
kingakuを出すところで止まってると思うんですが、
ご教授お願いします。
あと、個数:0なっていますが、3の間違いです。
0572デフォルトの名無しさん
05/01/30 21:53:140573デフォルトの名無しさん
05/01/30 21:53:50#include <stdio.h>
int main(){
struct syouhin_data{
char name[20];
int tanka;
int kosuu;
long kingaku;
};
struct syouhin_data shohin1 = {"シャープペンシル", 500, 3, 0};
shohin1.kingaku = shohin1.tanka * shohin1.kosuu;
printf("商品名:%s\n", shohin1.name);
printf("単価:%d\n", shohin1.tanka);
printf("個数:%d\n", shohin1.kosuu);
printf("金額:%d\n", shohin1.kingaku);
return 0;
}
0575デフォルトの名無しさん
05/01/30 22:00:44pr2
#include <stdio.h>
int main(){
(省略)
struct syouhin_data shohin1 = {"シャープペンシル", 500, 3, 0} ,*shouhin1_p;
shouhin1_p=&syouhin1;
shohin1_p->kingaku = shohin_p->tanka * shohin1_p->kosuu;
printf("商品名:%s\n", shohin1_p->name);
printf("単価:%d\n", shohin1_p->tanka);
printf("個数:%d\n", shohin1_p->kosuu);
printf("金額:%d\n", shohin1_p->kingaku);
return 0;
}
0576デフォルトの名無しさん
05/01/30 22:02:14syouhinとかshouhinを全部shohinに直しておいてくれorz
0577デフォルトの名無しさん
05/01/30 22:07:31>期限:一月中
って明日までかよ
書き方から察するに結構前に出された課題みたいだけど、途中まででもやってある?
制限は特になしとあるが、書きかけのソースをみると制限らしきものが見えたりすることもあるからな
0579568
05/01/30 22:18:22ある程度作りましたが間順操作で表示させる関数が出来ません。
削除・追加は手付かずです。
ソースはアップローダにうpしておきます。
0580569
05/01/30 22:19:13お、お願いします
0581デフォルトの名無しさん
05/01/30 22:22:153日なら十分時間があるじゃないか。
なに?努力する気もないわけ?
そんなやつに手を貸してやるなんてばかばかしいな。
0582デフォルトの名無しさん
05/01/30 22:34:05Cほとんど知らなく、必死で入門書読んでるのですが
さっぱりで・・・ポインタやらなんやらでてきて
わけわからんとです
0583デフォルトの名無しさん
05/01/30 22:44:490584デフォルトの名無しさん
05/01/30 22:45:560585568
05/01/30 22:51:27#include <stdio.h>
#include <stdlib.h>
typedef struct nodedata
{
int data;
struct nodeta *left;
struct nodeta *right;
}node;
node * newdata(int data)
{
node * now;
now=(node *)malloc(sizeof(node));
now->data=data;
now->left=NULL;
now->right=NULL;
return now;
}
0586568
05/01/30 22:52:05void treeAdd(node * now,int data)
{
if(now->data >data)
{ if(now->left!=NULL)
{treeAdd(now->right,data);}
else
{now->right=newdata(data);}
}
else
{ if(now->right!=NULL)
{treeAdd(now->right,data);}
else
{now->right=newdata(data);}
}
return;
}
0587デフォルトの名無しさん
05/01/30 22:52:21・関数名のなかに-使うのってどうよ
・Product ってなに?
・nodeta? nodedataっしょ
・three?treeではないか?
んでコンパイルとおったよ
0588デフォルトの名無しさん
05/01/30 22:52:51/*木構造を表示させる関数(間順走査) ここが上手くいかない*/
void three-kanjyun(Product *now)
{
if(now==NULL) return;
three-kanjyun(now->left);
printf("%d\n",treeAdd);
three-kanjyun(now->right);
}
void main(void)
{
node * head;
int i,data[7]={100,50,80,30,200,150,250};
head=newdata(-1);
for(i=0;i<7;i++)
treeAdd(head,data[i]);
}
0589デフォルトの名無しさん
05/01/30 22:56:36することがあるのだけれども、その点はどうしたらよいのかな?
0590デフォルトの名無しさん
05/01/30 22:57:270591デフォルトの名無しさん
05/01/30 22:58:10むしろ予期せぬ動作してくれるのはテキストモードじゃね?
0592569
05/01/30 22:59:38[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/157.txt
です。
[3] 環境
[3.1] OS:Win XP
[3.2] 開発環境:Visual C++ 6.0
[3.3] 言語:C
[4] 期限:あと3日
[5] その他の制限:特にないです。
どうぞよろしくお願いします!
0593294
05/01/30 23:01:003できました。
ソースは
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/160.txt
本当は5つぐらいメンバを代入しないといけないので
とてもながくなってしまいました。
printfもセンスないですが;;
0594デフォルトの名無しさん
05/01/30 23:04:14バイナリモードならfsetpos
0595デフォルトの名無しさん
05/01/30 23:05:17構造体配列を用いていないので、3番の条件を満たしていない
0596294
05/01/30 23:08:550597294
05/01/30 23:24:05struct syouhin_data{
char name[20];
int tanka;
int kosuu;
long kingaku;
};
main(){
int goukei,i;
struct syouhin_data syouhin[5]={
{"シャープペンシル",500,3,0},
{"エンピツ",30,10,0},
{"消しゴム",50,20,0},
{"サインペン",150,7,0},
{"定規",150,6,0},
};
goukei=0;
for(i=0;i<5;i++){
syouhin[i].kingaku=syouhin[i].tanka*syouhin[i].kosuu;
goukei+=syouhin[i].kingaku;
}
for(i=0;i<5;i++){
printf("商品名:%s\n",syouhin[i].name);
printf("単価:%d\n",syouhin[i].tanka);
printf("個数:%d\n",syouhin[i].kosuu);
printf("金額:%d\n",syouhin[i].kingaku);
}
printf("\n合計金額=%d\n",goukei);
}
pr3,これでいいでしょうか?
0598568
05/01/30 23:26:40ソースはうpローダにうpしておきました。
0599デフォルトの名無しさん
05/01/30 23:31:11void tree_kanjyun(nodedata *now)
この行ではエラーが出て
void treeAdd(node * now,int data)
この行ではエラーが出てません
さて問題はなんでしょう
0600294
05/01/30 23:50:00#include<stdio.h>
struct syouhin_data{
char name[20];
int tanka;
int kosuu;
long kingaku;
};
main(){
int goukei,i;
struct syouhin_data syouhin[5]={
{"シャープペンシル",500,3,0},
{"エンピツ",30,10,0},
{"消しゴム",50,20,0},
{"サインペン",150,7,0},
{"定規",150,6,0},
};
struct syouhin_data *sp;
sp=syouhin;
goukei=0;
for(i=0;i<5;i++){
++sp;
sp->kingaku=sp->tanka*sp->kosuu;
goukei+=sp->kingaku;
}
0601デフォルトの名無しさん
05/01/30 23:50:38++sp;
printf("商品名:%s\n",sp->name);
printf("単価:%d\n",sp->tanka);
printf("個数:%d\n",sp->kosuu);
printf("金額:%d\n",sp->kingaku);
}
printf("\n合計金額=%d\n",goukei);
}
pr4やってみたのですが、
表示がえらいことになってしまいます;;
0602デフォルトの名無しさん
05/01/30 23:55:55longを使ってるから金額の指定子は%dより%ldのほうがいいのかも
たぶん
0603デフォルトの名無しさん
05/01/30 23:56:23++sp;の位置を考えろ
0604294
05/01/30 23:59:42うまくいきません・・。
0605デフォルトの名無しさん
05/01/31 00:01:37for(i=0;i<5;i++){
sp->kingaku=sp->tanka*sp->kosuu;
goukei+=sp->kingaku;
++sp;
}
for(i=0;i<5;i++){
--sp;
printf("商品名:%s\n",sp->name);
printf("単価:%d\n",sp->tanka);
printf("個数:%d\n",sp->kosuu);
printf("金額:%d\n",sp->kingaku);
}
順番変わるけど
0606568
05/01/31 00:02:48void tree_kanjyun(nodedata *now)をvoid tree_kanjyun(nodedata *now,int data)にしてみましたがエラーがなくなりません。
0607デフォルトの名無しさん
05/01/31 00:04:14printf("%d\n",treeAdd);
何がやりたいんだ?
0609デフォルトの名無しさん
05/01/31 00:07:43もうちょっとnode *nowとnodedata *nowの違いについて考えて欲しい
構造体についてぐぐって初心に帰ってみるのも手かも
0610デフォルトの名無しさん
05/01/31 00:12:39sp->kingaku=sp->tanka*sp->kosuu;
goukei+=sp->kingaku;
++sp;
};
sp=syouhin;
for(i=0;i<5;i++){
printf("商品名:%s\n",sp->name);
printf("単価:%d\n",sp->tanka);
printf("個数:%d\n",sp->kosuu);
printf("金額:%d\n",sp->kingaku);
};
0611デフォルトの名無しさん
05/01/31 00:17:380612デフォルトの名無しさん
05/01/31 00:19:25sp++;
};
0613デフォルトの名無しさん
05/01/31 00:19:474倍に拡大しなさい。
1 5 8 13 8
0614デフォルトの名無しさん
05/01/31 00:20:23prコード表を作れっていうのは、どの環境においてもJISコードで文字が
表示されるようにせよって事か?
0615デフォルトの名無しさん
05/01/31 00:25:59わり、pr1のことね。
0617デフォルトの名無しさん
05/01/31 00:34:05#include <stdio.h>
int main(void) {
int temp = 0, sum = 0, count = -1;
while (temp != -999) {
++count;
sum += temp;
printf("data?:");
scanf("%d", &temp);
}
printf("goukei=%d\nheikin=%f", sum, (double)sum / count);
}
>>616
いやそういうことじゃない。例えばもし君の環境がWindowsだったとすると、
普通に作ればJISではなくShift-JISコードで表示されるから、JISで表示する
ためには変換が必要になる。その変換の内容が実行環境によって変わって
くるんでね。
0618617
05/01/31 00:37:440619デフォルトの名無しさん
05/01/31 00:44:07pr2
#include <stdio.h>
int main(void) {
int temp = 0, sum = 0, count = 0;
while (1) {
printf("data?:");
scanf("%d", &temp);
if (temp == -999) break;
++count;
sum += temp;
}
printf("goukei=%d\nheikin=%f", sum, (double)sum / count);
}
pr3
#include <stdio.h>
int main(void) {
int a, b = 1;
while (1) {
printf("data1?:"); scanf("%d", &a);
printf("data2?:"); scanf("%d", &b);
if (a == -999 || b == -999)
break;
if (b != 0) {
printf("%d/%d=%dあまり%d\n", a, b, a / b, a % b);
}
}
return 0;
}
*/
0621デフォルトの名無しさん
05/01/31 00:52:42main(){
int n,i=0;
for(n=32;n<=126;n++){
printf("%c=%2x ", n, n);
i++;
if(i%10==0) printf("\n");
}
}
0622デフォルトの名無しさん
05/01/31 00:56:38#include <stdio.h>
int main(void) {
char c;
for (c = 32; c <= 126; c++) {
printf("0x%X %c ", c & 0xff, c);
if ((c - 32) % 10 == 9) printf("\n");
}
return 0;
}
0623294
05/01/31 01:00:49ありがとうございます。
JISコード表見たときちょっと感動しました
0624294
05/01/31 01:14:18これで最後です。
解いてくださる方お願いします。
0625デフォルトの名無しさん
05/01/31 01:25:47#include <stdio.h>
int main(void) {
double a, b, *p_a = &a, *p_b = &b;
printf("a?:");
scanf("%lf", p_a);
printf("b?:");
scanf("%lf", p_b);
printf("max = %f", a < b ? b : a);
return 0;
}
0626デフォルトの名無しさん
05/01/31 01:29:27まみくん!ダメじゃないか。
0627デフォルトの名無しさん
05/01/31 01:31:56#include <stdio.h>
int main(void) {
int i, j, n = 0, temp, a[]={10, 25, 7, 45, 2, 100, 3, 70, 50, -1};
while (a[n] != -1) n++;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (a[j + 1] < a[j]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
for (i = 0; i < n; i++) printf("%d ", a[i]);
return 0;
}
0628デフォルトの名無しさん
05/01/31 01:36:45#include <stdio.h>
void func(const char *str1, const char *str2, char *buf){
int i;
while(*str1){
*buf = *str1;
str1++;
buf++;
}
while(*str2){
*buf = *str2;
str2++;
buf++;
}
*buf = '\0';
}
int main(){
char s1[100], s2[100], buf[200];
gets(s1);
gets(s2);
func(s1, s2, buf);
printf("%s\n", buf);
return 0;
}
0629デフォルトの名無しさん
05/01/31 01:38:23#include<stdio.h>
#define kBufferSize (256)
int main(void){
char line1[kBufferSize];
char line2[kBufferSize];
printf("文字列1を入力\n");
fgets(line1,kBufferSize,stdin);
printf("文字列2を入力\n");
fgets(line2,kBufferSize,stdin);
printf( "%s\n",StringCat(line1,line2) );
retunr 0;
}
void StringCat(char *s1, const char *s2){
while ( ( *s1++ ) != '\0' ){
;
}
s1--;
while ( ( ( *s1++) = (*s2++) ) != '\0' ){
;
}
}
0630デフォルトの名無しさん
05/01/31 01:39:180631デフォルトの名無しさん
05/01/31 01:39:54すみませんが、pr7は関数を使って
pr8は関数を使わないでと書き忘れました;;
申し訳ありません。
0632デフォルトの名無しさん
05/01/31 01:40:270634デフォルトの名無しさん
05/01/31 01:57:04#include <stdio.h>
int main(void) {
char input1[256], input2[256], buf[256];
int i = 0, j = 0;
printf("文字列1?"); scanf("%s", input1);
printf("文字列2?"); scanf("%s", input2);
while (input1[i] != '\0') {
buf[i] = input1[i];
i++;
}
while (input2[j] != '\0') {
buf[i] = input2[j];
i++; j++;
}
buf[i] = '\0';
printf("%s", buf);
}
0635デフォルトの名無しさん
05/01/31 01:59:22#include <stdio.h>
void sort(int* a) {
int i, j, n = 0, temp;
while (a[n] != -1) n++;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (a[j + 1] < a[j]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
int main(void) {
int i, a[]={10, 25, 7, 45, 2, 100, 3, 70, 50, -1};
sort(a);
for (i = 0; a[i] != -1; i++) printf("%d ", a[i]);
return 0;
}
0637デフォルトの名無しさん
05/01/31 02:08:34リクエストが来た時間(開設時をゼロとする)と,処理にかかった時間が書かれている.
リクエスト到着時間_処理時間
1.42423_2.53556
5.24524_6.35352
13.43663_9.59301
16.93821_5.23428
・
・
このサーバは1台で運営しているが,ログからわかるように,次のリクエストがくる前に
前のリクエストを処理し終わらないと,『待ち』の状態が起きる。
これを3台のサーバで運営するした場合,このログデータを使って,
3台ともに待ち状態を最小限にするためには,どのような振り分けプログラムを作ればいいか?
ログデータの見方は,3行目を例にとると,
サーバ開設13.43663秒後,処理に9.59301秒かかるリクエストが来た。
ということである。
つまり,処理に9秒以上かかるのにその3秒後に4行目のリクエストが着てしまうので,
この場合『待ち』状態になってしまう。
0638デフォルトの名無しさん
05/01/31 02:12:35お前の敬語は一体どうなっているのだと小一時間(ry
0640デフォルトの名無しさん
05/01/31 02:19:26pr4と5の「複数回入力可能」が上限固定値でいいのか(例えば1024回まで)
メモリが許すだけなのかによって内容が大幅に変わって来るんだが、
どっちだ?
0643639
05/01/31 02:24:300645639
05/01/31 02:36:330646デフォルトの名無しさん
05/01/31 02:38:090647デフォルトの名無しさん
05/01/31 02:38:14ソースコードは例えば、
BOB ORI
A NMD
B NMD
BEGIN IO 0, A
とこんな感じで続くのですが このソースファイルをまず、vectorに保存して
それから 一行づつ、扱っていこうと思うのですが 一行づつに分けた後、
タブで分けられた 単語を、それぞれ分けて扱わなければならないと思うのですが、
それはどのようにして、すればよいのでしょうか?
例えば、String a = BOB ORI
となると、このa から BOB と ORI を抜き出す方法が分かりません。
何か便利な方法があれば 教えてください。 やはり自分でメゾッド作るしかないでしょうか。
なるべくコードをシンプルにしたいので。。。
0648デフォルトの名無しさん
05/01/31 02:45:59stringstream
sscanf
strtok
あと死ね。
0649デフォルトの名無しさん
05/01/31 02:49:470651デフォルトの名無しさん
05/01/31 02:55:11#include <stdio.h>
int main(){
int num, index[1024], i = 0, j;
do{
printf("Input :");
scanf("%d", &num);
if ( (num >= 0) && (num <= 6) ){
index[i] = num;
i++;
}
}while(num != -999);
for (j = 0; j < i; j++){
switch(index[j]){
case 0: puts("日曜"); break;
case 1: puts("月曜"); break;
case 2: puts("火曜"); break;
case 3: puts("水曜"); break;
case 4: puts("木曜"); break;
case 5: puts("金曜"); break;
case 6: puts("土曜"); break;
}
}
return 0;
}
0653デフォルトの名無しさん
05/01/31 03:17:48例としては「車が走っている様子」や「公園を歩いてる様子」などです。
自分の力では全く分かりませんので、よろしければお願いしたいです。
[1] 授業単元:3DCG
[2] 問題文(含コード&リンク):TinyFKを利用したアニメーションを作る。
ttp://www.teu.ac.jp/aqua/~earth/FK/
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C++
[4] 期限:2005年2月7日24:00まで
[5] その他の制限: 作品の解説が必要。
(下記の技術をどのように用いているか)
0654653
05/01/31 03:18:28・平行光源、点光源両方の作成と利用(2点)
・オイラー角を用いた制御(2点)
・アップベクトルを用いた制御(1点)
・モデルの座標軸以外の任意軸回転(2点)
・パンカメラ処理(1点)
・オービットカメラ処理(1点)
・トラックカメラ処理(1点)
・ドリーカメラ処理(1点)
・ティルトカメラ処理(1点)
・ウォークスルーカメラ処理(2点)
・フライスルーカメラ処理(2点)
・速度・加速度の概念の利用(2点)
・力の概念の利用(3点)
・反射の利用(3点)
・摩擦の利用(2点)
・二直線の交点計算の利用(3点)
・平面と直線の交点の利用(3点)
・キー入力の利用(1点)
・テクスチャマッピングの利用(2点)
・曲面テクスチャマッピングの生成(3点)
・十字型配置テクスチャマッピングの利用(2点)
・ビルボードテクスチャマッピングの利用(3点)
・マウス入力の利用(2点)
・GUI部分(ボタン)の利用(3点)
0655653
05/01/31 03:19:55長々となってしまいました。。。
やって頂けたら幸いです。
心優しい方、よろしくお願いしますm(_ _)m
0657デフォルトの名無しさん
05/01/31 03:40:330658デフォルトの名無しさん
05/01/31 03:43:13#include <string.h> だけ使っていい?
0660デフォルトの名無しさん
05/01/31 03:48:13http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/165.txt
0661647
05/01/31 03:50:28また別の質問なのですが、 vector <string> に assignでソースコードを保存していくと
タブの部分で切れて それぞれ別のstringに保存されてしまうのですが これを一行まとめて一つのstringに保存していく方法を 教えてください。。
0662294
05/01/31 03:57:32ありがとうございました。
解いてくださった皆さんのおかげで
すべて課題が終わりました。
>>660さん、遅くまで付き合ってくれて
本当に、ありがとうございます。
課題に全部目を通してから寝ますー
0663デフォルトの名無しさん
05/01/31 03:58:23それはassingで保存する前から別のstringになってるんじゃないか?
0664647
05/01/31 04:08:57ifstream inputfile(argv[1]);
vector <string> source;
source.assign(istream_iterator<string>(inputfile),istream_iterator<string>());
}
こんな感じでassignまで至っているのですが inputfileに
AVG ORI
という様な内容のファイルを渡したら、 source.at(0)="AVG", source.at(1)="ORI" という
様になってしまうっぽいです。これを、どうにか source.at(0)="AVG ORI" という事には
できないですか?
getlineで一行づつ読んでいくことも考えたのですが、できればvectorを使いたいと思いまして。。
0665つーか、宿題じゃないだろ
05/01/31 04:34:09もう一度言う。
死ね。
0666637
05/01/31 05:21:130667デフォルトの名無しさん
05/01/31 05:35:130668デフォルトの名無しさん
05/01/31 06:59:260669637
05/01/31 07:12:210670デフォルトの名無しさん
05/01/31 09:26:50マニピュレータ弄れ
0671デフォルトの名無しさん
05/01/31 09:27:59何が問題なのかさえ分かりません。
日本語から勉強し直したらどうですか?
0672デフォルトの名無しさん
05/01/31 11:12:28std::vectorとstd::getline()を組み合わせればいいじゃん。
0673デフォルトの名無しさん
05/01/31 13:13:16[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
1、スタックに int型のデータを積む関数pushu_a と、取り出す関数pop_aおよび、その関数を使用するmainを作成せよ。
2、スタックは配列変数を用いて実現し、最大100個まで記憶するものとする。
3、配列、スタックポインタはグローバル変数として宣言する。
[3] 環境
[3.1] OS:Win XP
[3.2] 開発環境:Visual C++ .NET
[3.3] 言語:C
[4] 期限:1月中
[5] その他の制限:特になし。
よろしくお願いします。
0674673
05/01/31 13:14:340675デフォルトの名無しさん
05/01/31 13:18:340676デフォルトの名無しさん
05/01/31 13:49:39[2] 問題文(含コード&リンク):
1. 「探索」のプログラムを「リスト構造」を利用して作成せよ。
2. 「ソート」のプログラムを「リスト構造」を利用して作成せよ。
授業中に利用したアルゴリズムの中からリスト構造の扱いに向いたものを選び、プログラムにせよ。
(授業では、探索は逐次探索と二分探索、ソートはバブルソートとクイックソートというのをやったらしいです)
[3] 環境
[3.1] OS:Windows XP
[3.2] 開発環境:Visual C++
[3.3] 言語:C
[4] 期限:今日中
期限が今日の深夜0時までみたいです・・・
突然のお願いで大変かと思いますが、どうかよろしくお願いいたします。。。
0677デフォルトの名無しさん
05/01/31 14:08:00[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: XP SP2
[3.2] コンパイラ(バージョン): .NET 2003
[3.3] 言語:C
[4] 期限:2005年1月31日23:00まで
[5] その他の制限:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=167
に問題文記載
自力でできるところまでやってみたもののどうもうまくいきません。
あれやこれやしてる間に締め切り日になってしまいました。
どなたかよろしくお願いします;;
PS.調べながら書いたソース添付しておきました
0678デフォルトの名無しさん
05/01/31 14:14:49http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/169.c
0679デフォルトの名無しさん
05/01/31 14:39:50[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=170
[3] 環境
[3.1] OS:WinXPSP2 CPU:Pentium
[3.2] コンパイラ(バージョン):VisualStadio.NET2003Pro
[3.3] 言語:C
[4] 期限:2005年2月1日
[5] その他の制限:特になし
よろしくお願いします
0680デフォルトの名無しさん
05/01/31 15:48:14http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/171.c
0681デフォルトの名無しさん
05/01/31 17:02:45解放されたかどうかをコンソールに出力して確認しなさい。は、
コンソール画面に入力した数字を羅列して、メモリを開放したあとに
開放されているか確認するためにNULLを出すということです。
0682デフォルトの名無しさん
05/01/31 17:11:52freeは値を返さないし、開放後のメモリ参照はできないし、
開放後の変数には、mallocが返したアドレスがそのまま入ってるんだけど?
0683デフォルトの名無しさん
05/01/31 17:16:08freeしたらNULL代入しとけば?
0684デフォルトの名無しさん
05/01/31 17:16:48ダイナミックツリーなんだから、セグメントエラーになる。
0685デフォルトの名無しさん
05/01/31 17:20:33皆さんありがとうございました
0686デフォルトの名無しさん
05/01/31 17:38:57ポインタの先の構造体読みに行く前にNULLチェックすれば問題ないんではないのかなぁ…
0687デフォルトの名無しさん
05/01/31 17:45:210688デフォルトの名無しさん
05/01/31 17:54:02恐らく出題者の望んだ解答はこんな感じかと
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/173.c
0689デフォルトの名無しさん
05/01/31 18:02:06たまたま動いてるだけ。
0690デフォルトの名無しさん
05/01/31 18:08:50これで文句なかろう
0691デフォルトの名無しさん
05/01/31 18:12:560692デフォルトの名無しさん
05/01/31 18:21:22680=682=684=689 だけど、
680、で作ったソースの最後のforで、全部開放済(全部freeを呼んでる)。
だから、最後に何かを付けて、参照するのは、無理です。
0693デフォルトの名無しさん
05/01/31 18:22:20なにしてんだよ…
0694デフォルトの名無しさん
05/01/31 18:28:46全部、malloc で獲得した領域。
だから、開放したことを示すNULLを入れたポインターも、最初のを除けば、
最終的には開放されてしまう。
もしくは、NULLを入れようとするポインターがfreeで開放された領域になってしまう。
なんで最後に、
head = NULL;
printf( "NULL\n" );
とするしかない。
0695デフォルトの名無しさん
05/01/31 18:29:210696デフォルトの名無しさん
05/01/31 18:34:29それじゃ解放を確認したとはいえない。
ただ単にポインタをNULLにするだけだったらいつでもできる。
解放されて無くても出来てしまっては意味がない。
0697デフォルトの名無しさん
05/01/31 18:36:42だから、メモリリークのデバックは大変なんです。
0698デフォルトの名無しさん
05/01/31 18:41:19まともな実装のOSならば、freeが失敗する場合ってのは致命的な
エラーなのでは?
0699デフォルトの名無しさん
05/01/31 18:43:120700デフォルトの名無しさん
05/01/31 18:48:20明日の授業の最初で提出だし、他にもいっぱい課題あるんです・・・
0701デフォルトの名無しさん
05/01/31 18:49:28struct MY_DATA が未定義で、できません。
0702デフォルトの名無しさん
05/01/31 18:51:06ようするに
お前の態度が
気に食わない
0703デフォルトの名無しさん
05/01/31 18:52:21あれ?いつからいたの?
0704デフォルトの名無しさん
05/01/31 19:15:390705デフォルトの名無しさん
05/01/31 20:00:41関数 動的メモリ 制御文 ポインタ 分割コンパイルを全て使ってオリジナルのシステムを製作する。」
というものが出題されたのですが、アイデアも何も浮かびません・・・
後生ですのでどなたか代行していただけませんでしょうか。
お願いします。
0706デフォルトの名無しさん
05/01/31 20:10:500707デフォルトの名無しさん
05/01/31 20:21:33「選択式ソートシステム」
≫ある複数のデータをソートする場合、ソートの種類を選択することができるシステム。
です、もう時間がないのでこれでお願いしたい所存です。
ソートの種類としては「選択ソート、バブルソート、挿入ソート、シェルソート」で行こうと思います。
ソートする文字、または数値をファイルから読み込むか、入力するかの選択、
どのソートをするかの選択の後、選択された処理を実行し、結果と経過をファイルに出力するシステムでお願いします。
0708デフォルトの名無しさん
05/01/31 20:22:09適当なアーカイバとか作ってみては?
ついでにXORで暗号化すれば恐らく全て使える
0709705
05/01/31 20:24:57改行で列
----------
1[TAB]43[TAB]83[TAB]14[TAB]32
C[TAB]言[TAB]語[TAB]実[TAB]習
----------
というファイルを読み込みそれを昇順でソートするという物をよろしくお願いします。
0711708
05/01/31 20:31:23作ってみた経験から言ってみたんだが…
まぁ、やってみたいものの方がいいとおもうけどね
0712デフォルトの名無しさん
05/01/31 21:36:41表計算でも作ってみるとか。
0713デフォルトの名無しさん
05/01/31 22:19:010714デフォルトの名無しさん
05/01/31 22:24:54[2] 問題:穴埋めです。
http://www.geocities.jp/my_jyouhou_u/test1.txt
[3] 環境
[3.1] OS:Windows XP
[3.2] 開発環境:Visual C++
[3.3] 言語:C
[4] 期限:2月1日正午
忙しすぎて手がつけられませんでした。
かなり初歩的な問題だと思います。よろしくお願いします!
0715デフォルトの名無しさん
05/01/31 22:39:23[2] 問題文(含コード&リンク):
1、自宅から勤務先の会社まで電車で通うとする(片道230円:往復460円)
2005年4月から2010年4月まで会社に通うとした場合に、運賃はいくらになるだろうか。
日数部分と運賃の計算部分は関数化を行い、運賃を求めるプログラムを作りなさい。
2、また、通勤定期を使用すると一ヶ月で6500円かかる。
1の問題で通常切符と一ヶ月定期を購入したと考え、
その場合もっとも安い運賃で通勤する方法と、その金額を出力するプログラムを作りなさい。
作成時に必要だと思った箇所は関数化を行いなさい。
*1、2共に、うるう年と休日(土日)は基本的に考えなくて構いません。
作成している場合は+αとして採点します
[3] 環境
[3.1] OS:Windows xp Home
[3.2] コンパイラ(バージョン):VisualStudio.Net2003
[3.3] 言語:C++
[4] 期限:2005年02月3日
[5]
+αの部分は考えていませんので、条件として考えて頂かなくて結構です。
2の出力は
「切符で20往復
一ヶ月定期を5回 =41700円」
という形になるかと思います。
回答頂けます場合は、初心者むけのソースであれば助かります。
どうぞよろしくお願いします。
0716デフォルトの名無しさん
05/01/31 22:40:52そういうときには素直に「分かりませんでした」と言った方が可愛げがあるぞ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/176.txt
0718デフォルトの名無しさん
05/01/31 22:49:51問題1
n<=1
1
fact(n-1)
int n;
&n
n<0
fact(n)
問題2
*n
mode == 0
index
meibo[i].name
0
meibo[i].name
meibo[i].name
問題3
*a
n[j] > n[j+1]
&n[i]
n
%d
n[i]
0720デフォルトの名無しさん
05/01/31 23:05:12「queueに突っ込むアイテムを表現してる構造体」の名前が"Que"ってのはいかがなものなのかと問いたいです。
0721デフォルトの名無しさん
05/01/31 23:06:200722679
05/01/31 23:08:230724デフォルトの名無しさん
05/01/31 23:12:17閏年を考慮しつつも土日を考慮していないと言う何とも中途半端な内容だが。
#include <iostream>
long ut2jd(double *d, int year, int month, int day, int hour, int min, int sec)
{
int bc, gregory;
long j;
bc = year <= 0;
gregory = year > 1582 || (year == 1582 && month > 10) || (year == 1582 && month == 10 && day >= 15);
if (month <= 2) {year--; month += 12;}
if (hour < 12) {j = 0; *d = 0.5;}
else {j = 1; *d = -0.5;}
*d += (hour * 3600L + min * 60 + sec) / 86400.0;
j += bc ? (year - 3) / 4 : year / 4;
if (gregory) j += 2 - year / 100 + year / 400;
j += 1720994L + year * 365L + (month + 1) * 30 + (month + 1) * 3 / 5 + day;
return j;
}
int days_between(int sy, int sm, int sd, int ey, int em, int ed)
{
double dummy;
return ut2jd(&dummy, ey, em, ed, 0, 0, 0) - ut2jd(&dummy, sy, sm, sd, 0, 0, 0);
}
int main()
{
std::cout << 460 * days_between(2005, 4, 30, 2010, 4, 30) << "円" << std::endl;
return 0;
}
0725デフォルトの名無しさん
05/01/31 23:15:222ちゃんねるに課題を丸投げするということはだな、見知らぬ誰かの善意を期待するってことだ。
ということは、誰も期待にこたえてくれないこともあるということだ。つまりこれも運命だからあきらめろってことですな。
0726デフォルトの名無しさん
05/01/31 23:16:200727707
05/01/31 23:20:36何でも構わないので何か提供してもらえませんでしょうか・・・
0728705
05/01/31 23:24:380729デフォルトの名無しさん
05/01/31 23:27:12今開発環境ないから漏れは煽るだけ。
0730デフォルトの名無しさん
05/01/31 23:31:38問題文:名前・メルアド・電話番号を登録でき、なおかつ名前検索、一覧表示できる
アドレス帳プログラムを作成せよ
http://www-it.sci.waseda.ac.jp/ITB1/class6b/l08.html
http://www-it.sci.waseda.ac.jp/ITB1/class6b/l10.html
ここにあるサンプルプログラム二つを一つにまとめればいいと思うのですが、うまくいきません。
何卒よろしくお願いしますm(__)m
※環境:学校のPCなのでよくわかりませんが、テキストファイルで書いたCを
別の端末ウインドウから「cc **.c」でコンパイル、 「a.out」で実行するタイプです。
0731730
05/01/31 23:33:3201 #include <stdio.h>
02
03 int main( int argc, char* argv[] ){
04 FILE* outfile;
05 char name[30], email[50];
06
07 outfile = fopen( argv[1], "a" );
08
09 printf( "名前を入力してください: " );
10 scanf( "%s", name );
11 printf( "E-mailアドレスを入力してください: " );
12 scanf( "%s", email );
13
14 fprintf( outfile, "%s %s\n", name, email );
15
16 fclose( outfile );
17 return 0;
18 }
0732730
05/01/31 23:34:19#include <string.h>
int main(){
int i=0, count, kekka;
char names[10][20], tmpname[20];
char emails[10][50], tmpemail[50];
FILE* infile;
/* ファイルから最大10人分のデータを読み込む */
infile = fopen( "l10_sample1.data", "r" );
while( !feof(infile) && i<10 ){
fscanf( infile, "%s %s", tmpname, tmpemail );
strncpy( names[i], tmpname, 20 );
strncpy( emails[i], tmpemail, 50 );
i++;
} /* 読み込まれた人数を count に保存 */
count = i;
printf( "検索する名前を入力してください: " );
scanf( "%s", tmpname ); /* カウンタ i を 0 に戻してから全員分の検索を行う */
i = 0;
while( i<count ){
kekka = strcmp( names[i], tmpname );
/* i番目にマッチする名前が見つかったので、
i番目の電子メールアドレスを表示する */
if( kekka == 0 ){
printf( "%s さんの電子メールアドレスは %s です。\n",
names[i], emails[i] ); }
i++; }
return 0;
}
0734705
05/01/31 23:37:24なにをどうしていいのかサッパリで・・・
0735673
05/01/31 23:40:03お答えいただき有難うございました。
0736デフォルトの名無しさん
05/01/31 23:44:12授業受けててなんでそんなレベルなんですか。
とりあえず担当教官に「あなたの授業を受講していたにも関わらずC言語がよく分からなくて何をどうしていいかサッパリです。
この件は大学当局に告発させていただきます」ってメ=[ルを出せば配覧カしてくれるかb烽オれないよ。
0737デフォルトの名無しさん
05/01/31 23:45:07そんなことしたら出席日数不足がばれるじゃん。
0738デフォルトの名無しさん
05/01/31 23:46:41a.out は、いかんな。
./a.out でないと。
っと別のところに突っ込み。
0739デフォルトの名無しさん
05/01/31 23:59:460740デフォルトの名無しさん
05/02/01 00:09:130741デフォルトの名無しさん
05/02/01 00:14:43http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/177.zip
ちょいっと時間オーバーになったがアーカイバー作ってみた
0742デフォルトの名無しさん
NGNG[2] 問題文はhttp://www.edu.ics.saitama-u.ac.jp/~hira/ex04p/prog04ef.b.htmlにあります。
[3] 環境
OS:UNIX
言語:C
[4] 期限:2005年2月1日14:00まで
テスト週間でほんとにできなくて困ってます。
よろしくお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0743デフォルトの名無しさん
05/02/01 01:09:09すごいな喪前
なんか俺も真面目にプログラム勉強してみたくなった
回答人みたく、電車内で前の席に座ってる女子のパンツ覗きながら携帯でちょいちょいと答えたり、
納品日に間に合わなくて剃る暇もなくすっかり生え揃ってしまったヒゲを弄りながらちょいちょい答えられるように
なるにはどうすればいいの?
0744デフォルトの名無しさん
05/02/01 01:43:340745デフォルトの名無しさん
05/02/01 01:55:26めんどくさすぎ。しかも直前に丸投げ。考えた後もなし。諦めな。
0746デフォルトの名無しさん
05/02/01 02:35:59HP見ると、コンテスト行う、とあって、そこを見ると、乱入者部門とかある。
そっちに参加するかな?(w
0747デフォルトの名無しさん
05/02/01 03:03:130748747
05/02/01 03:04:080749デフォルトの名無しさん
05/02/01 03:08:050750デフォルトの名無しさん
05/02/01 04:23:36入力ファイル(テキスト形式)の行数を調べる方法で、最も効率的な方法、又はメソッドは
何でしょうか?教えてください。オネガイします。
0751デフォルトの名無しさん
05/02/01 04:33:410752デフォルトの名無しさん
05/02/01 04:50:50この文書いたやつ、そこはかとなくRuby使いっぽいなw
デバッグにつまったから暇つぶしにやってみるかな。
0753デフォルトの名無しさん
05/02/01 04:56:08じゃあデバッグの方は俺が引き受ける。
0754デフォルトの名無しさん
05/02/01 05:02:52でも課題はCで作るのね。
ていうか、cacrd.tar.gzに含まれてたa.outが意味不明なんすけど…
>>753
よくよく読んでみるとかなり手ごわそうな感じ。
こんなのを解く授業なんて羨ましいっす。
0755デフォルトの名無しさん
05/02/01 05:05:07この教師ちょっと心配。。
0756デフォルトの名無しさん
05/02/01 05:14:03読んでる部分を抜き出してみたよ。
d_open("|#{@command}", 'r+'){|io|
@io = io
proc.call
}
ま、なにをやってるかというとプロセスを作ってパイプ経由で読んでるってこと。
0757デフォルトの名無しさん
05/02/01 05:19:47なるほど、じゃあ、ディスクリプタはstdin,stdoutじゃだめじゃん?
0758デフォルトの名無しさん
05/02/01 05:22:07掲示板に晒してあるソース。そうとう駄目なやつだよ。
もうちょっと勉強したほうがいいんでない?
こいつのためにならんよ。
0759デフォルトの名無しさん
05/02/01 05:22:30ゲームマスター(プログラム)がいて、そいつがパイプ経由で二つのプログラムに入力を与え、
結果判定などをやってる。なんで標準入出力でOK
0760デフォルトの名無しさん
05/02/01 05:23:45おれがcygwinだから駄目なのか?
stdinだと普通に読み込めない・・・
0761デフォルトの名無しさん
05/02/01 05:25:15むー、cygwin環境では試してないや。こっちはFreeBSD。
0762デフォルトの名無しさん
05/02/01 05:26:21たぶん駄目だね。共有メモリ上でやってるみたいだし。
cygwinは共有メモリは無理なんだ。
がんばってくだちぃ。寝ますノシ
0763デフォルトの名無しさん
05/02/01 05:54:340764デフォルトの名無しさん
05/02/01 07:59:12[2] 問題文(含コード&リンク):
Walking Around Manhattan
プログラムは
1.ユーザーに始めと終わりのStreetを聞く。
2.ユーザーに始めと終わりのAvenueを聞く。
3.どれだけのブロックを歩いたのか表示させる。
Number of blocks = number of avenues to travel + number of street to travel.
4.歩いた合計のFeetを表示させる。(BLOCK_SIZEを定数とする)
Number of streets to travel = |starting street number - ending street number|
Number of avenues to travel = |starting avenue number - ending avenue number|
5.三平方の定理 straight line distance = sqrt(number of streets^2 + number of avenue^2)を使って直線の距離を算出する。(始めから、最終ポイントまでの直線距離。)
6.二つの距離の差を計算し、算出する。
表示されるのは
−--------------
What street are you starting on?
What street are you ending on?
What avenue are you starting on?
What avenue are you ending on?
This trip is ## blocks, or ## feet.
The straight line distance would be ## feet.
The difference is ## feet.
----------------
*## はそれぞれの答え。
[3] 環境 Codewarrior v9.2
[3.1] OS: XP SP2
[3.2] コンパイラ(バージョン): Codewarrior v9.2
[3.3] 言語:C++
[4] 期限:2005年二月三日まで
まだまだ、勉強中です。よろしくお願いします。
0765デフォルトの名無しさん
05/02/01 08:25:26#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define BLOCK_SIZE 500
int question(char *sa, char *se, double *pd)
{
printf("What %s are you %s on?", sa, se);
return scanf("%lf", pd);
}
int main(void)
{
double ss, es, sa, ea, nst, nat, nb, tf, sld;
question("street", "starting", &ss);
question("street", "ending", &es);
question("avenue", "starting", &sa);
question("avenue", "ending", &ea);
tf = (nb = (nst = fabs(ss - es)) + (nat = fabs(sa - ea))) * BLOCK_SIZE;
sld = sqrt(nst * nst + nat * nat) * BLOCK_SIZE;
printf("This trip is %2.0f blocks, or %2.0f feet.\n", nb, tf);
printf("The straight line distance would be %2.2f feet.\n", sld);
printf("The difference is %2.2f feet.\n", tf - sld);
return 0;
}
0766デフォルトの名無しさん
05/02/01 09:06:11サンプルの中に pl_sparrow.rb とか pl_owl とかあるやん?
それでリーグ戦した結果が README に書いてあるやん?
一番強いやつを C に移植したらええんちゃう?
[ 1] win=3919 (first=1978, second=1941): pl_owl.rb
[ 2] win=3652 (first=1891, second=1761): pl_bulbul.rb
[ 3] win=3538 (first=1836, second=1702): pl_swift.rb
[ 4] win=3483 (first=1806, second=1677): pl_woodpecker.rb
[ 5] win=3139 (first=1660, second=1479): pl_kite.rb
[ 6] win=2176 (first=1108, second=1068): pl_chicken.rb
[ 7] win=1093 (first= 569, second= 524): pl_sparrow.rb
[ 1] *** O(566) O(581) O(552) O(560) O(778) O(882)
[ 2] X(434) *** X(494) O(555) O(531) O(766) O(872)
[ 3] X(419) O(506) *** X(483) O(615) O(687) O(828)
[ 4] X(448) X(445) O(517) *** O(555) O(710) O(808)
[ 5] X(440) X(469) X(385) X(445) *** O(592) O(808)
[ 6] X(222) X(234) X(313) X(290) X(408) *** O(709)
[ 7] X(118) X(128) X(172) X(192) X(192) X(291) ***
0767742
05/02/01 09:10:40この課題、今日の14時までなんだよね。もうちょっと早く聞いて欲しかったなあ。
もうだめ、眠気最高潮なんで寝ます。とはいえ面白そうだから最後まで解いてみるけど、
絶対間に合わないよな。ごめんな。
0769デフォルトの名無しさん
05/02/01 09:21:260770デフォルトの名無しさん
05/02/01 09:23:27なんであそこに a.out があるのかと小一時間(w
0771デフォルトの名無しさん
05/02/01 11:52:460772デフォルトの名無しさん
05/02/01 18:18:39[1] 授業単元:C++言語
[2] 問題文(含コード&リンク):
1、サイズはデフォルトで153600バイト。
2、指定サイズで複数の出力ファイルに元データを分割出力する。
3、出力ファイル名の後部に通し番号を付加して、[出力ファイル名]00などとして出力する。
[3] 環境
[3.1] OS:Windows2000
[3.2] 開発環境:Visual C++ 6.0
[3.3] 言語:C++
[4] 期限:明日中
[5] その他の制限:特になし。
勉強して間もないのに初めて仕事を頼まれましたが、自分じゃどうしたらいいのか分かりません・・・
急で申し訳ありませんがどなたか宜しくお願い致します。
0773デフォルトの名無しさん
05/02/01 18:20:01元データどうやって渡すんだ?
0774デフォルトの名無しさん
05/02/01 18:26:14ソレで給料貰えるんだ・・・
給料泥棒と呼ばれないうちに、なんとかしようね
0775デフォルトの名無しさん
05/02/01 18:32:07http://ftp.gnu.org/pub/gnu/textutils/textutils-2.1.tar.gz
Version 2.1 (stable) released on 2002-08-06
Licensed under The GNU General Public License, Version 2 or later.
This is a GNU package.
The GNU General Public License Version 2
http://www.fsf.org/licenses/info/GPLv2orLater.html
0776デフォルトの名無しさん
05/02/01 19:23:34[2] 問題文(含コード&リンク):
連立1次方程式
5x-y=4
x+y=6
を初期値x=0,y=0として、ヤコビ法で求めよ。
計算回数 x y
0 0 0
1 0.8 1.2
: : :
10 1.0000001 1.000001
実行すると上記のような表が出てくるようにしてください。
[3] 環境
[3.1] OS:winxp
[3.2] コンパイラ(バージョン):bcc32
[3.3] 言語:C
[4] 期限:2005年2月10日
[5] その他の制限:
よろしくお願いします
0777デフォルトの名無しさん
05/02/01 19:38:100 0 0
1 0.8 1.2
: : :
10 1.0000001 1.000001
>実行すると上記のような表が出てくるようにしてください。
本当にこんな表でいいのか?
0778デフォルトの名無しさん
05/02/01 19:56:14昔フロッピーディスクに入り切らないファイルを
そうやって分割するソフトがあった。
0779デフォルトの名無しさん
05/02/01 21:00:150780772
05/02/01 21:37:06入門書籍で一通り勉強したレベルの自分でも出来そうならなんとか頑張ってみます。
0781776
05/02/01 23:08:08正確に書くと、
計算回数 x y
0 0 0
1 0.8 1.2
2 1.04 1.04
3 1.008 0.992
4 0.9984 0.9984
5 0.99968 1.00032
6 1.000064 1.000064
7 1.0000128 0.9999872
8 0.9999974 0.9999974
9 0.9999995 1.0000005
10 1.0000001 1.0000001
です。すみませんでした。改めてよろしくお願いします。
0782776
05/02/01 23:16:07出直してきます。
0783776
05/02/01 23:40:550784デフォルトの名無しさん
05/02/02 01:40:07まあ、小言を言わせてもらうと、
自己解決したときにはどうやって解決したかくらい書き残していった方がいいよ。
0785デフォルトの名無しさん
05/02/02 01:41:45以下の仕様に基づいて,キューにデータ(頂点番号)を追加する関数
void enqueue(int dt)
を定義せよ.
(必要に応じて,ヘッダー・ファイルをインクルードすること.)
* 関数名:enqueue
* 仮引数int dt:キューに追加するデータとして,int型のデータ(頂点番号)を受け取る.
* 戻り値:なし.
* 機能:int型のデータ(頂点番号)を追加・取り出しできるキューに,頂点番号を追加する.
仮引数として受け取ったint型のdtをメンバNumの値としてもつ NODE型のノードを,連結リストの先頭ノードとして追加すること.
また,キューの先頭ノードを指すポインタとして,
以下のグローバル変数を使用すること(必要であれば初期化すること).
NODE *q_head;
0786デフォルトの名無しさん
05/02/02 01:42:59int dequeue()
を定義せよ(必要に応じて,ヘッダー・ファイルをインクルードすること.).
* 関数名: dequeue
* 仮引数:なし.
* 戻り値 (int型):キューのデータ構造に基づいて取り出されるint型のデータ(頂点番号)
※キューにデータがない場合,他の関数および機能の実行に影響のない戻り値を返すこと.
* 機能:呼び出し側にキューから取り出したデータ(頂点番号(int型))を返す.
上記のvoid enqueue(int dt)のデータ構造に基づいて,連結リストの操作をおこない,
末尾ノード(ノードがひとつの場合は先頭ノード)を取り出すこと.
0787デフォルトの名無しさん
05/02/02 02:06:130788デフォルトの名無しさん
05/02/02 02:08:250790デフォルトの名無しさん
05/02/02 04:50:27暇だったらこれやれば? >>742
0791デフォルトの名無しさん
05/02/02 05:57:56ヤコビ法ならこれでどうかな?意見求む。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/181.txt
0792デフォルトの名無しさん
05/02/02 08:25:42[2]ユーザの入力によるファイル名からデータをを読み込む。
読み込まれたデータを利用し、適当な処理する。
処理したデータをソートし、データを別のファイルへ書き込む
[3] 環境
OS:turbolinux
言語:C
[4] 期限:2005年2月5日14:00まで
全然わかりません;どなたかよろしくお願いいたしますorz
0793デフォルトの名無しさん
05/02/02 09:42:110794デフォルトの名無しさん
05/02/02 10:26:44自分で作った問題でないなら元の文をそのまま晒せ
0795デフォルトの名無しさん
05/02/02 10:55:01intを2進法表示でstringに保存する方法はありませんか?!
かなり困っています。助けてください!
よろしくお願いします。
0796デフォルトの名無しさん
05/02/02 11:02:23このあいだ、このスレでやってたな
0798デフォルトの名無しさん
05/02/02 11:08:53ほい。激しく糞なんで提出したら怒られるかも知れないけど。
#include <iostream>
#include <string>
#include <sstream>
#include <bitset>
template <class Target, class From>
Target binary_cast(From from)
{
std::bitset<32> bits(from);
std::stringstream ss;
ss << bits;
Target target;
ss >> target;
return target;
}
int main()
{
std::string s(binary_cast<std::string>(32767));
std::cout << s << std::endl;
return 0;
}
0799デフォルトの名無しさん
05/02/02 11:37:23#include <string>
#include <sstream>
#include <bitset>
#include <limits>
template <class Target, class Source>
Target binary_cast(Source source)
{
std::bitset<std::numeric_limits<Source>::digits> bits(source);
std::stringstream ss;
ss << bits;
Target target;
ss >> target;
return target;
}
こっちの方がまだいいかも知れない
0800デフォルトの名無しさん
05/02/02 13:24:53適当な処理って何よ…
0801デフォルトの名無しさん
05/02/02 13:34:38の並んだデータです.
>>794
宿題ではありますが元の文章というものがネット上にありません;
分かり難い文章で申し訳ありません
>>798,799
コンパイルできません;こうエラーがでます
test.c:1:21: iostream: そのようなファイルやディレクトリはありません
test.c:2:18: string: そのようなファイルやディレクトリはありません
test.c:3:19: sstream: そのようなファイルやディレクトリはありません
test.c:4:18: bitset: そのようなファイルやディレクトリはありません
test.c:5:18: limits: そのようなファイルやディレクトリはありません
test.c:7: error: 構文解析エラー before '<' token
test.c:15: 警告: data definition has no type or storage class
test.c:16: error: 構文解析エラー before '>>' token
上の五つのファイル名のものを作りましたが全然反応してくれません
実行したのは下の方です。上の方はもっとエラーがでました;
よろしくお願いします!!
0802デフォルトの名無しさん
05/02/02 13:39:21どうせいっちゅーねん
0803デフォルトの名無しさん
05/02/02 13:43:07>>801 != >>795な気がする…っとまぁ、ツッコミどころはむしろ
俺はエスパーじゃねぇんだから>>792の文じゃ
・読み込むファイルの形式
・どんな適切な処理を施すのか
この二点が主にわかんねぇよ
問題文の全文を書け
0804デフォルトの名無しさん
05/02/02 13:43:31読み込むファイルは適当に作ります;
別ファイルを読み込んでソートし別名で書き出しできるようなプログラムを
よろしくお願いいたします
0805デフォルトの名無しさん
05/02/02 13:43:36C++ っつったのはお前だろ
0806デフォルトの名無しさん
05/02/02 13:49:22すみません;自分が頼んだ問題だと勘違いしてましたorz
0807デフォルトの名無しさん
05/02/02 13:54:08C++って言った
コンパイル通らなくてもそれあってるから提出するように
0808デフォルトの名無しさん
05/02/02 13:54:33適当に作るんだな?
つうことはテキストデータじゃなくともいいんだな?
struct{
char name[0x10];
int year;
int height;
};
こんなんが列挙してあるテキストエディタで編集不可のデータでもいいんだな?
0809デフォルトの名無しさん
05/02/02 14:02:49char name[0x10];
int year;
int height;
};
0810デフォルトの名無しさん
05/02/02 14:02:57自分で問題を理解せずに質問してしまいすみません;
ファイル形式はtxtで
適切な処理は自分で追加します。
別ファイルを読み込んでソートし別名で書き出しできるようなプログラムを
よろしくお願いいたします
>>808
テキストデータで個人情報みたいなのを作るのでそれをソート
できて別名で書き込めるようお願いいたします
0811デフォルトの名無しさん
05/02/02 14:30:390812デフォルトの名無しさん
05/02/02 14:33:23可搬性は低くなるけど。
0813デフォルトの名無しさん
05/02/02 14:44:27#include <poppack.h>
ってのがVCだとできたと思うけど…
まぁコンパイラ依存になるかもしんない
0814デフォルトの名無しさん
05/02/02 16:02:24いい加減入力ファイルのフォーマットを決めろ。
そんなこともできないのか?できないなら消えろ。
>>803が言っている意味分からないのか?
ここはエスパー集団の集うスレじゃない。
0815デフォルトの名無しさん
05/02/02 17:06:45でよろしくお願いします
名前でソートできるようお願いします
0816デフォルトの名無しさん
05/02/02 17:20:25for( i = 0 i < size; i++ ) { // 適当な処理
if( buf[i] >= 'A' && buf[i] <= 'Z' )
buf[i] |= 0x20;
}
if( ( fp = popen( "sort > 別ファイル", "w" ) ) ) { // sort
fwrite( buf, 1, size, fp );
pclose( fp );
}
0817デフォルトの名無しさん
05/02/02 18:12:22C++ならtest.cじゃなくてtest.cppにしろ
0818デフォルトの名無しさん
05/02/02 20:02:36あ げ
0819デフォルトの名無しさん
05/02/02 20:53:24" 18"のような文字列をint型の18という値にしたいのですが、
どのような方法が理想でしょうか?
0820デフォルトの名無しさん
05/02/02 20:54:34CかC++かもワカラン
0821デフォルトの名無しさん
05/02/02 20:57:00すげー、マジでやる?
最近の、ロボットプログラマーはすごいね
0822デフォルトの名無しさん
05/02/02 20:58:17if (!strcmp(s, " 18")) v = 18;
0823デフォルトの名無しさん
05/02/02 21:08:15int i;
char str[16];
str[16]=" 18";
i=18;
return 0;
}
0824デフォルトの名無しさん
05/02/02 21:25:48(1)何も考えずに atoi を使うか。
(2)ちょこっとだけ考えて strtod を使うか。
(3)だいぶ考えて 自作 するか。
おれは(3)を選んだ。関数の戻り値を見て愕然としたからだ。
(1)(2)を使うんなら、できる限りの検証処理を盛り込んでおけ。
0825デフォルトの名無しさん
05/02/02 21:27:49まだ選択肢はあるんだが。
0826デフォルトの名無しさん
05/02/02 21:46:24まぁ、私も自作ですね
asciiなら'0'との差を取るだけで出るし
0827デフォルトの名無しさん
05/02/02 21:46:40非常にかっこいいと思う
0828デフォルトの名無しさん
05/02/02 21:48:02>str[16]=" 18";
明らかにお化視衣
0829デフォルトの名無しさん
05/02/02 21:58:08#include<string.h>
#include<stdlib.h>
main()
{
int i;
char *s[5];
char str[100];
for(i=0;i<5;i++){
scanf("%s", str);
s[i]=(char *)malloc(sizeof(char) * (strlen(str)+1));
strcpy(s[i], str);
printf("%s\n",*(s+i));
}
}
これでprintfを*s[i]にすると、入力の一文字目でエラーがでるんですが、
なぜでしょうか?
0830デフォルトの名無しさん
05/02/02 21:58:10int CharToInt(char c);
void main(){
char st[30],*cp=st;
int n,d=0;
printf("整数文字列を入力");
gets(st);
for (;*cp;cp++){
if (-1!=(n=CharToInt(*cp))){
d=d*10+n;
}
}
printf("%d\n",d);
}
int CharToInt(char c){
char ch='0';
if (c<'0' || c>'9') return -1;
for(;c!=ch;ch++);
return ch-'0';
}
0831デフォルトの名無しさん
05/02/02 22:06:15*s[i]って何型かよく考えよう
0832デフォルトの名無しさん
05/02/02 22:11:240833デフォルトの名無しさん
05/02/02 22:13:03s[i] char*
*s[i] char
0834デフォルトの名無しさん
05/02/02 22:47:47#include <string.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char name[256];
unsigned age;
unsigned height; // cm
} PERSON;
int cmp(const void * e1, const void * e2) {
const PERSON * p1 = e1;
const PERSON * p2 = e2;
return strcmp(p1->name, p2->name);
}
int main(int argc, char ** argv) {
FILE * in_f, * out_f;
unsigned n, i;
PERSON data[256];
if (argc < 3) return 1;
if ((in_f = fopen(argv[1], "r")) == NULL) return 1;
if ((out_f = fopen(argv[2], "w")) == NULL) {fclose(in_f); return 1;}
for (n = 0; n < 256 && fscanf(in_f, "%256s%u%u", data[n].name, &data[n].age, &data[n].height) == 3; ++n) ;
qsort(data, n, sizeof(PERSON), cmp);
for (i = 0; i < n; ++i)
fprintf(out_f, "%s %u %u\n", data[i].name, data[i].age, data[i].height);
fclose(in_f); fclose(out_f);
return 0;
}
0835819
05/02/02 23:13:34atoiなどは先頭文字を変換するだけなので・・。
0836デフォルトの名無しさん
05/02/02 23:18:130837デフォルトの名無しさん
05/02/02 23:20:10次のnumでいいのかな?
num ::= space* digit*
space ::= ' ' | \t
digit ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
0838819
05/02/02 23:24:22え〜と、処理の見方がよくわからないのですが、
配列に
char[0]=' ';
char[1]=' ';
char[2]=' ';
char[3]='1';
char[4]='8';
char[5]='0';
のように文字が入っています。
0839デフォルトの名無しさん
05/02/02 23:24:230840デフォルトの名無しさん
05/02/02 23:29:56main(){
int i;
char str[]=" 18";
sscanf(str, " %d", &i);
printf("%d\n", i);
}
0841819
05/02/02 23:30:19char[5]='\0' の間違いです。
0842837
05/02/02 23:30:38num ::= space* (nonzerodigit digit+) | '0'
space ::= ' ' | \t
nonzerodigit ::= '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
digit ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
0843デフォルトの名無しさん
05/02/02 23:37:38>(nonzerodigit digit+)
(nonzerodigit digit*) では?
0844デフォルトの名無しさん
05/02/02 23:40:11ありがとうございます
非常に勉強になりました
感謝
0845デフォルトの名無しさん
05/02/03 01:16:40もっと精進せねば。
0846デフォルトの名無しさん
05/02/03 01:35:040847デフォルトの名無しさん
05/02/03 01:42:18一生無理だよ、と酷いことを言って競争相手を蹴落とそうとするテスト。
0848こもん
05/02/03 02:51:1650人分一人一人各教科の点数と合計と平均を表示させるプログラムを
2月4日までお願いいたします。
0849こもん
05/02/03 02:53:1350人分一人一人各教科の点数と合計と平均を表示させるプログラムを
2月4日までお願いいたします。
0850デフォルトの名無しさん
05/02/03 03:05:490851デフォルトの名無しさん
05/02/03 05:01:57合計 = 英語[i] + 数学[i] + 国語[i] + 理科[i] + 社会[i];
printf(フォーマット1, 英語[i], 数学[i], 国語[i], 理科[i], 社会[i]);
printf(フォーマット2, 合計, 合計 / 5);
}
0852デフォルトの名無しさん
05/02/03 11:10:30[1] 授業単元: C++ の入門的なコース
[2] 問題文(含コード&リンク):10進法から2進法、2進法から10進法、
10進法からローマ数字、2進法からローマ数字へ変換するプログラム
[3] 環境
[3.1] OS: Win XP
[3.2] コンパイラ(バージョン): すみません、本当に初心者なのでバージョンは
どこを見ればいいのかわかりません。
[3.3] 言語:C++でお願いします。
[4] 期限:早くに越したことはありません。
[5] その他の制限: Stringは使用禁止とのことです。
よろしくお願いします。
0853デフォルトの名無しさん
05/02/03 11:35:43・変換というのは表示を変更するだけでいいのか
・入出力例を挙げろ
0854852です。どなたか力を貸してください。
05/02/03 12:11:25そうです。表示を変更すればいいです。(例12→1100、14→IVX)
実は、途中までのプログラムはできていて、そこに関数を入れるようになっています。
ここの// WRITE THIS の部分を埋めるだけでよいのですが...
数字を一桁ずつ読ませるのか、そのためにどうすればいいのか、
変換できたとして、それを表示するにはどうすればいいのか、などなど
わからないことだらけです。
#include <iostream>
using namespace std;
char menu();
int convert10to2(int n);
void convert10toRom(int n);
int convert2to10(int n);
void convert2toRom(int n);
int convertRomto10(const char * input);
int convertRomto2(const char * input);
0855デフォルトの名無しさん
05/02/03 12:14:470856852です。どなたか力を貸してください。
05/02/03 12:17:14{
char ch;
do
{
ch = menu();
// 10 to 2
if(ch=='1')
{
cout<<"Enter a base10 number: ";
int n;
cin>>n;
cout<<"\n*** "<<n<<" base10 equals "<<convert10to2(n)<<" base2 ***\n\n";
}
// 10 to Rom
else if(ch=='2')
{
cout<<"Enter a base10 number: ";
int n;
cin>>n;
cout<<"\n*** "<<n<<" base10 equals ";
convert10toRom(n);
cout<<" in Roman numerals ***\n\n";
}
0857デフォルトの名無しさん
05/02/03 12:17:44・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
0858852です。長くてすみません。
05/02/03 12:18:56else if(ch=='3')
{
// WRITE THIS
}
// 2 to Rom
else if(ch=='4')
{
// WRITE THIS
}
// Rom to 10
else if(ch=='5')
{
cout<<"Enter a Roman numeral expression: ";
char input[80];
cin>>input;
cout<<"\n*** The expression "<<input<<" in Roman numerals equals "<<convertRomto10(input)<<" Base10 ***\n\n";
}
// Rom to 2
else if(ch=='6')
{
cout<<"Enter a Roman numeral expression: ";
char input[80];
cin>>input;
cout<<"\n*** The expression "<<input<<" in Roman numerals equals "<<convertRomto2(input)<<" Base2 ***\n\n";
}
}while(ch!='q' && ch!='Q');
0859デフォルトの名無しさん
05/02/03 12:20:100860デフォルトの名無しさん
05/02/03 12:20:13> ここの// WRITE THIS の部分を埋めるだけでよいのですが...
待て、待て。
>>854に書いてあるのはおまいが書いたんじゃなくて「出題者が作ったプログラム」なのか?
だったら出題者を棒で滅多打ちにすべきだ。
0861デフォルトの名無しさん
05/02/03 12:21:590863852です。長くて申し訳ありません。
05/02/03 12:25:37854に書いたとおり、プログラムはほぼ出来上がっていて、関数のみ入れる形に
なっています。必死になってやっているのですが、数字をどうやって1桁
として扱えばいいのかということがネックになっているかと思います。
あと、申し訳ないのですが、問題のプログラムが、長く、改行も多いので一度では
貼り付けられないのです。
説明不足で申し訳ありませんでした。
0864デフォルトの名無しさん
05/02/03 12:26:030865852です。まだあります。
05/02/03 12:27:50}
char menu()
{
char ch;
do
{
cout<<"(1)\tTo convert base10 to base2\n";
cout<<"(2)\tTo convert base10 to Roman numerals\n\n";
cout<<"(3)\tTo convert base2 to base10\n";
cout<<"(4)\tTo convert base2 to Roman numerals\n\n";
cout<<"(5)\tTo convert Roman numerals to base10\n";
cout<<"(6)\tTo convert Roman numerals to base2\n\n";
cout<<"(q)\tTo quit\n\n";
cout<<"==> ";
cin>>ch;
}
while((ch<'1' || ch>'6') && ch!='q' && ch!='Q');
return ch;
}
0866852です。もうすこしです。
05/02/03 12:30:07{
// WRITE THIS
}
void convert10toRom(int n)
{
// WRITE THIS
}
int convert2to10(int n)
{
// WRITE THIS
}
void convert2toRom(int n)
{
// WRITE THIS
0867852です。もうすこしです。
05/02/03 12:31:33int getValue(char ch)
{
switch(ch)
{
case 'I':
case 'i':
return 1;
case 'V':
case 'v':
return 5;
case 'X':
case 'x':
return 10;
case 'L':
case 'l':
return 50;
case 'C':
case 'c':
return 100;
case 'D':
case 'd':
return 500;
case 'M':
case 'm':
return 1000;
}
return 0;
}
0868デフォルトの名無しさん
05/02/03 12:31:410869852です。これで最後かと。
05/02/03 12:37:43int convertRomto10(const char * input)
{
int ans = 0;
while(*input!=0)
{
int value1 = getValue(input[0]), value2 = getValue(input[1]);
if(value1==0)
{
cout<<"That is not a valid Roman numerals expression.\n";
return 0;
}
else if(value1<value2)
{
input+=2;
ans+=value2-value1;
}
else
{
++input;
ans+=value1;
}
}
return ans;
}
int convertRomto2(const char * input)
{
return convert10to2(convertRomto10(input));
}
0870デフォルトの名無しさん
05/02/03 12:45:140871デフォルトの名無しさん
05/02/03 12:47:15( ゚∀゚)彡 おっぱい!おっぱい!
( ⊂彡
| |
し ⌒J
0872デフォルトの名無しさん
05/02/03 12:53:24いい加減にしろこの馬鹿
0873デフォルトの名無しさん
05/02/03 12:54:56ぼるじょあ、頼んだぞ
0874デフォルトの名無しさん
05/02/03 12:56:190875852です。
05/02/03 12:58:22すみません。注意不足でした。
0876デフォルトの名無しさん
05/02/03 13:00:00質問に答えるやつはいないんだけどな。
長すぎると
0877852です。
05/02/03 13:00:08すみません。注意不足でした。
0878デフォルトの名無しさん
05/02/03 13:07:15さすがにこの状況じゃ誰ももう答えてはくれんよ
0879852です。ありがとうございました。
05/02/03 13:18:54お時間とらせて申し訳ありませんでした。
失礼します。
0880デフォルトの名無しさん
05/02/03 14:17:54でもまぁなんだとりあえずupろだにあげとけ。
気が向いたらやるかもしれんから。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0881デフォルトの名無しさん
05/02/03 14:19:440882デフォルトの名無しさん
05/02/03 16:35:53ヒマ・・・。
簡単そうな問題ぷりーづ。
0883デフォルトの名無しさん
05/02/03 16:43:210884デフォルトの名無しさん
05/02/03 16:50:220885デフォルトの名無しさん
05/02/03 16:52:45#include <stdio.h>
#include <stdlib.h>
int nstack = 0;
double stack[100];
void push(doble v) {if (nstack < sizeof(stack)/sizeof(stack[0])) stack[nstack++] = v; else exit(2); }
double pop(if (nstack > 0) {return stack[--nstack];} else exit(2); }
void print_stack(void) {int i = 0; for (i = 0; i < nstack; i++) printf("%f\n", stack[i]); }
void add(void) {push(pop()+pop())};
int main(void) {push(1); push(7); add(); print_stack(); return 0};
0886デフォルトの名無しさん
05/02/03 19:09:170887デフォルトの名無しさん
05/02/03 19:19:400888デフォルトの名無しさん
05/02/03 19:34:54http://ja.wikipedia.org/wiki/AKS%E7%B4%A0%E6%95%B0%E5%88%A4%E5%AE%9A%E6%B3%95
アルゴリズムがわかっているので簡単に実装できる。
ガンガレ
0889デフォルトの名無しさん
05/02/03 19:42:43このアルゴリズムは実装が要だぞ。
実装によって速さが全然違う。
0890デフォルトの名無しさん
05/02/03 22:38:41>>887
Lagarias‐Miller‐Odlyzko algorithmの反転。
08911/2
05/02/04 00:52:58[2] 問題文:(1)減算関数(sub)の動作原理(なぜこのやりかたで減算が
できるのか)について説明せよ。(下に示すプログラム)
(2)除算のアルゴリズムを考えてわかりやすく示せ。
Cのプログラムを書く必要はないが,アルゴリズムの説明に加えて
それをプログラムとして実装した場合は評価する。
ただし,プログラムのみの提出は認めない。
(1)の減算のアルゴリズム
void neg (int x[], int a[]) {
int carry = 1;
int i;
for (i = 0; i< SIZE; i++) {
int z = BASE - 1 -x[i] + carry;
a[i] = z % BASE;
carry = z / BASE;
}
}
void sub (int x[], int y[], int a[]) {
static int z[SIZE];
neg(y, z);
add(x,y,a);
08922/2
05/02/04 00:54:28[3.1] OS: XP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:2005年2月7日8:00まで のいずれか
[5] その他の制限:(1)はx+(-y)=x-yという解答ではなく、どのような過程を経て
その状態までたどり着いたかの説明が求められています。(2)はa / b;という答え
では駄目だそうです。お願いします。
0893デフォルトの名無しさん
05/02/04 02:17:410894デフォルトの名無しさん
05/02/04 02:21:02divide and correct は漏れがやるとニュートンより遅かったんだよなぁ…
0895デフォルトの名無しさん
05/02/04 04:07:45[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク)
氏名 性別 年齢 電話番号 メルアド
Kinniku m 20 000-000 xxxx@xxxxxx
Maccho f 21 111−111 xxxx@xxxxxx
�@このような一覧を5人程度作り印刷をせよ
�A氏名の頭文字を読み込み、該当する者のデータを印刷せよ
[3] 環境
[3.1] OS: WindowsXP
[3.2] 言語:C
[4] 期限:明日まで
お願いします
0896デフォルトの名無しさん
05/02/04 07:11:560897デフォルトの名無しさん
05/02/04 08:39:54(1)このプログラムでは配列をBASE進数、SIZE桁の符号なし数、最下位桁を添え字0として扱っている。
桁固定であふれたぶんを無視すれば、一般に、
・BASE進数のBASE-1の補数+1は、BASE進数のBASEの補数となる。
・BASE進数のBASEの補数を加算することは、減算に相当する。
ため、関数sub()は減算として動作する。
(2)遅い方法だが・・・
a.商=0
b.割られる数が割る数以上なら、割られる数から割る数を引き、商を+1する。割られる数が割る数未満になるまでbを繰り返す。
c.bから抜けた時点で商と余り(割られる数)が得られる。
0898デフォルトの名無しさん
05/02/04 08:44:36(1)
#include <stdio.h>
int main(void) {int c; while ((c = getchar()) != EOF) { putchar(c); } return 0;}
(2)
#include <stdio.h>
int main(int argc, char *argv[]) {char line[1000]; if (argc != 2) exit(2); while (gets(line)) {if (argv[1][0] == line[0]) puts(line);} return 0;}
0899デフォルトの名無しさん
05/02/04 09:49:08実行結果は数値を出し、エクセルでグラフ化しています。(window.hが使えないため)
#include <stdio.h> #include <stdlib.h>
#include <time.h> #include <math.h>
#define KMAX 100 #define XMAX 300
#define PI 3.14159265358979323846
double gar()
{double r = 0.0;
int i;
for(i = 0; i < 10; i++){r += ((double)rand() / RAND_MAX) - 0.5;}
return r;}
int main(void)
{int x, k; float d; scanf("%f",&d);
double ek = PI * 2.0 * 0.7 / XMAX; double a = 5.0 – 2*d;
double f[XMAX]; double g[KMAX];
srand((unsigned)time(NULL));
for(k = 1; k < KMAX; k++){
g[k]=pow(( ek * rk ),-a/2);}
for(x = 0; x < XMAX; x++){ f[x] = 0.0;
for(k = 1; k < KMAX; k++){ double kx = ek * rk * x;
f[x] = f[x]+g[k]*(gar() * cos(kx) - gai() * sin(kx));}
printf("%g\n",f[x]);}
}
0900デフォルトの名無しさん
05/02/04 10:12:01#include <time.h> #include <math.h>
#define KMAX 100 #define XMAX 300
ここがわるい
0901デフォルトの名無しさん
05/02/04 10:14:15しーぷらすぷらすげんご?
しーだぶるぷらすげんご?
それとも他に・・・
0902デフォルトの名無しさん
05/02/04 10:16:050903899
05/02/04 10:25:54なんで定義がわるいのですか??
どうか教えてください。
0904デフォルトの名無しさん
05/02/04 10:36:460905デフォルトの名無しさん
05/02/04 10:37:280906デフォルトの名無しさん
05/02/04 10:37:41――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
・複雑なAAはスレが荒れたり問題が埋もれる原因になりますので使用を控えてください。
―――――――――――――――――――――――――――――――
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで/無期限 のいずれか
[5] その他の制限:
0907899
05/02/04 10:45:45すいませんでした。
【質問テンプレ】
[1] フラクタル幾何学
[2] 長くて書けないので899を参照して下さい。
[3]
[3.1] OS: windows
[3.2] gcc
[3.3] C言語
[4] 期限:2005年02月05日まで/無期限
です。
コンパイルはできるのですが、実行結果が違ってしまいます。
[5] windows.hが使えません。
0908891-892
05/02/04 10:47:31ありがとうございます!
0909デフォルトの名無しさん
05/02/04 11:07:16って何だ
0910デフォルトの名無しさん
05/02/04 11:08:34未定義のシンボル rk(関数 main() )
未定義の関数 'gai' を呼び出した(関数 main() )
0911899,907
05/02/04 11:14:21すいません。移す時にミスをしました。
rk=k gai=garでした。
試行錯誤しているうちに変になってしまいました。
0912デフォルトの名無しさん
05/02/04 12:44:53なんかバグだらけだから一度きちんとコンパイルできたものをアップローダに上げない?
Typoをいちいち修正するのめんどくさいよ。
0913ホルモン
05/02/04 15:16:16[2] 問題文:商品が売れた年は商品の数が倍になります。そうでなかった年は商品の数が13個減ります。商品は1個から始まり、1年目で2個、2年目で4個、3年目で8個になりました。ある年でちょうど100個になりましたが、それは最も早くて何年目のことでしょう。
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:2005年2月9日17:00まで
[5] その他の制限:2分木(線形リスト)を使うこと、途中経過も表示すること。
0914デフォルトの名無しさん
05/02/04 15:28:30>2分木(線形リスト)
ってどういうことだ?
親が2つの子のポインタを持ってるってこと?
0915デフォルトの名無しさん
05/02/04 15:35:57売れた場合と売れなかった場合ということだろう。
0916デフォルトの名無しさん
05/02/04 15:38:26いや,それは分かるけど,
2分岐をリストで表現して良いことある?
配列でいんじゃねーの?
0917ホルモン
05/02/04 15:41:580918デフォルトの名無しさん
05/02/04 15:45:30オレなら幅優先探索でいくけどな。
二分探索木はちょっと書くのがめんどくさい。
0919ぽろじょあ ◆niBmDfC40k
05/02/04 18:18:55ぽろじょあの登場だYO
名前欄に「ぽろじょあ#ぽろっぽ」って書けば、キミも今日から ぽろじょあ◆niBmDfC40kだYO!
*ぽろじょあ◆niBmDfC40kはみんなでコテハンだYO!
*ぽろじょあ◆niBmDfC40kはいつだって全力投球かもYO!!
*ぽろじょあ◆niBmDfC40kは共同体で連続体で群生体かもしれないYO
*ぽろじょあ◆niBmDfC40kはみんななれるからイイぽろじょあばっかりだYO
*ぽろじょあ◆niBmDfC40kは2ちゃんねるの人気者かもしれないYO
*ぽろじょあ◆niBmDfC40kはエムエクース、ニーは分かるけど聞かないでYO!
0920デフォルトの名無しさん
05/02/04 21:03:54#include <stdio.h>
int main(void)
{
printf(" 1年目 2\n");
printf(" 2年目 4\n");
/* ... */
printf("10年目 ... 100\n");
return 0;
}
マジメに2分木+幅優先ってゆーのわ・・・デモンストレーション用だわ・・・
配列に登録データをノードにすりゃ、出来るだろーけど、メンドイ。
0921デフォルトの名無しさん
05/02/04 21:05:070922デフォルトの名無しさん
05/02/04 21:05:530923デフォルトの名無しさん
05/02/04 21:10:51ゲーム探索木じゃねーってばよ。>>922
0924デフォルトの名無しさん
05/02/04 22:44:111.以下の仕様に基づいて,キューにデータ(頂点番号)を追加する関数
void enqueue(int dt)
を定義せよ.
(必要に応じて,ヘッダー・ファイルをインクルードすること.)
* 関数名:enqueue
* 仮引数int dt:キューに追加するデータとして,int型のデータ(頂点番号)を受け取る.
* 戻り値:なし.
* 機能:int型のデータ(頂点番号)を追加・取り出しできるキューに,頂点番号を追加する.
仮引数として受け取ったint型のdtをメンバNumの値としてもつ NODE型のノードを,連結リストの先頭ノードとして追加すること.
また,キューの先頭ノードを指すポインタとして,
以下のグローバル変数を使用すること(必要であれば初期化すること).
NODE *q_head;
2.以下の仕様に基づいて,キューからデータ(頂点番号)を取り出す関数
int dequeue()
を定義せよ(必要に応じて,ヘッダー・ファイルをインクルードすること.).
* 関数名: dequeue
* 仮引数:なし.
* 戻り値 (int型):キューのデータ構造に基づいて取り出されるint型のデータ(頂点番号)
※キューにデータがない場合,他の関数および機能の実行に影響のない戻り値を返すこと.
* 機能:呼び出し側にキューから取り出したデータ(頂点番号(int型))を返す.
上記のvoid enqueue(int dt)のデータ構造に基づいて,連結リストの操作をおこない,
末尾ノード(ノードがひとつの場合は先頭ノード)を取り出すこと.
提出期限は明日月曜までです。よろしくお願いします
0925デフォルトの名無しさん
05/02/04 22:45:290926デフォルトの名無しさん
05/02/04 23:09:140927デフォルトの名無しさん
05/02/04 23:15:41#include <stdio.h>
typedef struct NODE NODE;
struct NODE { int Num; NODE *next; };
NODE *q_head = NULL;
void enqueue(int dt) {
NODE *p = (NODE *) malloc(sizeof(*p));
if (p == NULL) exit(2);
p->Num = dt;
p->next = q_head;
q_head = p;
}
int dequeue(void) {
NODE *p, **prev;
int dt;
if (q_head == NULL) return 0;
for (prev = &q_head, p = q_head; *p; prev = &p->next; p = p->next) ;
*prev = NULL;
dt = p->Num;
free(p);
return dt;
}
0928質問
05/02/05 01:25:30[2] 問題文(含コード&リンク):
ユーザーからコマンドプロンプトの入力を求めてそれを実行する、という部分なのですが、
なにやら昔にやった覚えがあるのですがどうしても思い出せません。
例"copy initial destination"のように、ユーザーがEnterを入力するまでのラインを受け取り、
ソレを"copy","initial","destination"などの各個の文字列として保存したいのです。
よろしくお願いします
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ(バージョン): G++
[3.3] 言語:できればCでお願いします。
[4] 期限:2004年2月7日まで
[5] その他の制限:
0929デフォルトの名無しさん
05/02/05 01:34:24fgets
strtok
0930デフォルトの名無しさん
05/02/05 01:37:43たん、
FOR EACH ARGUMENTO DO PRINNT LN;
0931928
05/02/05 01:58:371年触んないとすっかり忘れるモンですね。
ありがとうございました。
0932ホルモン
05/02/05 09:33:120933デフォルトの名無しさん
05/02/05 14:05:41ってどういうことだ?
0934デフォルトの名無しさん
05/02/05 18:07:37どうせ丸投げするんだったら、もっと早く出してこいよ。
0935デフォルトの名無しさん
05/02/05 18:33:030936デフォルトの名無しさん
05/02/05 18:36:21見切りを付けて即日に出せ。935を見習え。
0937デフォルトの名無しさん
05/02/05 18:41:330938デフォルトの名無しさん
05/02/05 18:44:270939デフォルトの名無しさん
05/02/05 18:55:050940デフォルトの名無しさん
05/02/05 18:58:27専門学校の住所録作成の課題です。
友人に助けてもらいながら進めていたのですが、行き詰まってしまいました。
[1] 授業単元:プログラミング基礎
[2] 問題文
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
no184 9641のソースです。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):BorlandC++
[3.3] 言語:C
[4] 期限:2005年2月13日まで
[5] その他の制限:特になし。
住所録の機能のうち検索、削除、追加、全表示はなんとかできたのですが、
ファイルを使った関数saveとloadが作れないでいます。
ソースの中では{未完}と書いてあります。
講師にヒントとしてfwrite関数を使うよう言われているんですが、イマイチうまくいきません。
ファイルに書き込むsave関数と読み込みのload関数を作っていただきたいです。
よろしくお願いします。
0941デフォルトの名無しさん
05/02/05 19:00:02何もせず、出されたその日にここに来る奴
直前まで考えたが、結局出来ずにここに来る奴
直前まで何もせず、前日辺りに焦ってここに来る奴
下に行くほど救いようが無い
0942デフォルトの名無しさん
05/02/05 19:02:23問題文&ソースを張ってあるURLを出せよ
一応番号は書かれているが、なんでわざわざ答える側がソースを探しに行かにゃならんのだ
0943940
05/02/05 19:09:58失礼しました。
以下のものです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=185
元々は友人のソースのコピーだったのですが、色々改変し、自分用にコメントもいれています。
見難いかも知れませんが、よろしくお願いします。
0944デフォルトの名無しさん
05/02/05 20:24:400945デフォルトの名無しさん
05/02/05 20:42:58int save(Address *ap, int cnt)
{
FILE *fp = fopen("data.bin", "rb");
if (fp == NULL) {
return 0;
}
return write(ap, sizeof(*ap), cnt, fp);
}
int load(Address *ap, int cnt)
{
FILE *fp = fopen("data.bin", "rb");
if (fp == NULL) {
return cnt;
}
return fread(ap, sizeof(*ap), cnt, fp);
}
0946デフォルトの名無しさん
05/02/05 20:56:30int save(Address * ap, int cnt)
{
int ic;
FILE * fp = fopen("住所録.txt", "w");
for (ic = 0; ic < cnt; ++ic) {
fprintf(fp, "%s\n%s\n%s\n", ap[ic].Add, ap[ic].Name, ap[ic].Tel);
}
fclose(fp);
return cnt;
}
int load(Address * ap, int)
{
FILE * fp = fopen("住所録.txt", "r");
for (cnt = 0; fscanf(fp, "%50[^\n]%20[^\n]%10[^\n]", ap[ic].Add, ap[ic].Name, ap[ic].Tel) == 3; ++cnt) {
}
fclose(fp);
return cnt;
}
/* そうそう、仕様が明示されていないのでファイル名は固定、エラーチェックも割愛。 */
0947デフォルトの名無しさん
05/02/05 20:59:53・関数名のtype。
・ファイルをクローズしていないから繰り返し操作するといずれ破綻する。
・書き込み失敗時にデータが破棄されてしまうのは如何なものか。
・最大件数くらいチェックしたら?
>>946
・全くエラーチェックしないというのも剛毅だw
・出力は兎も角、入力をそこまでこらなくてもいいのでは?
0948デフォルトの名無しさん
05/02/05 21:25:450949デフォルトの名無しさん
05/02/05 21:26:032番目と3番目は順番が逆じゃね?
0950デフォルトの名無しさん
05/02/05 21:28:25・出来るけど面倒なだけ
・出来ないと分かってるから
にもよるんじゃない
0951デフォルトの名無しさん
05/02/05 22:02:33てやつにあてはめると>>941でいいような気もするが
0952デフォルトの名無しさん
05/02/05 22:20:52>自分用にコメントもいれています。
いくつか嘘のコメントが入っていますね。
0953デフォルトの名無しさん
05/02/05 22:27:560954デフォルトの名無しさん
05/02/05 22:30:070955945
05/02/05 22:31:14いーかげんなんで、直す気はないが、指摘してくれるのは、利用者のためにいいことです。
まーダレか直してくれるっしょ。たたき台程度よ。おいらのは。
0956940
05/02/05 22:33:04ありがとうございます。
946さんのやりかたを参考に進めていってます。
とりあえず、コンパイルはできましたがDOS窓からload関数を実行しようとすると
強制終了してしますので、ソースをよく読んでみます。
>>952
探してみます。
コメントのうち自分で書いたのは2割程度なので・・・。
0957ぼるじょあ@スレ立てお願い 以下テンプレ ◆yBEncckFOU
05/02/05 22:42:07――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
・複雑なAAはスレが荒れたり問題が埋もれる原因になりますので使用を控えてください。
―――――――――――――――――――――――――――――――
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで/無期限 のいずれか
[5] その他の制限:
【アップローダー】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【歴代スレは>>1-10辺り】
39代目: http://pc5.2ch.net/test/read.cgi/tech/1106650397/
38代目: http://pc5.2ch.net/test/read.cgi/tech/1105541524/
37代目: http://pc5.2ch.net/test/read.cgi/tech/1103913840/
36代目: http://pc5.2ch.net/test/read.cgi/tech/1102753497/
35代目: http://pc5.2ch.net/test/read.cgi/tech/1101568895/
34代目: http://pc5.2ch.net/test/read.cgi/tech/1100530682/
33代目: http://pc5.2ch.net/test/read.cgi/tech/1097932699/
32代目: http://pc5.2ch.net/test/read.cgi/tech/1097592876/
31代目: http://pc5.2ch.net/test/read.cgi/tech/1095075678/
30代目: http://pc5.2ch.net/test/read.cgi/tech/1091954342/
0958ぼるじょあ ◆yBEncckFOU
05/02/05 22:42:4928代目: http://pc5.2ch.net/test/read.cgi/tech/1089974839/
27代目: http://pc5.2ch.net/test/read.cgi/tech/1089448445/
26代目: http://pc5.2ch.net/test/read.cgi/tech/1088860889/
25代目: http://pc5.2ch.net/test/read.cgi/tech/1087929711/
24代目: http://pc5.2ch.net/test/read.cgi/tech/1086612317/
23代目: http://pc5.2ch.net/test/read.cgi/tech/1085149383/
22代目: http://pc5.2ch.net/test/read.cgi/tech/1083050221/
21代目: http://pc5.2ch.net/test/read.cgi/tech/1078157730/
20代目: http://pc5.2ch.net/test/read.cgi/tech/1075217631/
19代目: http://pc5.2ch.net/test/read.cgi/tech/1073566342/
18代目: http://pc5.2ch.net/test/read.cgi/tech/1071407728/
17代目: http://pc5.2ch.net/tech/kako/1070/10704/1070469896.html
16代目: http://pc5.2ch.net/tech/kako/1069/10698/1069837000.html
15代目: http://pc5.2ch.net/tech/kako/1068/10689/1068950713.html
14代目: http://pc5.2ch.net/tech/kako/1067/10671/1067175933.html
13代目: http://pc5.2ch.net/tech/kako/1064/10645/1064541405.html
12代目: http://pc5.2ch.net/tech/kako/1060/10607/1060706382.html
11代目: http://pc5.2ch.net/tech/kako/1058/10582/1058283913.html
10代目: http://pc5.2ch.net/tech/kako/1057/10570/1057070174.html
9代目: http://pc5.2ch.net/tech/kako/1055/10559/1055944101.html
8代目: http://pc5.2ch.net/tech/kako/1055/10550/1055056940.html
7代目: http://pc5.2ch.net/tech/kako/1053/10539/1053963794.html
6代目: http://pc5.2ch.net/tech/kako/1053/10530/1053045530.html
5代目: http://pc5.2ch.net/tech/kako/1051/10515/1051594046.html
4代目: http://pc5.2ch.net/tech/kako/1045/10450/1045074808.html
3代目: http://pc5.2ch.net/tech/kako/1041/10419/1041992392.html
2代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
1代目: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html
ではよろしく
0959デフォルトの名無しさん
05/02/05 23:56:480960デフォルトの名無しさん
05/02/05 23:58:22C/C++の宿題を片付けます
でいいじゃないか。
0961デフォルトの名無しさん
05/02/06 00:03:000962940
05/02/06 00:09:31しかし、自分なりにいじってみたのですがload関数がうまくいきません。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=185
>>942を改変したものです。
save関数は正常に動くのですが、load関数が動きません。
コンパイルはされるのですが、DOS窓の画面からsave関数を実行しようとすると
強制終了してしまいます。
何度も申し訳ありませんが、よろしくお願いします。
0963つーか、宿題じゃないだろ
05/02/06 00:12:26最後のforの{}を消すなら;で。
0964940
05/02/06 00:20:55ありがとうございます。
早速修正しました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=185
0965デフォルトの名無しさん
05/02/06 01:59:510966ぼるじょあ ◆yBEncckFOU
05/02/06 02:01:420967940
05/02/06 02:26:20ありがとうございました。
0968デフォルトの名無しさん
05/02/06 02:35:07しばらくお待ちを
0969デフォルトの名無しさん
05/02/06 02:40:40立てた。
0970デフォルトの名無しさん
05/02/06 03:30:030971デフォルトの名無しさん
05/02/06 10:01:31それとか、月曜までの宿題とかは?
夜駆け込みだと、手伝えないぞ。
0972デフォルトの名無しさん
05/02/06 11:23:26文字列abcdefを配列に入力し、配列の中で小文字を大文字に変換した後、
ABCDEFと出力するプログラムを作成せよ。a=97,A=65である。
よろしくお願いします。
0973デフォルトの名無しさん
05/02/06 11:31:16int main () {
int i;
char str[] = "abcdef";
for (i = 0; i < sizeof(str)/sizeof(char); ++i)
switch (str[i]) {
case 'a':
str[i] = 'A';
break;
case 'b':
str[i] = 'B';
break;
case 'c':
str[i] = 'C';
break;
case 'd':
str[i] = 'D';
break;
case 'e':
str[i] = 'E';
break;
case 'f':
str[i] = 'F';
break;
}
printf("%s\n", str);
}
0974デフォルトの名無しさん
05/02/06 11:33:430975デフォルトの名無しさん
05/02/06 11:42:04int main()
{
int i;
char str[] = "abcdef";
for(i = 0; i < sizeof(str); i++)
str[i] -= 97 - 65;
puts(str);
return 0;
}
0976デフォルトの名無しさん
05/02/06 13:08:50sizeofじゃなくてstrlenね
あとstr[i] -= 97 - 65よりも
stri[i] = str[i] - 'a' + 'A'のほうが良いよ
0977デフォルトの名無しさん
05/02/06 13:19:23char *ret = s;
while (*s) {
if (*s >= 'a' && *s <= 'z')
*s += 'A' - 'a';
s++;
}
return ret;
}
うーん。入力部は任せるとして。ASCIIコードを想定。(SJISやJISを入れるとイカレル)
0978972
05/02/06 14:07:52自分はこんな感じで書いてしまいました。
#include <stdio.h>
main()
{
char s[7]="abcdef";
int i,d=-32;
for(i=0;i<=5;i++)
{
s[i]=s[i]+d;
printf("%c",s[i]);
}
}
0979デフォルトの名無しさん
05/02/06 15:36:07何故retを使う
0980デフォルトの名無しさん
05/02/06 16:43:330981デフォルトの名無しさん
05/02/06 18:27:15自分の能力では無理だと気づくのが遅すぎる人は論外かと思う
それぞれ担当部分を分けているとき、直前になって「全然できていない」とか言われるとこっちにしわ寄せが来る
もうちょい早く言ってくれれば、大まかな部分だけを余裕のある奴が手伝って残りを任せるのに
まあそういうことが続くと、手伝う側の人間が潰れてさらに苦しくなるわけだが
0982デフォルトの名無しさん
05/02/06 21:18:49>>973が一番正しい解法だと思うぞ。
0983デフォルトの名無しさん
05/02/07 03:24:050984デフォルトの名無しさん
05/02/07 08:42:27>>980氏の言うように、便利だから。
char s[] = "abc";
printf("%s\n", strtoupper(s));
とゆーふーに、使えるんで、便利っしょ。
標準ライブラリのstr...系はそういうふうに考えられて作ってあるよん。
0985デフォルトの名無しさん
05/02/07 10:09:270986デフォルトの名無しさん
05/02/07 10:43:410987デフォルトの名無しさん
05/02/07 13:42:29今日の名言
寝言は寝て言え
0988デフォルトの名無しさん
05/02/07 16:39:36今日二回目の名言
A「おまえの好きなものってなに?」
B「んっ?俺?え〜っと 女のわがまま かなっ」
0989デフォルトの名無しさん
05/02/08 06:37:030990デフォルトの名無しさん
05/02/08 07:05:060991デフォルトの名無しさん
05/02/08 07:10:380992デフォルトの名無しさん
05/02/08 08:50:170993デフォルトの名無しさん
05/02/08 08:51:100994デフォルトの名無しさん
05/02/08 09:08:270995デフォルトの名無しさん
05/02/08 09:09:210996デフォルトの名無しさん
05/02/08 09:09:24埋めよう
0997デフォルトの名無しさん
05/02/08 09:10:170998デフォルトの名無しさん
05/02/08 09:10:240999デフォルトの名無しさん
05/02/08 09:11:041000デフォルトの名無しさん
05/02/08 09:11:0410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。