- 1 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:55:25 ]
- あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】 回答者の便宜のため、質問の際は以下を行うことを推奨します。 ・質問は【質問テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう. ・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。 ・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。 【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク):() [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html 【過去ログ検索】 chomework.sakura.ne.jp/ 【wiki】 www23.atwiki.jp/homework/ 【前スレ】 C/C++の宿題を片付けます 102代目 pc11.2ch.net/test/read.cgi/tech/1197132472/
- 72 名前:デフォルトの名無しさん [2008/01/15(火) 19:31:35 ]
- >>69
ホントにあんたって人は一人じゃ何にもできないんだから! #include <stdio.h> int main(void) { double answer = 0; int n; int i; printf("input N >>"); scanf("%d", &n); for (i = 1; i <= n; ++i) { /* answer += (i & 1)? 1.0 / i: -1.0 / i; */ if (i % 2 != 0) /* 奇数項は足し算 */ answer = answer + 1.0 / i; else /* 偶数項は引き算 */ answer = answer - 1.0 / i; } printf("answer: %lf\n", answer); return 0; }
- 73 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:34:33 ]
- >>72
ありがとうございます でもif分を使わなくてもできました!! for(i=1;i<=n;i+=2)answer+=1.0/i; for(i=2;i<=n;i+=2)answer-=1.0/i; でいいんですかね?
- 74 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 20:10:22 ]
- ツンデレVSヤンデレ
- 75 名前:デフォルトの名無しさん [2008/01/15(火) 20:18:23 ]
- 前スレ988
pc11.2ch.net/test/read.cgi/tech/1199515728/988 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5779.txt P10,11にSW、P50,51,52,53にLED、SW押すと別のLEDを点灯するだけ タイマV (ベクタ22) の割り込み使ってるからベクタテーブル書き換え忘れないようにな ルネサス謹製のヘッダファイル使ってるけど、大丈夫か?
- 76 名前:デフォルトの名無しさん [2008/01/15(火) 20:21:52 ]
- >>75
ごめんクロック周波数20MHzで作ってる 周波数違うと一部違うから、わかんなきゃ言ってくれ あとヘッダが3694になってるけどI2C使ってなきゃ3664でも動く
- 77 名前:デフォルトの名無しさん [2008/01/15(火) 20:44:08 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 下のリンク先のプログラムは年月日の差を求めるプログラムなのですが、 ・2つの入力年月日を実行時にキーボードから入力させるか ・2つの入力年月日をファイルから与えるか ・2つの入力年月日をコマンドライン引数として与える この3つ条件のどれか1つを追加したプログラムに書き直したい。 プログラム:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5780.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: ([2008年1月16日12:00まで [5] その他の制限:できれば3つの条件のプログラムをそれぞれ教えて頂けたら助かります。 1つでもかまいません。宜しくお願いいたします。
- 78 名前:52 mailto:sage [2008/01/15(火) 22:00:42 ]
- >>60
親切にありがとうございます。助かりました。
- 79 名前:デフォルトの名無しさん [2008/01/15(火) 22:05:18 ]
- [1] 授業単元:プログラミング
[2] 問題文:物理プログラミングをせよ ウィンドウズアプリケーションで作成せよ 物: 正四角形(2次元)と地面を作る 地面の動き: 方後キーの←→でその方向に傾く 正四角形の動き: 地面に落ちたり 地面が傾いたらすべるようにする なおDxLibを使うこと [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:c [4] 期限:2008年1月18日 [5] その他の制限:期日しかいのでよろしくおねがいします お願いいたします
- 80 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:10:52 ]
- >>79
期日しかいので無理。
- 81 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:16:26 ]
- >>79
DxLib + gcc がしかいだよなぁ
- 82 名前:デフォルトの名無しさん [2008/01/15(火) 22:18:07 ]
- >>69
えー((+_+)) お願いします(-_-メ)
- 83 名前:79 [2008/01/15(火) 22:45:21 ]
- >>80すみません修正いたします
期日は無期ですよろしくお願いいたします
- 84 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:47:20 ]
- >>83
じゃあ、半万年後にまた会いましょう
- 85 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 23:07:05 ]
- >>79
gccでDxLib使うってからには、ライブラリのビルドは出来てるんだよな?
- 86 名前:デフォルトの名無しさん [2008/01/15(火) 23:09:28 ]
- [1] 授業単元:プログラミング技術
[2] 問題文(含コード&リンク): ファイルに一行にひとつずつ整数が書いてあるとする。このファイルを コマンドラインで指定して、リストに入力するプログラムを書け。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限:1月22日 [5] その他の制限: よろしくおねがいします
- 87 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 23:14:25 ]
- >>85
俺も気になったんでググってみると、DxLibは一応Cygwin or MinGWで使えるらしい 但し、関数ポインタを一々DLLから取ってきて使う必要があるらしく煩雑 もともとVC++/BCC用なんだからgcc前提でDxLibを強要する出題内容はセンスを疑うわな 宿題出されたヤツのやる気を削ぐようなこと言って申し訳ないが
- 88 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 23:37:31 ]
- >>40
これ表示するオブジェクトとかどうすんの? 球体に世界地図のテクスチャでも貼って、地球儀作って表示させんのかな そんならカメラより地球儀動かした方が簡単な気がするけど
- 89 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 23:52:48 ]
- >>46
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <regex.h> int main(int argc, char *argv[]) { regex_t pat; int i, err; char buf[1024]; if(argc < 3) return fprintf(stderr, "usage : %s pattern filename\n", argv[0]), 1; if((err = regcomp(&pat, argv[1], REG_EXTENDED | REG_NOSUB | REG_NEWLINE)) != 0){ regerror(err, &pat, buf, sizeof(buf)); return fputs(buf, stderr), 1; } for(i = 2; i < argc; i++){ FILE *fp; if((fp = fopen(argv[i], "r")) == NULL) return perror(argv[i]), 1; while(fgets(buf, sizeof(buf), fp)) if(!regexec(&pat, buf, 0, NULL, 0)) fputs(buf, stderr); fclose(fp); } regfree(&pat); return 0; }
- 90 名前: ◆5MBke502AE mailto:sage [2008/01/15(火) 23:54:54 ]
- >>88
オブジェクトは,建造物を3Dに起こしたもので, x-z平面を地面としてy軸方向に高さを伸ばしたような物体を想定しています! GPSから得られた位置をもとに, その建物オブジェクトを眺めた画像を保存し, 更に, GPS位置からある直線上(撮影方向に対する法線)にカメラ視点をズラして, 再び, オブジェクトを眺めた画像を得て…と繰り返して, 複数の画像を得ることが目的です! 言葉足らずですみません!
- 91 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 23:59:17 ]
- 【時間切れ】 (1/15)
[前スレ] >934 >514 >881 >957 >952 【未解決問題】 pc11.2ch.net/test/read.cgi/tech/1199515728/986 期限切れだが早めに (pass:c) >>40 1/16 12:00 >>77 1/16 12:00 >>86 1/22 pc11.2ch.net/test/read.cgi/tech/1199515728/824 1/18 pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31 >>79 無期限
- 92 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 00:21:54 ]
- >>45
>>47 お二方とも、本当にありがとうございます いつかは自分も宿題を手伝う側になりたいと思いつつ、精進して参ります
- 93 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 00:26:37 ]
- >>77
> ・2つの入力年月日を実行時にキーボードから入力させるか もう実装されてね?
- 94 名前:デフォルトの名無しさん mailto:age [2008/01/16(水) 00:32:39 ]
- >>48
#include <stdio.h> int kensaku(char *data , char target) { int count; for(count=0;*data!='\0';*data++){ *data==target ? count++:1; } return count; } int main(void) { int i; char input[100]; char target[100]; printf("キーから文字を数文字入力してください="); scanf("%s",input); printf("調べる文字を入力してください="); scanf("%s",target); for(i=0;target[i]!='\0';i++){ printf("入力された文字列の中に %c は、%d 個ありました。\n",target[i],kensaku(input,target[i])); } printf("\n何か入力をしてください\n"); scanf("%s",input); return 0; }
- 95 名前:77 mailto:sage [2008/01/16(水) 00:35:24 ]
- >>93さん
すいませんそうですね!誤りです。 残りの条件の方でできればお願いいたします。
- 96 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 01:02:47 ]
- >>77
int m22 = 1, d22 = 1;の下からy_count = year_prev(&y1, &y2);上までを以下に書き換えでいかがでしょう char buf[100]; FILE *fp; if (argc == 7) { /* 引数の時 ./hoge.exe y1 m1 d1 y2 m2 d2 */ y1 = atoi(argv[1]); m1 = atoi(argv[2]); d1 = atoi(argv[3]); y2 = atoi(argv[4]); m2 = atoi(argv[5]); d2 = atoi(argv[6]); show_date(y1, m1, d1); show_date(y2, m2, d2); } else if (argc == 2) { /* ファイルのとき ファイルの中身はテキストでy1 m1 d1 y2 m2 d2 */ fp = fopen(argv[1], "r"); fgets(buf, sizeof(buf), fp); sscanf(buf, "%d %d %d %d %d %d", &y1, &m1, &d1, &y2, &m2, &d2); show_date(y1, m1, d1); show_date(y2, m2, d2); fclose(fp); }else { input_date(&y1, &m1, &d1); show_date(y1, m1, d1); input_date(&y2, &m2, &d2); show_date(y2, m2, d2); }
- 97 名前: ◆gDKJL3vNys mailto:sage [2008/01/16(水) 01:14:56 ]
- pc11.2ch.net/test/read.cgi/tech/1199515728/988
前スレ988です >>75 遅くなりすみませんレスありがとうございます 情報の後だしかつ、わざわざ作っていただき申し訳ないのですが 学習範囲外技術を含んだ非常に高度なプログラムなのでバレてしまうかもしれません またルネサスのヘッドファイルだと問題あるのかどうかもよく分かりません クロックも20MHzだと問題あるのでしょうか? 本日(昨日?)学校より今までに学習しそれを利用して製作した 今までのプログラムをアップしておきました ろだ、の5781.zipです 後出しかつせかっく作っていただいたのに文句ばかりつけて 本当に申し訳ありませんがアップしたプログラムの組み合わせや応用で 何かオリジナルの課題は作成可能でしょうか? アップしたプログラムと同じや似た内容だとはねられる可能性があるので 自分なりにも考えていますが現状ではお手上げです 時間も少なく申し訳ないですが、どうかよろしくお願いします。
- 98 名前:77 mailto:sage [2008/01/16(水) 02:11:06 ]
- >>96さん
引数でもファイルからでもプログラムの実行が行えました! 教えていただいたプログラムは他の課題でも参考に使えそうです。 本当にありがとうございました!
- 99 名前:75 mailto:sage [2008/01/16(水) 12:00:27 ]
- >>97
課題サンプル見たよ 3664.hのヘッダは多分ルネサスから持ってきたもんだと思うから大丈夫 アップしたプログラムと課題には特に差はなかったです 課題のものが作れるならアップしたものも十分作れる…はず 日中時間ないんで夜になるけど、課題に合わせて修正してみるよ アップしたプログラムの動作はLEDが以下のように並んでるとして、 常に一つだけ点灯するもの ○○○● SW2押す→ ○○●○ SW2押す→ ○●○○ SW1押す→ ○○●○ 上のようにSWが押されると点灯しているLEDをずらしていくだけ SWは一回押されたら一つLEDをずらす、SWを一回離してもう一回押さないと 動かないようにしてます、内容的にはこんなんでいいのかな ちなみにクロック違うとタイマのカウント速度が違ってくるので TV.TCORA = 156 とかやってる部分をクロックに合わせて変更する必要があります 3664だと多分16MHzだと思いますが、どうなってるでしょう
- 100 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 12:09:17 ]
- [1] 授業単元:プログラミング言語II
[2] 問題文(含コード&リンク): ポインタ配列を用いて月の名前を英語名で静的変数に格納しなさい。 ポインタ配列を用いて各文字列を走査し、「r」が入っている月を求めなさい。 見つかった月の名前を表示しなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008/01/16 24:00まで [5] その他の制限: 特になし 期限が今日まで申し訳ないですが、よろしくお願いします。
- 101 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 12:29:39 ]
- 月って英語でlunaだっけ?と思った俺は負け組 orz
- 102 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 12:41:14 ]
- >>99の優しさを独り占めにしたい。
>>100 #include <stdio.h> int main(void) { char *month[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; int i; char *p; for(i = 0; i < sizeof(month)/sizeof(month[0]); i++){ for(p = month[i]; *p != '\0'; p++) if(*p == 'r') break; if(*p != '\0') puts(month[i]); } return 0; } sizeof(month)/sizeof(month[0])はたまたま動くのかな?(そんなら12にしないと駄目だけど)
- 103 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 12:57:36 ]
- 動くのはたまたまじゃないが、要素数が分かってるからやる必要はないかもな。
- 104 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:00:24 ]
- 配列の要素数を指定してないんだからsizeofの方が自然じゃね?
*month[12]とかしてるなら12でもいいけど。
- 105 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:02:44 ]
- それだと文字数が12の予感
- 106 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:03:58 ]
- 一度他の変数に限界値保存して比較したほうがいいな。
forループ抜けるまで変動はしないのだから、毎回sizeof2つ使って除算までしてたら無駄過ぎる。 あとbreakする前にputsすればいいところを、わざわざif文外に持ってくる理由も分からん。
- 107 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:08:55 ]
- static忘れてね?
- 108 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:11:11 ]
- 忘れてた。
- 109 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:22:35 ]
- sizeof(array) / sizeof(* array)は(コンパイル時に確定するから)定数だよ。
- 110 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:24:20 ]
- >>105
アホがいるw
- 111 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:37:35 ]
- >>110
すんませんでした。
- 112 名前: ◆gDKJL3vNys mailto:sage [2008/01/16(水) 14:30:34 ]
- >>99
レスありがとうございます それで全然かまわないのでよろしくお願いします お手数おかけし申し訳ありません
- 113 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 17:58:06 ]
- [1] 授業単元: C言語
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5782.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:visual studio 2005 [3.3] 言語: C言語 [4] 期限: 今日中です。。。 [5] その他:よろしくお願い致します。
- 114 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 19:01:05 ]
- >>113
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5783.txt Switchを再入力させる条件が読み取れなかったので、 その辺は自身で修正して。
- 115 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 19:06:48 ]
- >>113
おいらもできた。マルチバイト文字セットをつかってくれ #include <stdio.h> #include <stdlib.h> #include <ctype.h> int main(void) { #define BUFSIZE 256 char buffer[BUFSIZE]; unsigned char val = 0; int bitpos, bitnum, i; while (1) { printf("\nBit number : 7 6 5 4 3 2 1 0\n" "Bit :"); for (i=7; i >=0 ; --i) printf( ((val >> i) & 1) ? " 1" : " 0"); while (1) { printf("\n\ninput change bit : "); fgets(buffer, BUFSIZE, stdin); bitpos = atoi(buffer); if (buffer[0] == '.') { return 0; } else if (isdigit(buffer[0]) && (bitpos >= 0 && bitpos <= 7)) { break; } puts("\nSorry. Input 0-7 number.\n" "(. is end)"); } while(1) { printf("\nSwitch on(1) or off(0) ? : "); fgets(buffer, BUFSIZE, stdin); bitnum = atoi(buffer); if (isdigit(buffer[0]) && (bitnum == 0 || bitnum == 1)) { val = (bitnum == 1) ? (val | (1 << bitpos)) : (val & ~(unsigned char)(1 << bitpos)); break; } puts("\nSorry. Input 0 or 1."); } } return 0; }
- 116 名前:114 mailto:sage [2008/01/16(水) 19:16:28 ]
- あ、バイトじゃなくてビットだから間違ってるorz
- 117 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 19:21:30 ]
- >>113の人気に嫉妬しつつ書いてみた
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5784.txt
- 118 名前: ◆gDKJL3vNys mailto:sage [2008/01/16(水) 19:36:27 ]
- >>99
自分なりに調べてみましたが 仰られる通り 3664ではシステムクロック信号はΦ16MHzで 周波数16MHzでは1ステートは1/16MHz=0.0625μsになるようです 遅くなり申し訳ありませんがよろしければご参考ください
- 119 名前:114 mailto:sage [2008/01/16(水) 19:37:29 ]
- >>114の修正版。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5785.txt
- 120 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 20:00:39 ]
- >>114
>>115 >>117 本当にありがとうございます。
- 121 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 20:35:15 ]
- [1] 授業単元:コンパイラ
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5786.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語:どちらでも可 [4] 期限: 1月17日10:00まで [5] その他の制限:特に無し よろしくお願いしますm(__)m
- 122 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:33:08 ]
- #include <stdio.h>
int main(void) { char buf[100], delim[] = "=)(+*-/."; char *p, *q; printf("入力 : "); fgets(buf, sizeof(buf), stdin); for (p = buf; *p != '\0'; p++) { for (q = delim; *q != *p && *q != '\0'; q++); if (*q) printf("\n%c\n", *p); else putchar(*p); } return 0; }
- 123 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 22:38:26 ]
- >>121
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5787.txt
- 124 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 22:51:02 ]
- [1] 授業単元:プログラミング
[2] 問題文: 番号(整数4桁)と氏名(文字型30バイト)から構成される構造体を定義し、データを入力してその内容を表示するプログラムを作成しなさい。 なお、プログラムの終了条件は、ゼロ以下の番号が入力された時点とする。 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VisualStudio2005 [3.3] 言語: C [4] 期限:1月23日 [5] その他の制限: よろしくお願いします。
- 125 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:07:56 ]
- #include <stdio.h>
struct _data{ int number; char name[30]; }; int main() { int i, j, n; char buf[100]; struct _data data[100]; for (i = 0; i < 100; i++) { printf("number : "); fgets(buf, sizeof(buf), stdin); sscanf(buf, "%d", &n); if (n < 0) break; data[i].number = n; printf("name : "); fgets(buf, sizeof(buf), stdin); sscanf(buf, "%s", data[i].name); } for (j = 0; j < i; j++) printf("%d %s\n", data[j].number, data[j].name); return 0; } 配列でよかったのだろうか?
- 126 名前:デフォルトの名無しさん [2008/01/16(水) 23:08:55 ]
- >>118
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5788.txt 一応修正版、割り込みとかなしにしました ビットシフト "<<" とかがわからんとかの話じゃないことを祈る
- 127 名前:デフォルトの名無しさん [2008/01/16(水) 23:17:40 ]
- >>118
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5789.txt 連投すまん、ビットシフトも抜いた
- 128 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:24:37 ]
- >>102
ありがとうございます! おかげで助かりました。
- 129 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:38:43 ]
- >>121
#include<stdio.h> int main(void){ char buf[100+1]; for(;;){ if(fscanf(stdin, "%100[A-Za-z0-9]", buf)!=1) if(fscanf(stdin, "%1[(+*/.),-]", buf)!=1){ if(fscanf(stdin, "%1[\n]", buf)!=1) fprintf(stderr, "\nError: unexpected character.\n"); break; } puts(buf); } return 0; }
- 130 名前:デフォルトの名無しさん [2008/01/16(水) 23:55:12 ]
- ITEM *insert(ITEM **root, char*str)
{ ITEM *pos; ITEM *tmp; tmp = (ITEM *) *malloc(sizeof (ITEM));//領域取得 if(tmp == NULL){//取得領域失敗 return NULL; } //取得した領域の初期化 memset((void *)tmp, '\0', sizeof(ITEM)); strcpy(tmp -> str , str); //入力された文字列を領域に設定 //*rootに保存 if(*root == NULL){ //リストが空か? *root = tmp ; } else{//リストの末尾を探して追加 pos = *root; while(pos -> next != NULL){ //次はあるか? pos = pos -> next; } pos -> next = tmp; } return tmp; } 入力された文字列をリストに格納するプログラムの一部です。 しかしこれだと最後に入力した文字列が表示されなくて困っています。 おそらくこの部分に問題があると思うのですが、おかしい部分はあるでしょうか?
- 131 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 00:04:49 ]
- >>130
スレ違い 宿題だというなら>>1を読んでもう一度よく考えてみよう。
- 132 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:03:39 ]
- こういうのって再帰使って処理するほうが楽だと思うんだけど。
tmp->nextがNULLじゃ無いんじゃない?
- 133 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:05:50 ]
- NULLが0な処理系ならmemsetでNULLになってね?
それより、俺は返り値の意味があるのかとかmallocの前の*は何なのかとか気になるけど。
- 134 名前:デフォルトの名無しさん [2008/01/17(木) 01:11:41 ]
- >>132
指摘ありがとうございます。 tmp->nextがNULLじゃ無いんじゃない? ってのは while(pos -> next != NULLのことでしょうか? >>133 mallocの前の*は、単なる消し忘れでした。
- 135 名前: ◆gDKJL3vNys mailto:sage [2008/01/17(木) 01:18:59 ]
- >>127
ありがとうございます! これからコンパイルして動作確認してみます 色々本当にありがとうございました
- 136 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:22:32 ]
- LEDを赤く光らせたり青く光らせたりすると面白そう
- 137 名前:134 [2008/01/17(木) 01:41:51 ]
- すいません。
自己解決しました。 なんかホントに的外しな質問をしてしまいましたw
- 138 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:54:44 ]
- 【質問テンプレ】
[1] 授業単元: [2] 問題文(含コード&リンク):正数nとbを10進数としてキーボードから入力すると、 nをb進数で表示するプログラムを作成せよ。 実行例 24[enter] 8[enter] 24(10) = 30(8) [3] 環境 [3.1] OS:window [3.2] コンパイラ名とバージョン:BCC [3.3] 言語:C [4] 期限:1/17 [5] その他の制限:特にありません
- 139 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:55:52 ]
- b進数の範囲は?
- 140 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:57:06 ]
- >>139
すみません、2~36でお願いします
- 141 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 02:14:42 ]
- >>138
#include<stdio.h> const char *s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; void conv(int n,int b){ if(n>0){ conv(n/b,b); putchar(*(s+n%b)); } } int main(void){ int n,b; scanf("%d",&n); scanf("%d",&b); printf("%d(10)=",n); conv(n,b); printf("(%d)\n",b); return 0; } てきとー。おやすみなさい。
- 142 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 04:45:59 ]
- [1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):文字列として入力した式(一行)を計算し、その値を表示するプログラム。 [3] 環境 [3.1] OS:windows XP [3.2] コンパイラ名とバージョン:Visual Studio 8 [3.3] 言語:C [4] 期限:1/18 [5] その他の制限:少なくとも2つの2桁の整数に対する計算(四則演算)ができること。 どうかよろしくお願いしますm( _ _ )m
- 143 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:46:29 ]
- 【時間切れ】 (1/16)
>40 【未解決問題】 pc11.2ch.net/test/read.cgi/tech/1199515728/986 期限切れだが早めに (pass:c) >>142 1/18 pc11.2ch.net/test/read.cgi/tech/1199515728/824 1/18 >>86 1/22 pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31 >>79 無期限
- 144 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:51:33 ]
- [1] 授業単元:画像処理
[2] 問題文(含コード&リンク):円周上の点の複数の座標から円の中心(a,b)や半径rを求める [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition [3.3] 言語: C++ [4] 期限: 無期限 [5] その他の制限: 特になし
- 145 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:57:26 ]
- >>144
点は3つでいいのかな?
- 146 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:07:47 ]
- >>145
100個ぐらいからです・・・。 まったくわからないんです。よろしくお願いします。。。
- 147 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:17:34 ]
- 円を特定するには、一直線上にない異なる3点で必要十分じゃね?
- 148 名前:144 mailto:sage [2008/01/17(木) 09:21:01 ]
- すいません。問題間違いました。
正しくは、100個の座標からそれが円であるかどうか(完璧にきれいな円でなくてもよい)を判定するプログラムの作成でした。 よろしくお願いします。。。
- 149 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:25:05 ]
- 判定方法は提示してもらわんとねぇ。
- 150 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:28:13 ]
- >>149
すいません!ハフ変換を使って判定します。 色々と足りないところだらけで申し訳ありません。。。
- 151 名前:デフォルトの名無しさん [2008/01/17(木) 12:52:31 ]
- [1] 授業単元: プログラミング入門
[2] 問題文 (1)走行距離10kmまでは基本料金の6000円。10kmを超えた場合は、超えた距離に対して1kmあたり50円が加算される。 (2)深夜料金10時以降5時までは最終的な料金を2割増しする20キロを超えると1割引とする。 (3)迎車を使用した場合は400円として(1)〜(3)を入力して料金を出力するプログラムを作れ。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition [3.3] 言語: C [4] 期限: 1月17日 [5] その他の制限:関数まで(初期の簡単なプログラムです)
- 152 名前:デフォルトの名無しさん [2008/01/17(木) 12:53:06 ]
- 151続き
(1)までのプログラム #include<stdio.h> main() { int run,price; printf("走行距離(km)を入力せよ:"); scanf("%d",&run); if(run<=10) { printf("料金は6000円です\n"); } else { price=(run-10)*50+6000; printf("料金は%d円です\n",price); } } (2)と(3)お願いします。
- 153 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:09:10 ]
- 「2割増しする20キロ」とか、「(1)〜(3)を入力」とか、随分ややこしいな。
- 154 名前:デフォルトの名無しさん [2008/01/17(木) 13:19:22 ]
- 最初に乗ったキロと深夜かどうかなどの入力をさせてやろうとしたんですが・・・。できなくてとりあえず(1)までやってみました。ややこしくてすいません。
- 155 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:32:41 ]
- 落ち着け、>153は皮肉だ。
以下、問題を列挙 ・深夜料金の適用条件 例えば乗車時刻が21:59だったら? 或いは4:59だったら? ・迎車との関係 例えば呼んだのが21:59だったら? また、迎車時刻を指定されることはある? ・消費税の考慮 ・タクシー料金にしては論外に高い初乗り料金
- 156 名前:デフォルトの名無しさん [2008/01/17(木) 13:39:10 ]
- >155
指摘ありがとうございます。 判定条件が指定されてないので、今回は乗車時刻が22時〜5時に一秒でもかかっていたら深夜料金として計算します。 迎車は有無のみで課金します。もし迎車を使用して深夜であれば最終的な料金は乗った距離の値段×深夜割増+迎車料金で出します。 消費税は考慮しません。確かに問題文法外な値段ですね^^;教授が意地悪なので・・・。 以上の点宜しくお願いします。
- 157 名前:デフォルトの名無しさん [2008/01/17(木) 15:41:20 ]
- #include <stdio.h>
#include <malloc.h> #define buffer_size 10 int main(int argc ,char *argv[]) { FILE *fp; fpos_t *start_fpos,*end_fpos; char *buffer; int n,option; option=getopt(argc,argv,"rw"); switch(option){ case 'w': fp=fopen(argv[1],"w"); buffer=(char *)malloc(buffer_size); printf("文字列を書き込んでください\n"); scanf("%s",buffer); fprintf(fp,buffer); free(buffer); break; } fclose(fp); return 0; } 指定したバッファサイズが入力文字数よりも小さい場合、 セグメンテーションエラーがでます。 #defineを変えないでmallocを使い書き加えるには何の関数を使えばいいですか? ヒントをくださいませんか?よろしくお願いします。
- 158 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:47:11 ]
- >>157
buffer=(char *)malloc(buffer_size*100);
- 159 名前:デフォルトの名無しさん [2008/01/17(木) 15:57:02 ]
- [1] 授業単元: C言語入門
[2] 問題文 キーボードから入力された文字列に指定した文字が何個 含まれているか表示するプログラムを作りなさい。 動作例: キーから文字を数文字入力してください= alpha-dog 調べる文字を入力してください= a 入力された文字列の中に a は、2 個ありました。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition [3.3] 言語: C [4] 期限: 1月17日 [5] その他の制限:
- 160 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 16:20:20 ]
- >>159
#include <stdio.h> int main(void) { int i,num=0; char str[100],ch; printf("文字列を入力してください:"); gets(str); printf("探す文字を入力してください:"); scanf("%c",&ch); for(i = 0;str[i];i++)if(str[i]==ch)num++; printf("%c は %d 個見つかりました",ch,num); return 0; }
- 161 名前:157 [2008/01/17(木) 16:42:11 ]
- 正確な文字数でメモリ確保する方法ないですか?
ヒントください。
- 162 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 16:47:01 ]
- 文字列が入力されるまで長さがわからないなら、事前にその文字数分確保する方法はないだろ。
多目に確保するのがどうしてもイヤならリストにでもしろよw
- 163 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 17:09:18 ]
- >>161
scanfを使わない
- 164 名前:デフォルトの名無しさん [2008/01/17(木) 18:10:39 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):整数をm個入力してソートし、その後(2分)検索をn回行うプログラムを作りなさい(mとnは入力して決める)。ただし、できるだけポインタを利用した関数を作成して用いなさい。 [3] 環境 [3.1] OS: (Windows Vista) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C) [4] 期限: [2008年1月18日12:00まで] [5] その他の制限: お願いします。
- 165 名前:デフォルトの名無しさん [2008/01/17(木) 18:18:26 ]
- >>161
多めに確保して、改めてmallocで宣言するくらいだな。
- 166 名前: ◆cPUZU5OGFs mailto:sage [2008/01/17(木) 18:56:26 ]
- 前スレ986の2分木の者です。
何とか解決出来たので>>143のリストから削除お願いします。 もし取り掛かってる方いましたらありがとうございました。
- 167 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:53:12 ]
- コンパイルは通るのですが、「メモリが"written"になることはできませんでした」というエラーが出てばっかりで、やりきれない気持ちでいっぱいになりました。
forループと複雑な計算を大量にしていると起こりやすい気がするのですが、その場合に考えられる特定の原因ってありますか?
- 168 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:56:50 ]
- ポインタじゃねえの?
- 169 名前:デフォルトの名無しさん [2008/01/17(木) 19:59:44 ]
- [1] 授業単元: プログラミング1
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5790.txt [3] 環境 [3.1] OS: Windows、Unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2008年1月17日21:00まで [5] その他の制限: 図があるためリンクを押すとzipを開くようになっています。 問題と図は無題.bmpです。ウイルスではありません。 お願いします。
- 170 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:59:52 ]
- >>168
試しにforループ内のiを逐一表示してみたのですが、i++なのに何故か途中でとんでもない数字に飛んだりします。 ポインタの扱いを間違っているって事ですか?
- 171 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:00:11 ]
- >>167
文章は読めたのですが、「こいつは一体何がいいたいんだ?」という疑問が出てばっかりで、 やりきれない気持ちでいっぱいになりました。 ソースを晒せばすぐに原因が分かる気がするのですが、それをしない特定の理由ってありますか?
- 172 名前:デフォルトの名無しさん [2008/01/17(木) 20:00:19 ]
- >>169
すみません、URLをまちがえました
|

|