07/07/21 02:50:35
>>520
mainは大域変数なのか?
522:デフォルトの名無しさん
07/07/21 02:58:09
>>519
酔っぱらっているので、ロジックはチェックできないがw
まず、変数と関数に同じcheckを割り当てることを止めろ。
配列={0}とできるのは、配列変数の宣言をする時。
それ以外の箇所で初期化したいなら、
ループで各要素に0を代入するか、
>memset(area,sizeof(area),0);
とかするといいぞ。
523:デフォルトの名無しさん
07/07/21 03:18:49
>>520
宿題の回答を依頼したいなら、
使う用語は理解してからにしてくれ。
大域をpublicと言う意味で使うにしても、
mainやnumberは変数ではないよ。
スタックと言う言葉の意味は分かっているのか?
依頼したい内容が、そもそも通じてないから、
回答が無いのじゃないかな?
524:デフォルトの名無しさん
07/07/21 03:27:57
>>521>>523
あやふやな言い方ですいません。mainとnumber大域変数は変更しないで、
intのスタックを2つ作りたいです。
1つのスタックは数値をいれる。
もう1つには演算子を表す数をいれる。です。
よろしくお願いします
525:デフォルトの名無しさん
07/07/21 03:36:44
>>519
battle→put→battleって流れがあるからずっと対戦続けてるとばぐるよ。
int check[8]がグローバルである必要が無い。check関数内のみでOK。
もちろん名前は>522の言うように別でw
あと、do-whileですっきりしそうなところがいっぱいある。
別に直さなくても動くから無視してくれていいけど。
526:デフォルトの名無しさん
07/07/21 03:36:51
だから、そもそもmainは変数じゃないって。
変数じゃない物を、変更できる訳はないよ。
あなたが言う「スタック」とは何なのか
説明してくれないと、意味が分からない。
527:526
07/07/21 03:39:36
振り先は>>524です。orz
528:デフォルトの名無しさん
07/07/21 03:41:46
>>524
あやふやな言い方を直したつもりなのか同じことを繰り返しているぞw
元のプログラムに「number大域変数」というものが存在しない。
よって変更するしないとかいう意味がわからない。
提示したプログラムだが途中までしかコピペしていないんじゃないか?
break;なんかで終わってるしterm関数が見当たらない。
529:デフォルトの名無しさん
07/07/21 03:44:40
>>526
スタックはおそらくそのままスタックでいいかと。
2つってのが引っかかるが演算子と数値で2つ作るんだろう。
「1+2-3」って入力ならスタックA「1 2 3」スタックB「+ -」になって
popA popB popAの演算をスタックがなくなるまで行う。
って感じでエスパーしてみた。
乗除に対応しようとした時点で破綻する設計だなw
530:526
07/07/21 03:54:08
この問題、奇特な人が回答しているんだが。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
依頼者はこれが気に入らないのかな。
もちろん、この時の依頼者は別人かも試練。
だが、「スタックで実装しろ」の言う意味は
理解してからにして欲しい。
531:519
07/07/21 03:55:30
URLリンク(kansai2channeler.hp.infoseek.co.jp)
checkをローカルに戻してareaの再初期化をforに変更しました。
プログラムを実行すると、途中でうまく配置できていない感じになってしまいます。
先攻後攻は先ほどと同じく未実装です。
532:デフォルトの名無しさん
07/07/21 03:57:18
すいませんでした。
プログラムが途中でした。
}
return(ans);
}
int number(void){ //数値データ
int i=0;
while (isdigit(*p)){
i = i*10+(*p++)-48;
}
return(i);
}
533:デフォルトの名無しさん
07/07/21 03:58:33
とりあいずmainとnumberは変更しないで、
intのスタックを2つ作る。
1つのスタックは数値をいれる。
もう1つには演算子を表す数をいれる。です。
534:デフォルトの名無しさん
07/07/21 04:00:58
>>530さん
書き込みが食い違いになってしまいすいません。
535:526
07/07/21 04:02:18
だから、スタックって何?
536:デフォルトの名無しさん
07/07/21 04:05:17
whileをintだけで書けってことをいいたいのか?
537:526
07/07/21 04:07:07
>>533
「演算子を表す数」を定義してくれ
538:デフォルトの名無しさん
07/07/21 04:07:33
あれか?それともint使ってとにかく数値をいれるのと
演算子を表す数のを作ればいいのか?
539:526
07/07/21 04:13:19
要件定義ができないなら、それでも良いが、
どういう物を作って欲しいのか、理解可能な表現にして下さい。
少なくとも宿題をそのまんま書いてくれないと、espの領域になる。
540:デフォルトの名無しさん
07/07/21 04:17:12
演算子を表す数ですか?
一応黒板に書いてあったのを書き込みました
541:デフォルトの名無しさん
07/07/21 04:19:48
確か+が一番弱く/が一番強くなるように作ると言っていました
542:デフォルトの名無しさん
07/07/21 04:20:14
>>531
print関数がおかしい。
ループ部分を以下みたいにしてみ。
for(i=0;i<9;i++){
if(area[i] == 0)
printf(" ");
else if(area[i] == 1)
printf("○");
else if(area[i] == 4)
printf("×");
else
printf("as");
printf("|");
if ( i % 3 == 2 )
printf("\n");
}
とりあえずは動くよ。
543:526
07/07/21 04:21:36
>>531で示した回答にどういう不満があるのか、
せめてそれだけども答えてくれ。
>演算子を表す数ですか?
>一応黒板に書いてあったのを書き込みました
見落としたかも知れないから、
演算子と定数の対応表を再掲してくれ。
544:526
07/07/21 04:23:51
スタックの定義も提示してくれ。
545:519
07/07/21 04:31:10
URLリンク(kansai2channeler.hp.infoseek.co.jp)
>>542
挙動は正常になったようなのですが
2度目以降の対戦がうまく動作しません・・・(´・ω・`)
area[]の初期化は出来ていると思うのですが・・・
>>543
レスアン間違ってないですか?
546:519
07/07/21 04:33:00
初期化できてなかったですね・・・^^;
すいません、みすってました
547:526
07/07/21 04:35:27
>>541
宿題の意味が分からないなら、>>531で宿題の回答にしたらいい。
この回答に不満があるなら、
この回答のどこが設問と違うか、提示すればいいだけだと思うが。
548:519
07/07/21 04:41:21
526さんは何を言ってるんでしょうか?
私ともう一人質問をされてる方がいるんだとおもんですが・・・?
私は3目並べの話をしてるんですが?
549:526
07/07/21 04:46:50
>>548 気にしないで下さい。あなたの推察通りです。
済まん、酔っぱらいだ
>>547で書いた>>541は>>540の間違いだ。訂正する。
550:519
07/07/21 05:08:59
URLリンク(kansai2channeler.hp.infoseek.co.jp)
先攻or後攻も考慮してみました。
課題の指示としては
1,二人対戦・com対戦可能
2,毎回com/man対戦・終了を選ぶ
というものです。
このプログラムでみたせてるでしょうか?
私の中ではOKだとは思うのですが
できてねーぞごるぁ! とかあればおねがいします
551:デフォルトの名無しさん
07/07/21 05:14:31
【即会い!!】
私自身が使用してみて、即出会えた出会い系サイトを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトのみを厳選して薦めております。
↓↓↓
【ブログ ~即出会えるサイト】URLリンク(deaigets.blog97.fc2.com)
552:519
07/07/21 05:18:33
もう一つ指示があったのを忘れていました。
・戦歴の表示
というのがあったので、追加しました
URLリンク(kansai2channeler.hp.infoseek.co.jp)
評価お願いします。
553:519
07/07/21 05:22:51
何度もすみません、凡ミスがあったので修正しました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
554:デフォルトの名無しさん
07/07/21 07:22:22
とても丁寧な読みやすいコーディングだね。
ソース流し読みしただけだけど敢えて問題があるとするなら
ループでscanfを使ってるくらい?
555:デフォルトの名無しさん
07/07/21 09:35:31
>>519
良くできてると思いますよ。
556:519
07/07/21 10:06:42
ありがとうございました。
557: ◆yb5ufjhaCo
07/07/21 11:21:02
すいません、あんまりわからないので、教えてください。
ほんとに初歩の質問ですいません
1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):
<次のプログラムの断片は誤りを含んでいるところがある。
その誤りの理由を述べ、正しい動作をするようにその箇所を修正した
プログラム断片全てを書け。ただし無関係のところまで変えないこと。
[3] 環境
[3.1] OS: Linuxです
[3.2] コンパイラ名とバージョン: gcc です
[3.3] 言語: Cでお願いします。
[4] 期限: 25日いっぱいまでです。
558: ◆yb5ufjhaCo
07/07/21 11:22:35
すいません。問題忘れてました…
(1)
if(c = '\0')
n++;
(2)
while(c = getchar() !=EOF)
putchar(c);
(3)
for(i = 0; i < 10; j++){
total += i;
}
(4)
switch(c){
case 'y':
state = 1;
case 'n':
state = 0;
default:
state = -1;
}
お願いします…
559: ◆yb5ufjhaCo
07/07/21 11:23:13
(5)
if(k = 0)
1++;
else
1--;
(6)
for (i = 0; i < 8; j++){
b[i] -= a[i+j];
}
(7)
switch(c){
case 'y':
count--;
case 'n':
count++;
default:
break;
}
560:デフォルトの名無しさん
07/07/21 11:28:31
1:=
2:(c=getchar())
3:無限るーっぷって怖くね?
4:break;
5:=, 1++, 1--
6:3に同じ
7:break;
違うかも
561:519
07/07/21 13:07:12
comが1Pのリーチを阻止できるようにしたいのですが、
どういうコードを書けばいいでしょうか?
562: ◆M2clACoxQA
07/07/21 13:28:04
[1] 授業単元: プログラミング 基礎
[2] 問題文(含コード&リンク):
#include <stdio.h>
int main(void)
{
int i = 1;
int j = 0;
do{
j = j + i;
i += 2;
}while(i<=99);
printf("1から99までの奇数の総数は%dです。\n", j);
return 0;
}
以上の「奇数の総和」を求めるプログラムを関数化して作成しなさい。
開始値と終了値を引数として使用し、main関数で確認する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual studio2005
[3.3] 言語: C言語
[4] 期限: 2007年7月21日15:00まで
[5] その他の制限:
習ったのは、if-else文 do-while文 for文。
sum関数を使うと言っていました。
まだ習いたてなので、あまり難しいのはわかりません。
よろしくお願いします・・・
563:デフォルトの名無しさん
07/07/21 13:32:20
>>562
お前さんのところで作ったsum関数とやらは知らんがそれ見ながらdo{}whileの処理を
sum関数の要領でmain文の外に追い出せばいいだけ。
564: ◆M2clACoxQA
07/07/21 13:40:18
>>563
なるほど・・・そういうことだったんですね。
変に難しいことを考えてしまいました^^;
親切に教えてくださり、ありがとう御座いました!!
565:デフォルトの名無しさん
07/07/21 14:13:55
>>547
エラーで書けなくなった為遅くなりました。
checkはまだ習っていません。何通りかやり方があると
言っていたので他にも実行するプログラムはありますか?
何度もあやふやな言い方だと迷惑だと思うので、友達に確認してから
もう一度書き込みします。
よろしくお願いします
566:デフォルトの名無しさん
07/07/21 14:31:37
習ってないも糞もおまいさんの作った関数だろうから習ってないとか意味不明。
授業中に提示された関数をただ使ってるだけだならちゃんと話聞いとけ馬鹿で終了だし。
他に実行できるプログラムはあると言えるけど、
>>519の要件満たせばいいだけならプログラマの数だけやり方はあると言えるから、
質問自体の意味がない。
何がしたいのかはっきりすればどうすればいいのか言えるけど、
何がしたいのかを言わないようじゃエスパーに頼るしかないし。
567:519
07/07/21 14:37:48
>>566
私は565じゃないですよ!!!!!
568:デフォルトの名無しさん
07/07/21 14:42:14
>>565
お前さんが>>494なら、>>547は>>594にあるとおり、ただの勘違いのようだから
スルー汁
>>530のレスは読んだのか?
569:568
07/07/21 14:43:13
×>>547は>>594にあるとおり
○>>547は>>549にあるとおり
570:デフォルトの名無しさん
07/07/21 14:48:50
なんかここんとこgdgd説教したりそんなんじゃ相手に伝わらないよ俺はわからんよって
だったらgdgdレスしてないで答えなきゃ良いじょのいこっ(えなり君風に)
571:デフォルトの名無しさん
07/07/21 15:04:37
>>568
>>530は読みました。>>530自体が問題のプログラムで。
問題は、/*-+の順に計算できるようにする。そのためにint2つ作る。
1つは数字、1つは記号(/*-+)
572:デフォルトの名無しさん
07/07/21 15:11:11
>>420をお願いします
573:519
07/07/21 15:17:54
私が質問している3目並べは
>>561をおねがいします!
574:デフォルトの名無しさん
07/07/21 15:48:08
>>573
check関数内で、check変数の値が2になっているラインに置けばいい。
ってか、checkの名前がかぶってるのをやめたほうがいいって言われてなかった?
575:デフォルトの名無しさん
07/07/21 16:01:30
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
整数n、rを入力し全組み合わせを配列に配置するプログラムを作成しなさい。
例えばn=4,r=2の場合
{{1,2},{1,3},{1,4},{2,3},{2,4},{3,4}}
となる。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 7/25
[5] その他の制限: 特に無し
画面に出力するだけなら何とかなりそうなんですが配列に入れるとなると
もう何がなんだか…
576:デフォルトの名無しさん
07/07/21 16:06:56
>>575
配列なんて出てくるか?
2重ループで一発だと思うんだが?違う?
577:デフォルトの名無しさん
07/07/21 16:08:30
お前は何を言ってるんだ
578:デフォルトの名無しさん
07/07/21 16:16:34
適当に大きめの2次配列に入れるなり、
動的確保するなりして入れればいいだけじゃないか。
表示できるなら配置もできるだろ。
579:デフォルトの名無しさん
07/07/21 16:20:31
【即会い!!】
私自身が使用してみて、即出会えた出会い系サイトを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトのみを厳選して薦めております。
フリメ登録OKなサイトを拡充しました!
↓↓↓
【ブログ ~即出会えるサイト】URLリンク(deaigets.blog97.fc2.com)
580:デフォルトの名無しさん
07/07/21 16:34:05
>>494
最小限の実装.変な式を入れたときにどうなるかは知らない.
<変更点>
・以下のグローバル変数を追加
int ops[100], vals[100], optop, valtop;
・term()は使わないので消していい
・expression() の内容を以下に変更
int expression() {
valtop = optop = -1;
vals[++valtop] = number();
while (1) {
int opcode;
if (*p == '+') opcode = 1;
else if (*p == '-') opcode = 2;
else if (*p == '*') opcode = 3;
else if (*p == '/') opcode = 4;
else opcode = 0;
while (optop >= 0 && ops[optop] >= opcode) {
if (ops[optop] == 1) vals[valtop-1] += vals[valtop];
if (ops[optop] == 2) vals[valtop-1] -= vals[valtop];
if (ops[optop] == 3) vals[valtop-1] *= vals[valtop];
if (ops[optop] == 4) vals[valtop-1] /= vals[valtop];
valtop--; optop--;}
if (opcode == 0) break;
ops[++optop] = opcode;
*p++;
vals[++valtop] = number();}
if (valtop != 0) printf("some error\n");
return vals[0];}
581:デフォルトの名無しさん
07/07/21 16:40:46
>>578
なんで2次配列なのか小一時間問い詰めたい
582:デフォルトの名無しさん
07/07/21 16:44:54
>>576
なんで2重ループなのか小一時間問い詰めたい
583:デフォルトの名無しさん
07/07/21 16:55:27
>>578
表示できるといっても再帰で表示させてるんで
うまいこと添字があわなくて…
配列に配置させるのに利用できないんです
584:デフォルトの名無しさん
07/07/21 17:16:20
>>453 俺もやってみた。クソースだがw
URLリンク(kansai2channeler.hp.infoseek.co.jp)
585:519
07/07/21 17:31:19
>>574
名前が被ってるというと?
586:デフォルトの名無しさん
07/07/21 17:43:21
>>575
URLリンク(kansai2channeler.hp.infoseek.co.jp)
2次元配列ではなくポインタ配列だが。
587:デフォルトの名無しさん
07/07/21 17:44:29
>>585
関数と変数が同じ名前ってこと。
問題ないけどソース読みづらい。
588:デフォルトの名無しさん
07/07/21 18:28:35
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク):
ゼータ関数は次式で定義される。
ζ(s) = ∑(1/n^s)
s=6のとき、π^6/945に収束する。これを確認するプログラムを作製せよ。
ただし、級数の和を無限個とるのではなく、有限の範囲内で(n=100)で計算せよ。
条件1:倍精度型で計算し、6パターン以上は比較できるようにすること。
条件2:二重ループを使うこと。そのため、外側ループでは初期値をmとして,
nまでm刻みで値を変更し、内側ループでは該当する値に応じたゼータ関数値を算定できるようにコーティングせよ。(例えば、n=1000と、m=100に設定した場合、nの値を10パターン変化させることができる。)
[3] 環境
[3.1] OS:MAC OS X
[3.2] コンパイラ名 gcc
[3.3] 言語:C
[4] 期限:来週の月曜日まで
[5] その他の制限: とくに無し
条件が多いですが、よろしくお願いします。
589:デフォルトの名無しさん
07/07/21 18:43:31
それ7/18までじゃなかったっけ?
590:デフォルトの名無しさん
07/07/21 19:03:58
>>587
同じ名前で変数と関数があったら、
普通、再定義エラーにならないか?
591:デフォルトの名無しさん
07/07/21 19:14:43
グローバルとローカルの違いってCの基礎じゃないの?
592:デフォルトの名無しさん
07/07/21 19:20:33
グローバル変数と関数が同じ名前だったんだが。
593:デフォルトの名無しさん
07/07/21 19:22:03
ローカルでも普通にエラーでるんじゃね?
594:デフォルトの名無しさん
07/07/21 19:23:01
っていうか>>519の最新が553?
595:593
07/07/21 19:25:33
さっき>>553で名前被りエラー出なかったからあのレス忘れてくれ。
596:デフォルトの名無しさん
07/07/21 19:29:31
最新にしてはエラーや警告出まくるんだけどw
で、comに考える力を与えてみた。
int com_put(){
int input;
do{
input = rand()%9;
}while(area[input] != 0);
if (area[0] + area[1] + area[2] == 8) input = (area[0] == 0)*0 + (area[1] == 0)*1 + (area[2] == 0)*2;
else if(area[3] + area[4] + area[5] == 8) input = (area[3] == 0)*3 + (area[4] == 0)*4 + (area[5] == 0)*5;
else if(area[6] + area[7] + area[8] == 8) input = (area[6] == 0)*6 + (area[7] == 0)*7 + (area[8] == 0)*8;
else if(area[0] + area[3] + area[6] == 8) input = (area[0] == 0)*0 + (area[3] == 0)*3 + (area[6] == 0)*6;
else if(area[1] + area[4] + area[7] == 8) input = (area[1] == 0)*1 + (area[4] == 0)*4 + (area[7] == 0)*7;
else if(area[2] + area[5] + area[8] == 8) input = (area[2] == 0)*2 + (area[5] == 0)*5 + (area[8] == 0)*8;
else if(area[0] + area[4] + area[8] == 8) input = (area[0] == 0)*0 + (area[4] == 0)*4 + (area[8] == 0)*8;
else if(area[2] + area[4] + area[6] == 8) input = (area[2] == 0)*2 + (area[4] == 0)*4 + (area[6] == 0)*6;
else if(area[0] + area[1] + area[2] == 2) input = (area[0] == 0)*0 + (area[1] == 0)*1 + (area[2] == 0)*2;
else if(area[3] + area[4] + area[5] == 2) input = (area[3] == 0)*3 + (area[4] == 0)*4 + (area[5] == 0)*5;
else if(area[6] + area[7] + area[8] == 2) input = (area[6] == 0)*6 + (area[7] == 0)*7 + (area[8] == 0)*8;
else if(area[0] + area[3] + area[6] == 2) input = (area[0] == 0)*0 + (area[3] == 0)*3 + (area[6] == 0)*6;
else if(area[1] + area[4] + area[7] == 2) input = (area[1] == 0)*1 + (area[4] == 0)*4 + (area[7] == 0)*7;
else if(area[2] + area[5] + area[8] == 2) input = (area[2] == 0)*2 + (area[5] == 0)*5 + (area[8] == 0)*8;
else if(area[0] + area[4] + area[8] == 2) input = (area[0] == 0)*0 + (area[4] == 0)*4 + (area[8] == 0)*8;
else if(area[2] + area[4] + area[6] == 2) input = (area[2] == 0)*2 + (area[4] == 0)*4 + (area[6] == 0)*6;
area[input] = 4;
}
597:デフォルトの名無しさん
07/07/21 21:56:05
>>586
どうもありがとうございます。
なんか今更情報科にきたことを後悔…
複雑になると頭がこんがらがる
598:デフォルトの名無しさん
07/07/21 22:32:47
[1]単元:プログラミング
[2]問題:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境
OS:リナックス
コンパイラ:gcc
言語:C
[4]7月23日
よろしくお願いします。
599:デフォルトの名無しさん
07/07/21 22:41:33
>>588 MinGWで。Macで動くか知りません
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
int i, j, s = 6, n = 100, m = 10;
double d = 0;
for(i = m; i <= n; i += m) {
for(j = i-m+1; j < i; j++) d += 1/pow(j,s);
printf("n = %i\t:\t%.15f\n", i, d);
}
printf("π^6/945:\t%.15f\n", pow(M_PI,s)/945);
return 0;
}
600:デフォルトの名無しさん
07/07/21 22:55:00
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下のプログラムのmainとnumberは変更しないで、
intのスタックを2つ作る。1つは数値をいれる。もう1つには演算子を表す数をいれる
#include <stdio.h> #include <stdlib.h> #include <ctype.h>
char *p; char c[100]; int expression(void);int term(void);
int number(void);main(){ int ans;while(1){
printf("Enter expression : ");fgets(c,90,stdin);
p=c;if(*p == '\n') break;ans = expression();
printf("Answer:%d\n", ans);}}int expression(){
int ans;ans = term();while(1){if(*p == '+'){
p++;ans = ans + term();}else if(*p == '-'){
p++;ans = ans - term();}else break;}
return(ans);}int term(){int ans,x;ans = number();
while(1){if(*p == '*'){p++;ans = ans * number();}
else if(*p == '/'){p++;x = number();
if(x == 0){printf("Division by 0\n");
exit(1);}ans = ans / x;}
else break;}return(ans);}
int number(){int i=0;while (isdigit(*p)){i=i*10+(*p++)-48;}
return(i);}
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 年07月23日
[5] その他の制限: 特になし
601:デフォルトの名無しさん
07/07/21 23:04:37
いい加減にしろよカス
602:デフォルトの名無しさん
07/07/21 23:09:04
>>600
インクルードくらいは改行しなよ、ナス!
603:デフォルトの名無しさん
07/07/21 23:26:13
>>602
600です。すいません。改行が多いと言われてしまったので。
確かに読みずらいですよね。でも、お願いします。
604:デフォルトの名無しさん
07/07/21 23:27:08
>>603
上のほう見ろ、答えあるから
605:デフォルトの名無しさん
07/07/21 23:33:42
>>603
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利
URLリンク(kansai2channeler.hp.infoseek.co.jp)
606:519
07/07/21 23:34:53
>>553で、私の環境では特にエラー出ませんでした^^;
>>596さんのやつはどういう挙動になるんですか?
607:デフォルトの名無しさん
07/07/21 23:38:59
>>598
URLリンク(kansai2channeler.hp.infoseek.co.jp)
608:デフォルトの名無しさん
07/07/21 23:42:11
>>606
エラーはカンマとピリオドを打ち間違ってるところ、
警告は戻り地が無い関数なのにintで宣言してるところ。
609:デフォルトの名無しさん
07/07/21 23:47:36
>>604>>605
同じ書き込みがあったんですね。
ありがとうございます
610:デフォルトの名無しさん
07/07/21 23:54:29
>>606
あれで動くってどんな環境だよwww
611:デフォルトの名無しさん
07/07/22 00:02:17
>>607
助かりました☆
612:デフォルトの名無しさん
07/07/22 00:02:55
>>607
ここ> animal=(animal+direction+road_size)%road_size;
と、ここ> fp=fileopen("data");
仕様と違うと思う
613:デフォルトの名無しさん
07/07/22 00:06:51
>>598
道の右端と左端はつながってないの?
>>612
ファイル名の data1.txt data2.txt data3.txt ... になるんだけどどの辺が違う?
614:デフォルトの名無しさん
07/07/22 00:19:46
>>612 プログラムの冒頭に「系列ファイル文字列」をキーボードから入力するってあるので
同じだけど一応オレも。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
615:デフォルトの名無しさん
07/07/22 00:28:05
>>614
thx
見落としてた
>>598
>>607 はキーボードからの入力になってないので >>614 をどうぞ
616:デフォルトの名無しさん
07/07/22 00:33:28
>>607 は他にも間違いがある…orz
関数 fileopen 中の
fclose(fp);
↓
else fclose(fp);
617:デフォルトの名無しさん
07/07/22 00:49:50
UPする前に質問します
C言語の筆記問題はスレ違いになるのでしょうか?
618:デフォルトの名無しさん
07/07/22 00:50:34
スレ違いではないとおもうけど、食指が動かない
619:デフォルトの名無しさん
07/07/22 00:51:12
別にいいんでね?質問する前にUPして欲しい。
すれ違いなら優しいおじさんが誘導してくれるかもしれない。
620:617
07/07/22 00:58:38
レスありがとうございます
食指は動かないかもしれませんが、後でUPしてみます
621:デフォルトの名無しさん
07/07/22 01:10:02
後でって、さっさとうpしろよw
みんな寝ちゃうぞ
622:デフォルトの名無しさん
07/07/22 01:23:50
2 4 6 30 32 34 36 40 42 44 46 50 52 54 56 60 62 64 66
この数列の、20項以降を表示させる関数を作れといわれたのですが
分かりませんでした
623:デフォルトの名無しさん
07/07/22 01:28:07
>>622
0は入らないのか?10台、20台は入らないのか?
数列の並びがよくわからん。
624:617
07/07/22 01:30:15
筆記問題なので、注意してくださいませ
[1] 授業単元: C言語 基礎&応用
[2] 問題文(含コード&リンク):
URLリンク(www-2ch.net:8080)
※jpegファイルが6つ入ってます(No1~No6)
No3~No6までが、今回やってもらいたいファイルです
No1とNo2は自分でも問題無かったので入れる必要は無かったのですが
テスト形式なので(100点満点)、中途半端に抜かすのもどうかと思い入れました
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:Visual studio.2005
[3.3] 言語:C言語
[4] 期限:23日のAM1時くらいまでが好ましいですが、25日くらいまで大丈夫です
[5] その他の制限:
625:デフォルトの名無しさん
07/07/22 01:56:58
>>622
それ英語のなぞなぞ (答えTwo thousands)
626:デフォルトの名無しさん
07/07/22 02:06:35
1時なんかもう過ぎてるだろボケ
・・・ボケは私です。
4-1 for(i=0;i<N;i++)b[i]=a[i]; 4-2 1
5-1 t1.a+t1.b; 5-2 5
6-1 4 6-2 7
7-1 return y; 7-2 (a)5 (b)20
8-1 (a) i=0; (b) (i<10) (c) += 8-2 84 8-3 6.800000 + 11.200000 i
8-4 (a) NULL (b)cellp->next 8-5 (a) b==0 (b) gcd( b, a%b )
9-1 変数 9-2 型 9-3 typedef 9-4 定義 9-5 桁オチ 9-6 情報欠落
かなりテキトー。特に用語のあたりとか。
627:デフォルトの名無しさん
07/07/22 02:10:56
>>622
答えは >>625 の言葉でググったら出てきたけど
プログラムで書こうとすると難しいよ
628:デフォルトの名無しさん
07/07/22 02:16:26
>>624
No.3
[4]
(1) : (a) 0 (b) N (c) b[i] = a[i]
(2) : (a) 1
[5]
(a) t1.a + t1.b (b) 5
[6]
(a) 4 (b) 7
[7]
・・・・・・・もうめんどくせ
629:デフォルトの名無しさん
07/07/22 03:17:14
>>622
#include <stdio.h>
int main(){int *a,*b,*c,*d,i=0,val;
int n[]={0,2,4,6,-1};int m[]={0,3,4,5,6,-1};
for(a=m;*a>=0;a++)for(b=n;*b>=0;b++)
for(c=m;*c>=0;c++)for(d=n;*d>=0;d++){
val=((*a*10+*b)*100+*c)*10+*d;i++;
if((i>20)&&(i<=320)) printf("%d\n", val);}return 0;}
630:デフォルトの名無しさん
07/07/22 04:37:34
設問者がなぞなぞ好きならそれはそれで良いのかもしれないが。
それで単位を取れるかどうかとなると、学生がちょと河合祖。
631:519
07/07/22 11:12:25
戻り値が無い関数はvoidがいいんですか?
632:デフォルトの名無しさん
07/07/22 11:16:21
そうだよ☆
でもmainだけは戻り値がいらなくてもintにするのが習慣みたいね
633:デフォルトの名無しさん
07/07/22 11:19:41
>なぞなぞ
また1つ賢くなった、ありがとう
634:デフォルトの名無しさん
07/07/22 11:23:57
>>632
お前は要らないかもしれないけど、システムにとって必要だよ。
635:519
07/07/22 11:35:30
あと . と , は直してアップしたつもりでした
636:デフォルトの名無しさん
07/07/22 11:37:10
>>622
#include <stdio.h>
int main(void)
{
int i;
for(i = 1; i < 100; i++)
printf("%ld\t", i%4*2 + i/4*10 + (i < 4 ? 0 : 20));
return 0;
}
英語のなぞなぞって何?
637:617
07/07/22 13:34:20
解答ありがとうございました
参考にさせていただきます!
638:デフォルトの名無しさん
07/07/22 15:14:48
>>632
習慣じゃなく規格で決まっている。
639:デフォルトの名無しさん
07/07/22 15:50:54
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
行列のサイズ n, m, l と,それに応じた n×m, m×l の行列が記録されたファイルを食べて,結果を別のファイルに書き出そう.
%cat testfile
3
2
3
3.2 4.8
8.2 6.5
4.3 -2.2
-5.0 6.2 8.9
3.5 -0.2 -5.8
であるとする.3×2, 2×3の行列の積をとり,3×3の行列を得る事になる.そこでプログラムを開発して、
% ./prog0 testfile ANSWER
とすれば,積が ANSWER というファイルに書き込まれるようにせよ.argv[], argc, fscanf(), fprintf() を総動員する.
[3] 環境
[3.1] OS: (Windows/Linux/等々) Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7/25まで
よろしくおねがいしますm(_ _)m
640:デフォルトの名無しさん
07/07/22 15:51:45
argv[], argc, fscanf(), fprintf() を総動員する.
ワロタ
641:デフォルトの名無しさん
07/07/22 16:07:42
>>639
もうマジで日本語でおk
642:デフォルトの名無しさん
07/07/22 16:11:50
入力テキストは
n
m
l
行列1
行列2
って形式なんだろう
643:デフォルトの名無しさん
07/07/22 16:31:25
>結果を別のファイルに書き出そう.
>そこでプログラムを開発して、
出題者はどういうノリなんだ。
644:デフォルトの名無しさん
07/07/22 16:35:10
>>639
#include <stdio.h>
#define N 128
int main(int argc, char *argv[])
{
FILE *fpin, *fpout;
int n, m, l, i, j, k;
double mat1[N][N], mat2[N][N], mat3[N][N];
if(argc < 3 || (fpin = fopen(argv[1], "r")) == NULL || (fpout = fopen(argv[2], "w")) == NULL) return 1;
fscanf(fpin, "%d%d%d", &n, &m, &l);
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
fscanf(fpin, "%lf", &mat1[i][j]);
for(i = 0; i < m; i++)
for(j = 0; j < l; j++)
fscanf(fpin, "%lf", &mat2[i][j]);
for(i = 0; i < n; i++){
for(j = 0; j < l; j++){
mat3[i][j] = 0;
for(k = 0, mat3[i][j] = 0; k < m; k++)
mat3[i][j] += mat1[i][k]*mat2[k][j];
fprintf(fpout, "%f ", mat3[i][j]);
}
fprintf(fpout, "\n");
}
fclose(fpin), fclose(fpout);
return 0;
}
645:デフォルトの名無しさん
07/07/22 16:36:27
学校行けよ
646:デフォルトの名無しさん
07/07/22 16:45:22
今時期は夏休み返上で赤点補習かな
647:デフォルトの名無しさん
07/07/22 16:53:38
>>644
出来ました。ありがとうございますm(_ _)m
648:デフォルトの名無しさん
07/07/22 17:39:10
はしかのせいで補習のやつが多そうだな
649:デフォルトの名無しさん
07/07/22 17:46:05
なるほど、失速しないのはその影響か。
650:デフォルトの名無しさん
07/07/22 18:52:14
行列matの転置行列を求めて次のように出力するプログラムを完成させよ。
| 1 6 11 16 21 |
| 2 7 12 17 22 |
| 3 8 13 18 23 |
| 4 9 14 19 24 |
| 5 10 15 20 25 |
651:デフォルトの名無しさん
07/07/22 18:52:45
#include <stdio.h>
#define MSIZE 5
void swap(int *a, int *b) {
int c;
(a) = *a;
*a = *b;
*b = (a) ;
}
void main(void) {
int i, j, mat[MSIZE][MSIZE] = { { 1, 2, 3, 4, 5},
{ 6, 7, 8, 9,10},
{11,12,13,14,15},
{16,17,18,19,20},
{21,22,23,24,25} };
for(i = 0; i < MSIZE - 1; i++) {
for(j = (b) ; j < (c) ; j ++) {
swap( (d) , (e) );
}
}
for(i = 0; i < MSIZE; i ++) {
printf("|");/25小計
for(j = 0; j < MSIZE; j ++) {
printf("%3d ", mat[i][j]);
}
printf(" |\n");
}
}
さっぱりわかりません
よろしくお願いします
652:デフォルトの名無しさん
07/07/22 18:53:43
あるカップラーメンの値段を店ごとに調べた.それを配列に
入れて,下の出力のように10円刻みに分布をとることを考える.
そのためのプログラムを下に示す.空白を補え.
80- 89円: 2
90- 99円: 2
100-109円: 1
110-119円: 2
120-129円: 1
130-139円: 2
653:デフォルトの名無しさん
07/07/22 18:55:33
#include <stdio.h>
#define C_NUM 6
void makedist(int a[10], int b[C_NUM]) {
int i;
for(i = 0; i < 10; i ++) {
b[ (a) ] += 1;
}
}
void main(void) {
int price[10] = {80, 120, 111, 130, 139, 95, 98, 89, 105, 119};
int dist[C_NUM], i;
for(i = 0; i < C_NUM; i++) {
dist[i] = (b) ;
}
makedist( (c) , dist);
for(i = 0; i < C_NUM; i++) {
printf("%3d-%3d円: %3d\n", (d) ,
(e) , dist[i]);
}
}
これもさっぱりです・・・
教えてください
654:デフォルトの名無しさん
07/07/22 18:58:12
>653
(a)a[i]/10-8
(b)0
(c)price
(d)80 + i * 10
(e)89 + i * 10
655:デフォルトの名無しさん
07/07/22 19:08:49
>>650-651
a:c
b:0
c:i
d:mat[i][j]
e:mat[j][i]
656:655
07/07/22 19:10:03
訂正
d:mat[i][j]→&mat[i][j]
e:mat[j][i]→&mat[j][i]
657:655
07/07/22 19:20:36
何度も済まん…
>>650-651
a:c
b:0
c:i+1
d:&mat[i+1][j]
d:&mat[j][i+1]
658:デフォルトの名無しさん
07/07/22 19:23:54
ありがとうございます!!
659:デフォルトの名無しさん
07/07/22 19:29:39
与えられた正数aの逆数1/aを,除算を用いずに求めるアルゴリズムを
ニュートン法によって作りたい.
ただし,初期値x0は十分に解に近いところから出発するものとする.
次の[1]から[4]の空欄(a)から(f)を埋めよ.
[1]
ニュートン法でaの逆数1/aを求めるためには
f(x)=(a)のゼロ点を求めればよい.
[2]
[1]の式に対して,ニュートン法による第n+1回目の反復による値Xn+1は,
第n回目の反復による値Xnを用いて
Xn+1=(b)と表される.
660:デフォルトの名無しさん
07/07/22 19:30:11
[3]
[2]で示した反復によるアルゴリズムを実現すると次のようになる.
#include <stdio.h>
void main(void) {
double u, v;
int i;
printf("正数を入力して下さい.\n");
scanf( (c) );
printf("逆数に十分近い初期値を入力して下さい.\n");
scanf( (d) );
for(i = 0; i < 3; i ++) {
u = (e) ;
printf("%5.3f\n", u);
}
}
[4]
[3]で作ったプログラムを実行し,「3」,「0.5」の順に入力した際に
for文の中のprintf関数による出力結果をすべて示すと次のようになる.
(f)
661:デフォルトの名無しさん
07/07/22 20:37:35
>>659
(a) 1/x - a {x = 1/a → 0 = 1/x - a だから}
(b) Xn*(2-a*Xn) {Xn-f(Xn)/f'(Xn) →Xn-(1/Xn-a)/(1/(-Xn*Xn))だから}
(c) "%lf",&v (d) "%lf",&u (e) u*(2-v*u)
(f)
0.5
0.250
0.332
662:デフォルトの名無しさん
07/07/22 20:37:52
関数myreplaceを使って実際に文字列を変換させるプログラムを作成したところ,
出力結果(1)は「tuat」となった.
空欄(a)~(f)を埋めて次のプログラムを完成させ,
出力結果(2)を空欄(g)に記入せよ.
663:デフォルトの名無しさん
07/07/22 20:39:44
#include <stdio.h>
(a) ;
void main(void) {
char code[16] = "GHIGFACDFDBA";
char ret[16] = "";
myreplace(" (b) ", ret);
printf("%s\n", ret); ・・・出力結果(1)
myreplace(code, ret);
printf("%s\n", &ret[5]); ・・・出力結果(2)
}
void myreplace(char org[ ], char ret[ ]) {
char string1[16] = (c) ;
char string2[16] = "v)(^e_tua";
int i, j;
for(i = 0; org[i] != (d) ; i ++) {
for(j = 0; string1[j] != (d) ; j ++) {
if(org[i] == string1[j]) {
(e)
}
}
}
(f) /* 終端記号 */
}
出力結果
(g)
664:デフォルトの名無しさん
07/07/22 20:42:23
>>659 訂正
(f)
0.250
0.313
0.332
665:デフォルトの名無しさん
07/07/22 21:04:07
[1] 授業単元:
[2] 問題文(含コード&リンク):
2 つのchar 型配列x[],y[] に格納された文字列を入れ替えるプログラムを作成せよ.
ただし入替え処理には,関数swap array(char *,char *) を作成して用いること.
% ./test
入替前のx: "abcdefgh"
入替前のy: "ABC"
関数swap_array() を呼び出しました
入替前のx: "ABC"
入替前のy: "abcdefgh"
%
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: (C)
[4] 期限: (07月23日00:00まで)
[5] その他の制限:ポインタまで習ってます
よろしくおねがします
666:デフォルトの名無しさん
07/07/22 21:05:33
>>650マルチ必死だな(´,_ゝ`)プッ
667:デフォルトの名無しさん
07/07/22 21:39:34
>>662 なんかヤな問題だな。回答は複数あるけどたぶん↓
(a) void myreplace(char org[], char ret[]); (b) GHIG (c) "ABCDEFGHI"
(d) '\0' (e) ret[i] = string2[j]; (f) ret[i] = '\0'; (g) v(^_^)v
668:デフォルトの名無しさん
07/07/22 22:05:25
[1] 授業単元:
[2] 問題文(含コード&リンク):
1start で示されるアドレスからlength バイト分だけの領域に関して,
値val で埋める関数cmemset(char*start, int value, int length) を作成せよ.
さらに,malloc() 関数を用いてchar 型配列のメモリ領域を確保し,
cmemset() が正確に動作することを確認
(メモリ領域の内容を整数値として表示)するプログラムを作成せよ.
%./kadai
4 -89 0 1 5 43 ... 112 ← cmemset 使用前
0 0 0 0 0 0... 0 ← 0 で埋めたとき
88 88 88 88 88 88 ... 88 ← 88 で埋めたとき
%
2src で示されるアドレスからlength バイト分だけの領域を,dest で示される領域へコピーする関数
cmemmove(char *dest, char *src, size t length) を作れ.なお,送り元の領域と送り先の領
域がオーバーラップしていても,正しくコピーできる仕様にせよ.さらに,malloc() 関数を用いて
char 型配列のメモリ領域を確保し,cmemmove() が正確に動作することを確認(メモリ領域の内容を
整数値として表示)するプログラムを作成せよ.
% ./kadai
1 2 3 4 5 0 0 0 0 0 0 0 0 0 0 0 0 0 ← cmemmove 実行前
1 2 3 4 5 0 0 0 0 0 1 2 3 4 5 0 0 0 ← 0 番目から5 個を10 番目へ
1 2 3 1 2 3 4 5 0 0 1 2 3 4 5 0 0 0 ← 0 番目から5 個を3 番目へ
%
[3] 環境
[3.1] OS: (Linux3.2)
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: (C)
[4] 期限: (07月23日まで)
[5] その他の制限:おねがいします
669:デフォルトの名無しさん
07/07/22 22:24:59
char配列埋めるのにvalueはintかよ
670:デフォルトの名無しさん
07/07/22 22:27:26
標準のmemset()もそうでしょ
671:デフォルトの名無しさん
07/07/22 22:41:46
わかる方でいいのでおねがいします
672:デフォルトの名無しさん
07/07/22 22:43:25
何を?
673:デフォルトの名無しさん
07/07/22 22:43:59
どれを?
674:671
07/07/22 22:45:03
すみません全部忘れてました
村上ファンド事件についてインサイダー取引という単語を用いて100字以内にまとめよ
です
675:デフォルトの名無しさん
07/07/22 22:47:02
he is very very bad
676:デフォルトの名無しさん
07/07/22 22:51:21
665と668です
677:671
07/07/22 23:03:48
本当に誰か答えてください><
678:デフォルトの名無しさん
07/07/22 23:11:30
>>665
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ココの人、みんな"わかる方"だからさ。そういう言い方なんか違うと思うよ。
679:デフォルトの名無しさん
07/07/22 23:16:22
Linux3.2 うひょ
680:デフォルトの名無しさん
07/07/22 23:31:17
char *cmemset(char *start, int value, int length)
{
const unsigned char ch = value;
while(num--)
*ptr++ = ch;
return start;
}
char *cmemmove(char *dest, char *src, size t length)
{
while(length--)
*(dest+length) = *src;
return dest;
}
681:デフォルトの名無しさん
07/07/22 23:34:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Mac)
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: (C)
[4] 期限: ([2007年7月23日9:00まで] )
[5] その他の制限:問題文、プログラム内で使うデータファイル、自分で作ったソースをzipにしました
何故動かないのかわからないのでご教授下さいませ
682:デフォルトの名無しさん
07/07/22 23:35:25
メモリコピーはアドレスの大小関係で
昇順、降順を切り替えないとおかしなことになるよ
683:デフォルトの名無しさん
07/07/22 23:45:59
>>681
その汚いソースをなんとか動くようにしてくださいっていうなら絶望的だな
どっかしらでsegmentation faultが起きてるから頑張って探しな
684:デフォルトの名無しさん
07/07/22 23:52:08
>>679
大分未来からお越しのようですね
685:デフォルトの名無しさん
07/07/23 00:14:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):整数集合 { 1, 2, 3, 4, 5 } と { 2, 4, 6 } の 共通集合を求め、表示するプログラム
集合をリストを用いて実現し、emptySet, inSet, addElem, intersection, printSet, freeSet を リストを用いた集合操作に変更しなさい。
コード:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限: 2007/7/25 15:00
プログラムのコード自体はやってる最中なのでめちゃくちゃですが気にしないでください。
コンパイルは特にエラーもなく通ります。
実行したあと
%./a.out
と出るだけでそこから何も起きません。
無限ループに陥ってる可能性を考えてmain関数内にprintfを設置しました。
コードを見てもらえばわかるのですが、main関数内の2行目に配置したprintfすら実行されません(1行目はint型の変数宣言)。
これはmain関数が実行されていないということでしょうか?
原因解明お願いします。
686:デフォルトの名無しさん
07/07/23 00:16:28
>>681
enter と enter2 で xtopx->child1 や xtopx->child2 が使われているけど
xtopx 自体が初期化されていない気がする
687:デフォルトの名無しさん
07/07/23 00:17:31
>>680もう少しヒントをください
688:685
07/07/23 00:19:53
すいません。捕捉です。
このプログラムは、元は配列を用いて集合を実現してました。これをリスト構造に改編しろ。
という問題です。
689:686
07/07/23 00:27:52
>>681
あとグローバルでstruct member **result; が宣言されているのに
search および search2 で ローカルで struct member **result; が宣言されている
ローカル側のresult;に代入しているから
result=(struct member **)malloc(sizeof(struct member *)*(MEMBER_MAX+1));
で確保した領域が保存されていない.returnで戻しているけどmain でその戻り値保存していないし
というかこのresultのポインタリストはどこで使われているのだろうか?
690:デフォルトの名無しさん
07/07/23 00:32:12
最近のCって型定義に変数宣言しても通るの?
691:デフォルトの名無しさん
07/07/23 00:34:02
間違えた
×型定義に
○型定義前に
普通は構造体定義してから変数宣言だよね?
692:686
07/07/23 00:35:39
>>681がすでにいない気もするけど
>>681
Top1 と Top2 は 0 か NULL で初期化されていないので
enter と enter2 の if(!Top1){ } が実行されずに
top=Top1; while(top){ } で失敗する可能性がある
(HDDから怪しい音が・・・こわい)
693:デフォルトの名無しさん
07/07/23 00:42:08
>>685
int inSet(ElementP s,int v){/*変更可*/
while(s->next!=NULL){
if(s->data==v){
return 1;
}
}
return 0;
}
ここで無限ループしてる
694:デフォルトの名無しさん
07/07/23 00:46:51
>>680もう少し補足していただくと・・・
695:685
07/07/23 00:46:57
>693
指摘ありがとうございます。
しかし、修正してみたものの症状変わらず・・・。
696:681
07/07/23 00:47:46
>>692
すいません、プログラムと睨めっこしてました
ちょっといじってみます、また何かあったらご教授いただけると幸いです
697:デフォルトの名無しさん
07/07/23 00:48:48
while(p->next!=NULL)
{
if(p->data < val->data)
val=p;
p=p->next;
}
ここでも無限ループしてる
698:デフォルトの名無しさん
07/07/23 01:04:24
>>685
流し読みだけど、ElementP emptySet(){ return NULL; }で。
やり方は他にもあるけど、少なくとも次がない=空じゃないです。そうすると
mallocは、s==NULLのとき、addElemでして、return sってことになるかと。
void addElem(ElementP s,int v) → ElementP addElem(ElementP s,int v)
ですね。あと、freeSetが最初しか開放してないから再帰でnextたどってく感じで。
699:デフォルトの名無しさん
07/07/23 01:17:33
>>680 int main()内が分かりません
助けてください><
700:685
07/07/23 01:31:09
>697
すいません、どこで無限ループなのかわからないです。
>698
その方法もやってみます。
freeSetの件も修正してみます。
701:685
07/07/23 02:00:10
どうやら環境の差のようです。Windowsで実行したところ正常に動きました。
いろいろとありがとうございました。
702:681
07/07/23 02:01:28
>>681ですが、アドバイスをいただいて直してみましたがうまくいきません
アップしたソースの不都合な所はばっさり変更しても良いので、
なんとか動くように訂正お願いします
703:デフォルトの名無しさん
07/07/23 02:04:14
環境の差なわけねえwww
704:デフォルトの名無しさん
07/07/23 02:18:42
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
[プログラム説明]
2桁の16進数('41'~'49'、 '50'~'59')を入力すると対応する文字を表示する。
ただし、%xは使用しないこと。なお、入力に間違いはないものとする。(ヒン
ト:入力は一つの数値か、二つの文字か?)
実行結果
2桁の16進数('41'~'49'、 '50'~'59')を入力してください:53
文字コード「53」文字は「S」です。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語: C++
[4] 期限: ([明日の朝まで] または [無期限] のいずれか)
[5] その他の制限: printf() scanf()を最近習いました
705:デフォルトの名無しさん
07/07/23 02:27:40
>>704
#include <stdio.h>
int scan_ascii(){
int c1,c2;
printf("2桁の16進数('41'~'49'、 '50'~'59')を入力してください:");
scanf("%c%c", &c1, &c2);
return (c1<<4 + c2);
}
int print_ascii(int c){
printf("文字コード「%d」文字は「%c」です。\n", c, c);
}
int main(){
print_ascii(scan_ascii());
return 0;
}
706:デフォルトの名無しさん
07/07/23 02:34:50
すいません、returnとasciiは習ってないです・・・
でもありがとうございます!1原型ができました
707:デフォルトの名無しさん
07/07/23 02:40:08
>>702
URLリンク(kansai2channeler.hp.infoseek.co.jp)
708:707
07/07/23 02:42:00
アンカー間違えた
>>702 じゃなくて >>701 だった
709:デフォルトの名無しさん
07/07/23 03:09:46
>>420
まだ全然わからないんでお願いします
710:デフォルトの名無しさん
07/07/23 03:28:43
\n n番目に表れた\(...\)の中の文字列にマッチ (nは1から9の整数)
が意味わからね
方針として入力文字列を"トークン"列に変換してから置換処理がクレバーじゃね?
struct toknの設計がつぼおおおぉおおおおぉおぉおぉおおおおおおおおおおおあおあさだおssd
711:デフォルトの名無しさん
07/07/23 03:44:20
\nの前の正規表現を\( \)で囲っておくとあとで呼び出せるってやつです
URLリンク(ja.wikipedia.org)
\([asdf]\)\(fty\)\([frty]\)\(t\)\3
で
aftytterをチェックした場合
\3はtと同じです
system()からsed呼び出して同じ動作するものは作れたんですけど、それだと題意にあわないんで・・・
712:デフォルトの名無しさん
07/07/23 10:36:35
>>530
返事が遅くなってすいません。>>530に書いてあるものを使ってpop,pushを使い
たいです。+-*/は数字の大きさで表したいです
713:デフォルトの名無しさん
07/07/23 11:05:05
[1]授業単元:プログラミング技術III
[2]問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ: gcc
[3.3] 言語: C
[4] 期限:7/24まで
[5]その他の制限:特になし
よろしくお願いします
714:デフォルトの名無しさん
07/07/23 11:12:26
>>712は、自分が書いた文を自分で理解できるのか?
715:デフォルトの名無しさん
07/07/23 11:51:28
\(\(c\)b\)d\) の場合"2"番目は何を意味する?
\([ab]\)\1の場合
aa と bb にはマッチするが ab にはマッチしないと理解して良いのか?
(否なら単に[ab][ab]と記述すればいいしなクソ)
それとこれ本当に宿題か?
\nさえなけりゃ理論的な意味の正規表現についての良問だと思うが
\nの性で劇的に難しくなってね?
お前何科の何年生?
あるいは問題間違ってねえ?
716:デフォルトの名無しさん
07/07/23 12:02:40
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
プログラム問題文に沿って作ったものと、それに2つの要素を追加修正した
2つのプログラムの作成をお願いします。
[3] 環境
[3.1] OS: windows XP
[3.2] visual studio 2005
[3.3] 言語: C++
[4] 期限: 2007/07/26 13:00まで
[5] その他の制限: 特に無し
よろしくお願いします
717:デフォルトの名無しさん
07/07/23 12:18:51
\(\)って入れ子にはしないんじゃないか
718:デフォルトの名無しさん
07/07/23 12:25:06
[1] 授業単元:C
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: windows XP
[3.2] bcc32
[3.3] 言語: C
[4] 期限: 2007/07/23 13:00まで
[5] その他の制限: 特に無し
719:デフォルトの名無しさん
07/07/23 13:06:20
>>715
問題文には正規表現の各表現の説明があった後に
. * [abc…]、\が使えるようなプログラムを実装せよとかかれてました
ちなみに2回のC初心者向けの演習です
期末レポートなんですが、人によって問題が違って明らかにはずれくじをひいたっぽいですorz
720:デフォルトの名無しさん
07/07/23 13:08:52
あと、正規表現では括弧の入れ子は外から順に数えていくはずです
721:デフォルトの名無しさん
07/07/23 13:54:35
二回で正規表現の実装かよ
Perlとかでならまだしも・・・
722:デフォルトの名無しさん
07/07/23 14:02:30
ほかの人の課題は1時間とかで終わるのもあるんで、\n入れると難易度極端に変わるなら、実はそれ無しかもしれないです
723:デフォルトの名無しさん
07/07/23 14:06:51
出題者は、正規表現の複雑な仕様を完全に実装しろと言っている訳ではないよね。
単純なパターンチェックと置換を実装すればいいんじゃないの?
724:デフォルトの名無しさん
07/07/23 14:09:17
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
クラスcomplexのメンバ関数で、複素数の絶対値を与える関数を新たに作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: CC
[3.3] 言語: C++
[4] 期限: [無期限]
[5] その他の制限: 特になし
よろしくおねがいします。
725:デフォルトの名無しさん
07/07/23 14:15:43
>>716
URLリンク(kansai2channeler.hp.infoseek.co.jp)
726:デフォルトの名無しさん
07/07/23 14:16:34
(含コード&リンク):
のくせになんにも貼られてないってどうよ
727:デフォルトの名無しさん
07/07/23 14:26:47
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):正の整数を入力し1からその数までの間に素数がいくつあるのか数えるプログラムを作れ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C++
[4] 期限:7月中
[5] その他の制限:特にないです。
よろしくお願いします。
728:デフォルトの名無しさん
07/07/23 14:30:37
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): nを入力してs=1/1-1/3 + 1/5-1/7 + 1/9....+(-1)^n-1/(2n-1)
の和を求めるプログラムを作れ。nが大きくなるにつれてs*4がどうなるか
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C++
[4] 期限:7月中
[5] その他の制限:特にないです。
問題が難しくて困っています。
お願いいたします。
729:デフォルトの名無しさん
07/07/23 14:35:16
double s;
int i,n,j;
printf("n: ");
scanf("%d", &n);
j = 1;
for(i = 0; i < n; i++) {
s += j/(2n-1);
j = -j;
}
printf("s = %lg\n", s);
730:デフォルトの名無しさん
07/07/23 14:57:03
これはひどい
731:デフォルトの名無しさん
07/07/23 14:58:48
#include<stdio.h>
int main(){
double s=0;
int i,n,j=1;
printf("n: ");
scanf("%d", &n);
for(i = 1; i <= n; i++) {
s += (double)j/(2*i-1);
j = -j;
}
printf("s = %lg\n", s*4);
return 0;
}
732:デフォルトの名無しさん
07/07/23 15:33:33
設問的にはcout/cinじゃまいか
733:デフォルトの名無しさん
07/07/23 15:41:51
>>727
おまいのレベルに合わせてコーディングした
#include<stdio.h>
int main(){
while(1){
int i,j,n,c=0;
printf("正数 = ");
scanf("%d",&n);
for(i=2;i<=n;c++,i++)
for(j=2;j<=i/2;j++)
if(i%j==0){
c--;
break;
}
printf("素数 = %d 個\n",c);
}
return 0;
}
734:デフォルトの名無しさん
07/07/23 15:52:57
正規表現のアルゴリズムとか考えたこともなかったな
一度単純な実装見てみたい
735:デフォルトの名無しさん
07/07/23 16:27:02
>>728
#include <iostream>
#include <iomanip>
#include <cmath>
int main()
{
double s = 0;
int i, n;
std::cin >> n;
for(i = 1; i <= n; i++){
s += pow(-1, i - 1)*1/(2*i - 1);
std::cout << std::setw(10) << i << " : " << s*4 << std::endl;
}
return 0;
}
736:デフォルトの名無しさん
07/07/23 17:23:18
>>714
出来ます。+-*/の順に1234とつけて行き大きい数字から(/から)優先
で計算するようにしたいんです。
737:デフォルトの名無しさん
07/07/23 17:53:38
>>736
スタックを2つ作り、数字と演算子を別々に積み上げておいて、演算子はどの数字を計算対象にしたら良いか、分かるのか?
738:デフォルトの名無しさん
07/07/23 18:05:53
>>736
もうちょいで自分でできるぞ
なんかね、道間違えている気がする
739:デフォルトの名無しさん
07/07/23 18:22:04
>>734
URLリンク(www2.starcat.ne.jp)
に単純な実装があるよ。
740:デフォルトの名無しさん
07/07/23 19:12:04
>>725
Test operator = (const Test& t) とかを
Test& operator = (const Test& t) にしないと
return *this が Test(const Test& t) を呼んじまうぜよ
741:ゆみ
07/07/23 19:24:32
超初心者です。制限時間45分で出題されましたが、解答できなかった為持ち帰りになりました(>_<)
どうか御教授お願いします。
・char 型の配列aに"HellowWorld"の文字列を格納すること。
・配列aからchar 型の配列bにデータをコピーすること。
※標準関数(memcpy,strcpy等)を使用しないこと。
・配列bからchar 型の配列cにデータをコピーすること。
※但し、"w"、"W"は"*"にデータをすりかえてデータをコピーすること。
→配列cには文字列"Hello**orld"を格納すること。
・printf()で表示する際は、配列cのデータを一文字づつ表示すること。
※"o"を表示する際は、"o"を表示する代わりに"O"を5つ表示すること。
・VCのプロジェクト名は"ckadai3"とすること。
742:デフォルトの名無しさん
07/07/23 19:27:52
>>741
ESPの俺が応える
お前男なのにキモイ
743:デフォルトの名無しさん
07/07/23 19:30:51
>>741-742
ESPってなに?
744:デフォルトの名無しさん
07/07/23 19:31:32
>>742
知り合いみたいだからよろしく
745:デフォルトの名無しさん
07/07/23 19:31:36
ESPなら、カキコを阻止してくれよ
746:デフォルトの名無しさん
07/07/23 19:49:57
>>744
マジ?
747:デフォルトの名無しさん
07/07/23 20:06:13
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限:2007/07/24
[5] その他の制限:なるべく問題文の指定以外の変更はしないで頂きたいです。どうか宜しくお願いします。
748:デフォルトの名無しさん
07/07/23 20:29:41
>>747
>>294
>>494
>>600
749:741
07/07/23 20:57:04
741です。どなたかお願いします。For文もif文もままならないレベルなので、自力で解くのは厳しいです。また30分後にきます(´~`;)
750:デフォルトの名無しさん
07/07/23 20:58:46
うざ
751:デフォルトの名無しさん
07/07/23 21:06:14
質問テンプレを利用しましょう。
752:デフォルトの名無しさん
07/07/23 21:08:29
向こうで回答されてなかったっけ
753:デフォルトの名無しさん
07/07/23 21:15:49
>>420
URLリンク(kansai2channeler.hp.infoseek.co.jp)
どう考えても2回の宿題のレベルじゃなくね?
一日かかっちまったわ
完全じゃねえけどな
\(\)は無理,ってか>>719の言い方じゃイラネエじゃんクソ
つーかなに?ほんとはライブラリとか使えんじゃねーのか???
>>420が問題の趣旨を理解していない気が激しくするぞコラ
まあ俺は勉強になったがなクソ
754:デフォルトの名無しさん
07/07/23 21:17:13
#include <stdio.h>
int main(void)
{
char a[11]="HellowWorld", b[11], c[11];
int i;
for(i=0 ; i<11 ; i++){
b[i] = a[i];
if(b[i]=='W' || b[i]=='w') c[i] = '*';
else c[i] = b[i];
if(c[i] == 'o') printf("OOOOO");
else printf("%c", c[i]);
}
printf("\n");
return(0);
}
755:ゆみ
07/07/23 21:30:16
>754
ありがとうございます。
助かりました。
756:デフォルトの名無しさん
07/07/23 21:35:04
>>754
ウホッこれはいい再提出
757:デフォルトの名無しさん
07/07/23 21:44:36
別に文字列コピーした後に表示とか書いてないからおkじゃね?
出題者の意図とは違うと思うけど
758:デフォルトの名無しさん
07/07/23 21:46:38
printf("\n");
return(0);
これはないだろ
759:デフォルトの名無しさん
07/07/23 21:52:07
>>757
よく見れば大丈夫そうだな
760:デフォルトの名無しさん
07/07/23 22:33:47
下記の仕様と条件を満たすプログラムを作成しなさい。
●仕様
・"Hello"、"World"、"kadai"を指定された順番で表示すること。
※初期の順番は、"Hello"、"World"、"kadai"とする。
※順番はテーブル固定とし、変更毎にビルドを行うこととする。
●条件
・char 型index(1Byte)とchar型の配列hako[6](6Byte)をメンバとする構造体STRINDEX_TBLを作成すること。
・STRINDEX_TBL型の配列tableに、"Hello"、"World"、"kadai"の3つの文字列と表示順番indexを格納すること。
・文字列を表示の際は、printf()を使用し1文字("%c")づつではなく、文字列指定("%s")で指定すること。
・VCのプロジェクト名は"ckadai6"とすること。
●制限時間
・30分
761:デフォルトの名無しさん
07/07/23 22:40:25
これほどまで見下してる出題者は初めてだな
762:デフォルトの名無しさん
07/07/23 22:42:31
今年の4月から、去年質問した初心者が回答者側に回ったのか知らんが
gdgd質問者に注文つけたりうるせーよ、答える気がないなら黙ってスルーしろ。
っつかお前みたいな奴はこのスレには必要ないから、とっとと就職して
安月給プログラマーでもやってろ。
763:デフォルトの名無しさん
07/07/23 22:45:32
スルーできないお前もだろ
まあ俺もだが
764:デフォルトの名無しさん
07/07/23 22:47:22
>>761 = >>763 さすがに痛いわ、こいつ。自覚ありか。うぜぇ。失せろ。
お前みたいな奴に回答なんて求めてねーんだよ、他の回答者も。
765:デフォルトの名無しさん
07/07/23 22:47:51
#include <stdio.h>
typedef struct {
char index;
char hako[6];
} STRINDEX_TBL;
int main(void)
{
STRINDEX_TBL st[] = {{0, "Hello"}, {1, "World"}, {2, "kadai"}};
int i, j;
const int num = sizeof(st)/sizeof(st[0]);
for(i=0; i<num; i++)
for(j=0; j<num; j++)
if(st[j].index == (char)i){printf("%s\n", st[j].hako);break;}
return 0;
}
やっつけ
766:デフォルトの名無しさん
07/07/23 22:53:43
>>761-764
何方もどっちだな
767:デフォルトの名無しさん
07/07/23 22:54:36
>>737>>738
スタックを2つ作り、数字と演算子を別々に積み上げておいて、演算子はどの数字を計算対象にしたら良いか、分かるのか? は、
数字が1234で演算子は+-*/です。これを1は激弱、2は弱、3は強、4は激強
にして指定した数が大きいほど優先順位が高い。
/→*→-→+の順で計算する。
768:デフォルトの名無しさん
07/07/23 22:56:35
>>767
> これを1は激弱、2は弱、3は強、4は激強
4は激強
4は激強
4は激強
4は激強
4は激強
げきつよ?
げききょう
769:デフォルトの名無しさん
07/07/23 23:00:43
>>9
>>32
>>39
>>50
>>148
>>259
>>313
>>327
>>407
>>503
770:デフォルトの名無しさん
07/07/23 23:07:29
>>769
逆によくそんな前からレス探してくるなと感心。
まぁ質問者も丸投げするのは構わないんだけど
催促レスしまくってくるのと問題に最低限の必要事項が
無いのは止めて欲しいかなぁ。
771:デフォルトの名無しさん
07/07/23 23:11:27
>>770 = 去年は質問者だったが、質問の仕方が悪くて散々叩かれた挙句に
答えてもらえなかった腹いせにこのスレで今年の質問者をねちねち詰り弄ることが
今の趣味になってしまった可愛そうな就職浪人。
772:デフォルトの名無しさん
07/07/23 23:11:58
>>770
問題に最低限の事と言われても言われたのはこれくらいです。
使うプログラムも乗せてありますし。
773:デフォルトの名無しさん
07/07/23 23:14:04
>>771
まぁ落ち着け、そう噛み付くな。
自分は基本的にこのスレに住みついてなくて
暇な時に見て解いてるだけで普段はレスもしてないから。
774:デフォルトの名無しさん
07/07/23 23:15:35
>>772
誰もyouにレスしてないyo!
775:デフォルトの名無しさん
07/07/23 23:16:51
やべぇ、ネチネチ質問者を弄っている奴らが簡単に釣れちゃったぜ。
これだから釣りは面白くて止められないぜ。
776:デフォルトの名無しさん
07/07/23 23:16:52
>>774
勝手に勘違いしてすいません
777:デフォルトの名無しさん
07/07/23 23:18:12
ほんとにバカばっかりだな
778:デフォルトの名無しさん
07/07/23 23:19:33
ほんとだね
779:デフォルトの名無しさん
07/07/23 23:19:57
釣れたってww勝手に一人でファビョってただけじゃねぇかwww
780:デフォルトの名無しさん
07/07/23 23:21:33
俺「釣り」とか「釣り師」っていうのは、
釣り師 ↓
. /| ←竿
○ / |
. (Vヽ/ |
<> |
゙'゙":"''"''':'';;':,':;.:.,.,__|_________
|
餌(疑似餌)→.§ >゚++< ~
の組み合わせだと思ってたんだけど、
最近自称釣り師がダイレクトで自分の本音を攻撃されて「釣れた!」とか
言ってるの多いよね。
これは、どっちかというと、
,~~~~~~ 、
|\ ( 釣れたよ~・・・)
| \ `~~~v~~~´
し \
゙'゙":"''"''':'';;':,':;.:.,., ヽ○ノ
~~~~~|~~~~~~~ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ト>゚++<
ノ)
かと思うんだけど、どうよ?
781:デフォルトの名無しさん
07/07/23 23:21:38
やべぇ、今度は自分がファビョってますって公言する必死な奴も釣れちゃったYO!
あのなぁ、こっちは質問者を弄っている奴をピンポイントで指して指摘しているんじゃなくて
そういう奴がうぜぇと言っているだけで、それに 反応 しちゃっている奴がわざわざ
エサに食いついちゃっていることに気づかないから笑えるんだよw
782:デフォルトの名無しさん
07/07/23 23:22:47
バカって自分で書いたことと他人が書いたことを見間違えちゃうって本当だったんだ・・・
かわいそう
783:デフォルトの名無しさん
07/07/23 23:23:01
こんなスレあったのか
楽しいwwwwwwwww
784:デフォルトの名無しさん
07/07/23 23:24:33
>>767
素直に釣られましたが教えてください
785:デフォルトの名無しさん
07/07/23 23:26:52
演算子に割り当てた数字と、計算対象としての数字がゴッチャになっている。
優先順位の高さが、何を指しているのか分かっているのか?
何でも良いから加減乗除を使っている計算式を書いて、
それぞれのスタックとやらに計算対象の数字と演算子に割り当てた数字が
どのように積まれていくのか書いてみろ。
786:デフォルトの名無しさん
07/07/23 23:27:01
>>762=>>764=>>769=>>771=>>775=>>781
はいはいクマクマ…はぁ。
787:デフォルトの名無しさん
07/07/23 23:30:47
>>785
わかりません。わからないから来ています
788:デフォルトの名無しさん
07/07/23 23:34:25
即答せず、少しは考えろよ。
式を書いてみろ。
小学生でも理解できる事だ。
789:デフォルトの名無しさん
07/07/23 23:34:41
>>753
おまいのソース見て、俺も書きたくなってきた。
でも、正規表現アルゴリズムって何? というレベル。
790:デフォルトの名無しさん
07/07/23 23:34:53
鳥でもコテ半でもいいからつけてくれんとはぁ~さっぱりさっぱりだわw
791:デフォルトの名無しさん
07/07/23 23:38:15
1+1=2
792:デフォルトの名無しさん
07/07/23 23:41:31
>>753
授業2回でこんな問題解けるような生徒がいるなら職業プログラマいらないよなw
みんなバイトでいいやってなっちまうわ。
俺もやってみたいけど1時間やそこらじゃ絶対終わらないな・・・
ってか、講師はちゃんとテスト、レビューするのかな?
793:デフォルトの名無しさん
07/07/23 23:41:50
>>788
式ですか?
794:デフォルトの名無しさん
07/07/23 23:49:22
なんかしつこいからさっさと教えたら?
795:デフォルトの名無しさん
07/07/23 23:55:05
>>788
俺も同じ問題がわからない。
教えてくれないか?
796:デフォルトの名無しさん
07/07/23 23:58:10
mainの中の
p=&c;
間違いだって誰か言ってる?
797:デフォルトの名無しさん
07/07/23 23:59:36
>>796
間違えなんですか?
798:デフォルトの名無しさん
07/07/24 00:04:53
>>797
だって洗剤はP&Gだろ?
配列なんだから&はいらんよ。
p=cでpにアドレスがコピーされる。
799:デフォルトの名無しさん
07/07/24 00:04:57
間違えという言葉が間違っていると揚げ足取り。
800:デフォルトの名無しさん
07/07/24 00:07:06
p=cでもp=&c; でもいいと言われました
801:デフォルトの名無しさん
07/07/24 00:10:29
確かに言ってた
802:デフォルトの名無しさん
07/07/24 00:22:13
>>580じゃダメなん?
803:デフォルトの名無しさん
07/07/24 00:22:26
>>747
URLリンク(kansai2channeler.hp.infoseek.co.jp)
一応580でも答えたんだけどスルーされてしまったらしい.
完成したソースでないと受理されないのか.
いずれにしても出題の仕方がひどい.p=cでもp=&cでもいいとかどこの講師だよ.
804:デフォルトの名無しさん
07/07/24 00:26:09
>>803
ありがとうございます
805:デフォルトの名無しさん
07/07/24 00:33:56
何だ、回答が出ているんだ。これだけ聞いていれば答えてくれているよね。
悪いが、作業は中止する。
提示された回答をチェックしてみて下さい。要求通りだと思うよ。
気になったのがあるんだが。
number()で数値と演算子に空白がある時と無い時で動きは違わないか?
806:デフォルトの名無しさん
07/07/24 00:35:47
×数値と演算子に空白
○数値と演算子の間に空白
807:803
07/07/24 00:41:03
スタック回りに微妙なバグがありそうだけど,いい加減に書いたから適当な修正方法が見当たらない.
とりあえずの応急処置ってことで,expression()内の最後のreturn ans;の直前に
op_stack = val_stack = NULL;
の一行を追加しといて.
808:デフォルトの名無しさん
07/07/24 01:02:26
expressionの初っ端の処理がヤバイっぽい
809:デフォルトの名無しさん
07/07/24 01:05:50
>>805
URLリンク(kansai2channeler.hp.infoseek.co.jp)
しかし作っちまったので俺は投稿する
因みに
struct stack *op_stack, *val_stack;
が
struct stack *op_stack=NULL, *val_stack=NULL;
なんだとおもふ
810:デフォルトの名無しさん
07/07/24 01:41:49
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク): 二分探索木の拡張
詳細はうpしました。元になるプログラムも入っています。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows/Linux/等々) windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) VC6.0
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7/27まで
[5] その他の制限:
どなたかご教授よろしくお願いします。
811: ◆DpMW3bRjps
07/07/24 07:34:56
1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):任意の文字列を入力し、その文字列の中に任意の文字が何個入っているかを出力する
プログラムのソースコードを提出しなさい。
実行例)
文字列を入力してください
yamamotoyama
さがす文字を入力してください
y
入力された文字列の中に指定された文字は2個あります
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2007年07月25日まで
[5] その他の制限:>>452で教えてもらい、その後少し訂正したんですがダメでした。
しつこいですがもう1回お願いします。。
812:デフォルトの名無しさん
07/07/24 07:55:11
>>452で全く問題なくコンパイル通るが
813:デフォルトの名無しさん
07/07/24 07:58:32
>>811
#include<stdio.h>
int main( void ){
char c, string[100], *pstr;
int count;
printf( "文字列を入力してください\n" );
scanf( "%s%*c", string );
printf( "さがす文字を入力してください\n" );
scanf( "%c%*c", &c );
pstr = string;
count = 0;
while ( *pstr != '\0' ) {
if ( *pstr == c ) {
count++;
}
pstr++;
}
printf( "入力された文字列の中に指定された文字は%d個あります\n", count );
return 0;
}
814:813
07/07/24 08:01:47
その他制限に全く目を通していなかったorz
朝っぱらかやろうとするとすぐこれだ・・・
815:デフォルトの名無しさん
07/07/24 11:16:18
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):括弧が使用可能な四則演算の電卓プログラムを作成せよ。文字入力で、入力時の関数はgetsを使用する事。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc3.4
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限:自作関数は不可、スキルは初心者用の参考書一冊を一通り読んだくらいです。
よろしくお願いします。
816:デフォルトの名無しさん
07/07/24 11:37:51
自作関数は不可って?
817:デフォルトの名無しさん
07/07/24 11:45:17
ごめんなさい、そこは無視して大丈夫ですorz
818: ◆MmITqPYxy6
07/07/24 13:42:22
[1] 授業単元: IT入門B1 C言語
[2] 問題文(含コード&リンク): 1辺10の立方体内部に含まれる四面体をN個発生し、
体積の分布(区間数は20程度)を表示するプログラムを
以下の要求に従って作成し、実行しなさい。
1,四面体を表す構造体(4つの3次元位置ベクトルをメンバーとする) を Tetra という名前で定義する.
typedef struct {. . .} Tetra;
2,構造体 Tetra を返却する,すなわち四面体を生成する以下の名前の関数を作成する.
Tetra mk_tetra(void)
3,四面体の体積を返す次の名前の関数を定義する.
double vol_tetra(Tetra t)
4,Nの値は実行時にキー入力するように設計しなさい.
[3] 環境
[3.1] OS: (Windows/Linux/等々) Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc 3.4
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7月25日迄
[5] その他の制限:
ヒントとして 1、講義で用いた"vector.h" を必ずincludeして使いなさい。
2、四面体の1つの頂点を原点にして、他の3つの位置を表すベクトルを r1,r2,r3とすると、四面体の体積Vは以下のように与えられる
V=1/6|(r1×r2)・r3|
がありました。
vector.h はこれです URLリンク(www-it.sci.waseda.ac.jp)
819: ◆MmITqPYxy6
07/07/24 13:46:23
よろしくお願い致します。
820:デフォルトの名無しさん
07/07/24 14:20:45
>>811
>[5] その他の制限:>>452で教えてもらい、その後少し訂正したんですがダメでした。
もしかして、gets()をfgets()に修正したと言うことですか?
それ以外にも変更していますか?
fgets()だけなら、引数を変更するだけで良いんじゃないでしょうか。
821:デフォルトの名無しさん
07/07/24 14:50:12
>452はgets()の使い方が阿呆過ぎる。
それはさておき、>811はなんで自分がどう修正してダメだったかも書かないんだ?
822:デフォルトの名無しさん
07/07/24 14:59:12
>>821
gets()の使い方なんか可愛いもんだ。突っ込みどころ満載で目も当てられない。
823:デフォルトの名無しさん
07/07/24 15:09:24
取り敢えず書いてみた。
#include <stdio.h>
int main()
{
puts("文字列を入力してください");
char buf[200];
if (fgets(buf, sizeof(buf), stdin) == NULL) return 1;
puts("さがす文字を入力してください");
char key;
if (scanf("%c", & key) != 1) return 1;
unsigned count = 0;
for (unsigned ic = 0; buf[ic] != '\0'; ++ic) if (buf[ic] == key) ++count;
printf("入力された文字列の中に指定された文字は%d個あります\n", count);
return 0;
}
824:デフォルトの名無しさん
07/07/24 16:33:28
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):”rand1000.dat”というデータの個数nとその個数分の整数データが保存されているファイルがある
(URLリンク(kansai2channeler.hp.infoseek.co.jp))
このデータをファイルから読み込み
挿入ソート
基数ソート
ヒープソート
クイックソート
マージソート
によってソートできるよう各プログラムを作成せよ
データ数が100,000個のときでも対応できるようメモリを確保しておいてください。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 7月28日
[5] その他の制限:出来る限り単純なアルゴリズムで作ってください。合計5つのプログラムを作成してください。
大変な問題で申し訳ありませんがどなたか詳しい方よろしくお願いいたします
825:デフォルトの名無しさん
07/07/24 16:43:08
>>824
なんで露骨にマルチするわけ?
専用ブラウザ使ってる連中の多くが両方とも見ているから、逆効果にしかならないのだが。
#それともネタか? ネタにマジレスしちゃったか?w
826:デフォルトの名無しさん
07/07/24 17:58:03
だから答える気がない奴はいちいちうぜーレスするなよ、邪魔。お前みたいな奴いらねーって
行頭 # 野郎w
827:デフォルトの名無しさん
07/07/24 18:03:33
>>826
お前も、なぁ…?
828:デフォルトの名無しさん
07/07/24 18:07:01
>>826
こいつ、他のスレにも潜んでるよな
IDが出ないのをいいことに好き勝手やってやがる
829:デフォルトの名無しさん
07/07/24 18:08:26
>>828
あ~はいはい、去年質問したけど質問の仕方が悪くて
今年は自分が質問者を弄るようになった基地外えせ回答者さん乙でありますw
うぜぇから他の回答者の迷惑になるから、文句を言うだけのレスはするなや、答える気も
答える能力もないくせに、うざすぎ
830:デフォルトの名無しさん
07/07/24 18:10:00
[1] 授業単元:プログラミングⅠ
[2] 問題文(含コード&リンク):
二つの任意の正の整数の乗算(*)を、シフト演算の組合わせと除算(/)と
加算(+)のみで解くプログラムを作成しなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 7月25日まで
[5] その他の制限: ビット演算まで習っています。
お願いします。
831:デフォルトの名無しさん
07/07/24 18:11:10
>>828
まぁ、アレだからスルーしてあげてくれ。
832:デフォルトの名無しさん
07/07/24 18:11:43
答える気も能力もないクズらが質問者を叩くだけで自己満足か、必死だな
833:デフォルトの名無しさん
07/07/24 18:17:21
何だ、本当に答える気がなくて質問者をスレのルールに則って詰るだけの低レベルか。
相手にするだけ無駄だ、お前ら俺がいる限り、もうこのスレには来なくて良いから。
邪魔だから失せろ。
834:デフォルトの名無しさん
07/07/24 18:19:16
>>827
質問者に対して、回答ではなく叩きでレスしているって意味だと思うんだが。
頭大丈夫か?
835:デフォルトの名無しさん
07/07/24 18:20:30
ここは馬鹿がアホをたたくスレですか?
836:デフォルトの名無しさん
07/07/24 18:21:31
>>834
お前こそ頭大丈夫か?文盲?
837:デフォルトの名無しさん
07/07/24 18:21:38
>>833
勝手にすればwww
838:デフォルトの名無しさん
07/07/24 18:22:39
>>834
>いちいちうぜーレスするなよ、邪魔。お前みたいな奴いらねーって
これに対してオマエモナーだろ。
839:デフォルトの名無しさん
07/07/24 18:24:38
>>838
いや、オマエモナーは>>827=>>838さんの専売特許ですから
840:デフォルトの名無しさん
07/07/24 18:27:21
なんか話が通じてないぞ。
841:にゃ~
07/07/24 18:31:53
f(x)=sin(x)をテイラー展開すると
∞
f(x)=∑(-1)^(k-1)*{x^(2k-1)/(2k-1)!}
k=1
となる.これを利用してsin(x)の値を多項式近似する関数double mysin(double x)を定義し,この関数を利用して,読み込んだ実数xのsin(x)を計算して出力するプログラム(sin.c)を書け.
また,数学関数sin(x)と自分で作ったsin(x)を比較せよ.
という問題なのですがどうしてもわからないんです。
今日中にできる方いらっしゃいますか??
理解したいので、コメント付きでどうかお願いします。
842:デフォルトの名無しさん
07/07/24 18:36:48
ループで適当なとこまで足してきゃいいだけだろ。
843:デフォルトの名無しさん
07/07/24 18:39:32
>>841
どの辺が分からない?式の意味は分かるよね?
844:デフォルトの名無しさん
07/07/24 18:58:17
>>841
#include <stdio.h>
#include <math.h>
double mysin(double x) {
double sub = 1.0;
int last = 1001; /* 奇数 */
while (last > 1) {
sub = 1 - (x*x / ((last-1)*last)) * sub;
last -= 2;
}
return x * sub;
}
int main(int argc, char *argv[]) {
while (1) {
double x;
scanf("%lf", &x);
printf("mysin(x) = %lf\t(sin(x) = %lf)\n", mysin(x), sin(x));
}
}
/* コメント:原点から遠ざかると近似が効かなくなるのはマクローリンの宿命だな */
845:デフォルトの名無しさん
07/07/24 20:27:21
マクローリン云々よりも漸化式の形で解くのに疑問を持つ
1001もマジックでエロい人だなぁ
846:デフォルトの名無しさん
07/07/24 21:42:25
>>841
クソわかりやすいつもり。わからないなら数学やりなおせ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
847:デフォルトの名無しさん
07/07/24 21:55:07
>>753
ありがとうございますー
最長一致するようにして使わせてもらいます
>\(\)は無理,ってか>>719の言い方じゃイラネエじゃんクソ
勘違いしてたみたいですね
すいません
>つーかなに?ほんとはライブラリとか使えんじゃねーのか???
>>>420が問題の趣旨を理解していない気が激しくするぞコラ
授業ではプリプロセッサにまったく触れてないんでそれはないです
848:デフォルトの名無しさん
07/07/24 22:22:39
さんざん考えたけど難しかったです。
よろしくお願いします。
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
2つの複素数z=a+bi、w=c+di(ただしiは虚数単位)を読み込み、足し算とかけ算を計算して表示するプログラムを作成せよ。
但し、以下の仕様を満足するように作成すること。
・複素数の実部と虚部を示す実数型変数をメンバとする構造体COMPLEXを構造体で定義する。
・足し算の関数:COMP_ADD(z、w)とかけ算の関数:COMP_MULT(z、w)を作成し、main関数ではこれらの関数を呼び出す。
(実行例)
1つ目の複素数(実部):2
1つ目の複素数(虚部):3
2つ目の複素数(実部):4
2つ目の複素数(虚部):-2
足し算:(6)+(1)i
かけ算:(14)+(8)i
(ヒント)
複素数を扱う構造体(メンバで実数部、虚数部を2つの数値で格納)を宣言し、各変数を格納、演算を行う。
複素数同士の足し算、かけ算は普通に行う。
(a+bi)+(c+di) (a+bi)×(c+di)
を展開して虚数の2乗は-1という知識があれば解ける。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C言語
[4] 期限:7/26(木)12:00まで
849:にゃ~
07/07/24 22:46:34
いろいろやってみたところ自己解決しました
載せてくれた人もいるみたいですが
いちおう礼をいっておきます
850:デフォルトの名無しさん
07/07/24 23:00:02
>構造体COMPLEXを構造体で定義する。
構造体を構造体以外でどうやって定義するんだよw
851:デフォルトの名無しさん
07/07/25 00:00:30
>>848 ほい。名前が適当だから、そこだけ自分で修正して。
#include <stdio.h>
typedef struct{
double r;
double i;
} comp;
comp add_comp(comp c1,comp c2){
comp tmp;
tmp.r=c1.r+c2.r;
tmp.i=c1.i+c2.i;
return tmp;
}
comp mul_comp(comp c1,comp c2){
comp tmp;
tmp.r=c1.r*c2.r-c1.i*c2.i;
tmp.i=c1.r*c2.i+c1.i*c2.r;
return tmp;
}
852:デフォルトの名無しさん
07/07/25 00:01:35
>>851の続き
int main(){
comp c1={2.0,3.0};
comp c2={4.0,-2.0};
comp result;
printf("1つ目の複素数(実部):%lf\n",c1.r);
printf("1つ目の複素数(虚部):%lf\n",c1.i);
printf("2つ目の複素数(実部):%lf\n",c2.r);
printf("2つ目の複素数(虚部):%lf\n",c2.i);
result=add_comp(c1,c2);
printf("足し算:(%lf)+(%lf)i\n",result.r,result.i);
result=mul_comp(c1,c2);
printf("かけ算:(%lf)+(%lf)i\n",result.r,result.i);
return 0;
}
853:デフォルトの名無しさん
07/07/25 00:24:02
[1] 授業単元:c言語
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語: C
[4] 期限: 7月26日まで
[5] その他の制限:ファイルを読込んだり、書込んだりするところを習いました。
854:デフォルトの名無しさん
07/07/25 00:29:39
>>853
例をみると、改行も区切りと見なしてるが、それでいいのか?
855:デフォルトの名無しさん
07/07/25 00:32:04
>>854
はい
856:にゃ~
07/07/25 00:37:12
>>844
わかりやすいっす!!
ありがとうございます。勉強しなおします
857:デフォルトの名無しさん
07/07/25 00:39:18
>>853
URLリンク(kansai2channeler.hp.infoseek.co.jp)
858:デフォルトの名無しさん
07/07/25 00:52:03
>>853
URLリンク(kansai2channeler.hp.infoseek.co.jp)
859:デフォルトの名無しさん
07/07/25 00:54:40
>>853 ちょい修正
URLリンク(kansai2channeler.hp.infoseek.co.jp)
860:853
07/07/25 00:57:53
すいません。
補足で
入力ファイルを読込モードでオープン
出力ファイルを書出モードでオープン
while ( 1 ) {
入力ファイルから書式付で字句を読込
ファイル終端なら脱出
出力ファイルに書式付で番号を付けて書込
}
入力ファイルをクローズ
出力ファイルをクローズ
と言う形で作れと書いていました。