gets使う奴は、ダンディ坂野に弟子入りすることを命ずる
前スレの989です。 できました。 ありがとうございます。
890 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/18(水) 09:58:47 初心者レベルの宿題しか解けないだけだろw 何か一言でも言わないと気が済まない、構ってちゃんの一言居士って マジ鬱陶しいな。自分がすべて正しいと勘違いしてんじゃね? 世の中どんだけ自分以上の人間がいるか分かってないだろ。 ネットが普及して、多種さまざまな人と意見交換する場なんて、 もう20世紀末から徐々にネットが普及して今に始まったことじゃないだろ? 最近インターネットを使い始めた、高校を出て社会を知り始めたお子ちゃまか? 少し口を閉じてろ。無駄口が多いくせに、お前の方がよっぽど 答えたとしても幼稚なソースしか書いてないことに気づくから。
ああそうね
まあ、麻呂には今後もクソースをくらえでおじゃるーとか言いながら 学生っぽさの抜けないソースを上げ続けてもらいたいな。 ある意味癒しだ。
9 :
デフォルトの名無しさん :2008/06/18(水) 23:35:45
[1] 授業単元: C言語入門 [2] 問題文(含コード&リンク): 文字列の入力を促し、入力。その文字列の先頭の文字と同じ文字が文字列の中にいくつ含まれるか 求めるプログラムをポインターを使って作りなさい。また先頭の文字も数のうちに入れること。 [3] 環境 [3.1] OS:windows [3.2] コンパイラ名とバージョン:VC++6 [3.3] 言語: C [4] 期限:明日 [5] その他の制限:ポインターを習って間もないです よろしくおねがいします
一言居士の特徴 何かと自分に対して意見をする者に対しては、どうでも良いようなことでも言い返す。 別に自分に意見をしたわけでもないのに、勝手な理論で話に入り込んで わけの分からないことを言い始める。誰も聞いてない無関係な内容を持ち出す。 相手にされないと、誰か自分に話かけてこないか、茶化す。しかし、それが 相手の気を逆撫でするような、不適切で幼稚な発言のため、逆にお叱りを受けるが 気に入らない奴はとことん罵倒して逃げる<厨房がやる決定的な特徴。
>>9 char buf[1024], *p; int cnt;
fgets(buf, sizeof buf, stdin);
for (p = buf + 1, cnt = 1; *p; p++) if (*buf == *p) cnt++;
printf("%d\n", cnt);
>>10 一言居士の特徴とか言われましても、言葉の意味に含まれておりますので。。。
頭痛の特徴→頭が痛くなる
みたいで気持ち悪い。
挙句、厨房の特徴になってしまっている。なにがいいたいかまとめろ。
>>9 #include<stdio.h>
int main(void){
int moji, chk=0, count=0;
while((moji=getchar())!=EOF && moji!='\n'){
if(chk==0 || moji==chk){
chk=moji;
count++;
}
}
printf("\n%d\n", count);
return 0;
}
>>11 空文字列の場合に0個と出力されるほうがよさげな
>>14 なるへそ。じゃこれで
for (p = buf, cnt = 0; *p && *p != '\n'; p++)
まじで? おじゃる口調でファビョってくれないとわからないよ!
18 :
838 :2008/06/19(木) 00:39:12
前スレの853を待ってるんだが・・ 一日たっても返事が来ないって事は釣られたのか・・俺は・・ このままだと単位\(^o^)/
>>18 授業単元は「ネットで宿題を解いてもらう方法」だっけ?
20 :
18 :2008/06/19(木) 00:43:49
21 :
デフォルトの名無しさん :2008/06/19(木) 00:49:15
[1] 授業単元: Cプログラミング演習 [2] 問題文(含コード&リンク): char name[20],int english,int mathematicsをメンバとする構造体 score を定義し、 五人の情報をもつ配列 seito[5]を構造体 score 型を使って宣言し(五人の情報は初期値として宣言する。)、 初期値を代入した構造体 score 型の構造体配列 seito[5] 宣言し、各メンバ変数でソートする関数を作成せよ。 [3] 環境 [3.1] OS:windows [3.2] コンパイラ名とバージョン:visual studio 2005 [3.3] 言語: C [4] 期限:出来るだけ早くお願いします。 [5] その他:組み合わさった問題を一文にしたため、分かりにくい所は聞いてください。お願いします。
>>932 =919
遅くなりましたがご丁寧にありがとうございました。
ご察しの通り#で区切った項それぞれを、逆さにするんです。
度々で失礼ですが、ご教授されたとおりにrev_flagを含む行を消すと、if文まで消さなくてはならず
他の変数まで消えてしまうため、エラー出るのですが、どうすればいいのでしょうか
前スレの
>>955 の方
どうもありがとうございます。
27 :
9 :2008/06/19(木) 02:00:37
>>28 素朴な疑問なんだが、配列の初期化の辺りは意図的にやっているんだよね?
>>18 data.txt
0 0.000
5 0.087
10 0.173
15 0.258
20 0.342
25 0.422
30 0.500
35 0.573
40 0.624
45 0.707
50 0.766
55 0.819
60 0.866
65 0.906
70 0.939
75 0.965
>>26 何で謝ってるか意味が分からん。良かったら教えて。
意図的だろうけど、普通に "abcdef" のように書いてもおkだな
>>30 前スレで
>ソースコードはでき次第うpする
って言ったのにその後放置したのを、期待してた18に悪いと思ったんだろ。
33 :
31 :2008/06/19(木) 04:10:03
サンク
本人でもないのに自分が思ったことを憶測で言うお前、 間違いなくあいつだw 毎日昼夜逆転の生活乙。 どんだけ構ってチャンなんだよ、お前?w 誰も部外者のお前に意見なんて聞いてねーだろw 本人がなんで謝っているのか?本人がレスすりゃ良いだけだろw
>>23 #include<stdio.h>
#include<stdlib.h>
void quick_sort(int left, int right);
int pivot(int left, int right);
int *list;
int num_of_data;
main()
{
int i;
scanf("%d", &num_of_data);
list = malloc(sizeof(int) * num_of_data);
for(i=0; i<num_of_data; i++) scanf("%d", list + i);
quick_sort(0, num_of_data-1);
printf("%d\n", num_of_data);
for(i=0; i<num_of_data; i++)
{
printf("%12d\n", list[i]);
}
}
> 期待してた18に悪いと思ったんだろ。 本人でもないのに他人の意向を勝手に思い込む、勘違いする奴って ぜってーどっかズレてるよな。それで相手の気分を害すると。
勘違いかどうかは本人以外わからないんじゃ? 勘違いと決め付けることは本人でもないのに他人の意向を勝手に思い込むことだと思うけど。
>>22 ちょうど上手いこと消せるかと思ったんだが…ま、いいや
変数はrev_flagだけ消して、whileのとこは下のに変更しとくれ
current = 0;
while(string[current] != '\0'){
if(s.num_of_data > 0) reverse[current] = pop(&s);
else reverse[current] = string[current];
if(string[current] == '#'){
i = current+1;
while(string[i] != '\0' && string[i] != '#'){
push(&s, string[i]);
i++;
}
}
current++;
}
reverse[current] = '\0';
>>39 top=top++; /*ポインタを更新*/
これはひどい
>>41 確かに副作用完了点とか無視しまくりんぐwwwwww
>>42 static int g_nStack[ STACK_MAX ] = {0,0,0,0,0,0,0,0,0,0};
グローバルならわざわざ初期化いらないんじゃない
STACK_MAX変更するたびに修正しないといけないし
そもそもスタックの中身がクリアされてる必要が無いな
>>40 動作確認完了です
わざわざ追加したこちらのご要望にも答えていただきありがとうございました
>>36 ありがとうございました
ただ実行しても
'=' : 'void *' から 'int *' に変換できません。
のようなエラーがでてしまいます
あと厚かましいのですが
もっと簡単な、サンプルプログラムに近いソースを頂くことはできませんか
前スレ745、期限切れですがなんとかなりませんか?
[1] 授業単元:プログラミング言語 [2] 問題分:リスト構造 • 数値の列を入力し,それをリスト構造にデータを格納せよ. その際,数値が大きさの順に並ぶようにせよ. - 入力する数値の数を限定してもよい - たとえば5個 • リストの内容を先頭から出力せよ. - 結果として入力された数値の列が,大きさ順に並び替えられて 表示されることになる. • リスト構成する要素(セル)はmalloc関数でヒープ領域から 確保するものとする. [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:visualstdio 2008 [3.3] 言語:C++ [4] 期限:6月19日 12時頃まで [5] その他の制限:特に無し。 申し訳ありませんがどうか宜しくお願いします。
>>48 Cで書いてあるから拡張子をcにしろ
C++じゃないとだめならmallocじゃなくてnew使え
ってなんかしらんけど荒れてるw そんな誤解受ける書き方だったかなあ。気をつけるね。
[1] ネットワーク論 [2] 基数変換 1)基数変換プログラムを作成しなさい。 「元:2〜16進数(選択)→変換先:2〜16進数(選択)」 という基数の指定ができるようにすること. [3] 環境 [3.1] Windows [3.2] CPad for Borland C++Compiler [3.3] 言語:C [4] 期限: 明日まで [5] その他の制限: 本課題は、基数変換の理解、および、そのプログラムとしての実装を 主たる目的としています。従って、基数変換を行う関数や外部プログ ラム等を用いてはいけません。 プログラムとってないけど出されてしまいましたorz 正直まったくわかりません・・・ とりあえずロダにあげときました。 よろしくお願いします。 福島大学 共生システム理工学類2年 吉原 千勝
前745解こうと思って考えてるんだけど、 たとえば A B C D の順列パターン数は 4! で求まるけど、 A A B C や、 A A A B, または A A B B の順列パターン数はどう求めるんだっけ? 公式ある?
プログラム取ってない人に明日まででこんな問題出すのはおかしい
トリップ付けないで質問する奴が多い事について
>>56 N個からなるパターンの総数はN!
同一種でM個の重複がある場合にはM!で割る
AABC → 4!/2!
AAAB → 4!/3!
AABB → 4!/(2!2!)
一般化してみた AABC → 4!/(2!1!1!) AAAB → 4!/(3!1!) AABB → 4!/(2!2!)
Cの問題は解くものじゃ無く書くもの。書き残すもの 書く事と解くことを履き違えいほうがいいぞ
>>56 重複順列ならn^m
でもサイコロの出目の合計だから重複組合せを求めるんじゃね
てか出目の合計xを求める確率密度関数p(x)がありゃいいんだけどな
65 :
56 :2008/06/19(木) 14:38:41
>>60 産休。
だがかなり厄介な問題だ。
めんどくさくなったw どうすっかな。
>>42 遅くなりましたが、ありがとうございました
何も言われないことを祈りますw
っつーか、やっぱ意図的だよね? "012345…DEF"でもおk
69 :
50 :2008/06/19(木) 17:52:31
うわ、期限間違えてた。 19日12時じゃ書き込んだ時点で既に過ぎてるって。 すみません、08年6月20日の12時迄でした。
>>70 要するにフィールドを9×9にして9分割して
その中に8個無かったら最後に1列1行調べるようにすればいいんじゃね?
できるだけ効率よく座標調べるようにしてさ
またお前か、口先だけで書き込み方と言い方に特徴があるから する分かるぞw
突っ込んだら負けなんですね 色んなイミで
74 :
デフォルトの名無しさん :2008/06/19(木) 19:17:12
[1]授業単元: C言語 [2] 問題文:BMP画像を読み込んで画面に出力するプログラムを作成 [3] 環境: [3.1] OS:Windows [3.2] コンパイラ名とバージョン: borland c++ 5.5.1 [3.3] 言語:Cのみ [4] 期限:20日まで [5] その他の制限:とくに無し
宿題を解いてくれなかったのかなあ。 かわいそうに。
>>70 前スレの回答では何がダメだったのだろう。手数が多すぎるからアウト?
ダメな理由を書かずにお願いしますお願いしますじゃ困る人もいるのでは。
77 :
70 :2008/06/19(木) 20:40:19
>>76 手数が多すぎたので…
20から30でお願いします
参考にしてチューニングしてみたら? 自分でやる時にどうやったら効率よく宝探せるか考えるとか 割とおもしろいと思うけどなあ
[1]簡易データベース作成[2]問題文
・入力内容
名前、年齢、メアド
・機能
追加、削除、編集、ソート(No.)、(年齢)、終了
・動作例
[追加の例]
1:add
2:del
3:mod
4:sort(no)
5:sort(age)
6:end
Select Function:1
name:name
age:78
mail:
[email protected] 1:namae 78
[email protected] [3-1]windows
[3-2]gcc
[3-3]C言語
[4]明後日まで。
とりあえず、追加だけでよろしくお願いいたします。
[1]簡易データベース作成[2]問題文
・入力内容
名前、年齢、メアド
・機能
追加、削除、編集、ソート(No.)、(年齢)、終了
・動作例
[追加の例]
1:add
2:del
3:mod
4:sort(no)
5:sort(age)
6:end
Select Function:1
name:name
age:78
mail:
[email protected] 1:namae 78
[email protected] [3-1]windows
[3-2]gcc
[3-3]C言語
[4]明後日まで。
とりあえず、追加だけでよろしくお願いいたします。
連続投稿すいません…。
tmp = num[j+1]; num[j+1] = num[j]; num[j] = tmp;
>>82 //ここに、数を入れ替えるプログラムを追加する
tmp = num[ j ];
num[ j ] = num [ j + 1 ];
num [ j + 1 ] = tmp;
[1] 授業単元:プログラミング [2] 問題文:int型配列x,yを次のように宣言する。 int x[5]={3,-2,-4,2,3}; int y[7]={1,3,3,-2,3,0,5}; このとき,xおよびyの配列の各要素の合計を返す関数ArraySum()を作成せよ。 なお,xとyとで2つの異なる関数を作る必要はない。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名:gcc [3.3] 言語:C [4] 期限: [2008年6月20日12:00まで] 前スレでも聞いてた人がいたけど俺にはわからなかったので・・・ 誰かよろしくお願いします
>>86 どこが分からないか言わないと前スレと同じ回答来るだけだと思うが
int ArraySum(int *p, int size) { int sum = 0; while(size--) sum += p[sum]; return sum; }
int ArraySum(){ return 2+13; }
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6978.txt コマンドライン引数で指定した2分木データから2分木を作成し、
次のsumValue関数を使ってノードの合計を計算するプログラムを、↑の資料を参考にして作成せよ。
ただし、下の実行例のように、ルートの左部分木と右部分木の合計も計算するものとする。
必要な関数などはすべて記載しておくこと。
BITREE_TYPE sumValue(BITREE_NODE *p);
実行例
[ 6 [ 8 1 5 ] [ 3 _ 9 ] ]
入力データ [ 6 [ 8 [ 1 _ _ ] 5 _ _ ] ] [3 _ [ 9 _ _ ] ] ]
==> 合計は 32 です
==> 左部分木の合計は 14 です
==> 右部分木の合計は 12 です
[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まで] または [無期限] のいずれか)
6月23日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にありません、よろしくおねがいします
>>70 またお前か…
8/100の8を全て選ぶ回数が20〜30回で、と言う確率がどれくらいかわかってるのか
単純に考えても8x4=32で、1つ探すのにも4手でオーバーだぞw
ズルなしで出来るか、ボケェ
自分のプレイの平均を出してみろ
>>91 またお前か…
要らん罵倒レスが入っているから分かりやすいぞw
わざわざ改行して最後に句読点をつけない特徴もそのまんまw
アデランスへ行け
>>92 あなたもわざわざ改行をして最後に句読点をつけないねw
最後に読点をつける人がいたら結構な特徴になるだろうか
でも
>>91 はせっせとソース上げてるから
>>92 よりしっかりしてるよね
95 :
デフォルトの名無しさん :2008/06/19(木) 22:31:01
>>91 まあ一回で九マス十一回で九十九マス調べられるからな
被らないようにすればぎりぎりいける…かも
>>95 爆弾ビンゴの時に周囲が分からないのと、盤面が10*10であるというのがあるですよ。
97 :
:2008/06/19(木) 22:33:31
#include <stdio.h> int main(void) { char str[256], ch; int i, cnt = 0; printf("文字列入力:"); scanf("%s", str); printf("検索文字入力:"); scanf(" %c", &ch); for(i=0; str[i]; i++) if(str[i]==ch) cnt++; printf("検索文字は%d個見つかりました。\n", cnt); return 0; }
99 :
デフォルトの名無しさん :2008/06/19(木) 22:39:37
>>96 >>71 のやり方でいいのでは?
あとビンゴの時は座標の数開いたら次行って宝がまだ残ってなら周囲探すとか だめ?
100 :
:2008/06/19(木) 22:46:12
>>98 ありがとうございます。
検索文字のカウントをmainではなく別関数でやってほしいのですが・・・
大学もそろそろ前期が終わる時期なんですね。
#include <stdio.h> int count(char *p, int ch) { int cnt = 0; while(*p) { if(*p==ch) cnt++; p++; } return cnt; } int main(void) { char str[256], ch; printf("文字列入力:"); scanf("%s", str); printf("検索文字入力:"); scanf(" %c", &ch); printf("検索文字は%d個見つかりました。\n", count(str, ch)); return 0; }
104 :
デフォルトの名無しさん :2008/06/19(木) 23:01:42
[1] 授業単元:課題研究(自由研究みたいなもの) [2] 問題文(含コード&リンク):C言語で自動車エンジンの走行距離と走行時間による熱効率と燃費の算出 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: Microsoft Visual Studio でいいのか? [3.3] 言語:C言語 [4] 期限:2008/6/27 [5] その他の制限:Cの基本は一通り習ったはず こんな感じなんですがお願いできますかね?
105 :
:2008/06/19(木) 23:04:14
102>> ありがとうございました。 感謝してます。
出来たけど、うpは来週水曜日くらいしとこっと。
>>91 自分でやったら30手以内でできるね
自分の思考をコンピュータにやらせるのはめんどくさそうだが
前スレの1000は知識遅れか?少なくとも、このスレ的にも そしてどの環境、プログラマでも共通して gets はご法度なのに 擁護して、また憶測で勝手につじつまを合わせようと都合よく解釈して 授業でやるかもしれないよ?なんてこのスレ的にはどうでも良いことを 言い掛かってきて、何が楽しいんだ?
104です。 あとどのような情報があればいいですか? 教授から出された課題がこれだけで課題に関してはこれ以上は俺自身もどうしようもない・・・。 あとVisual Studioのバージョンはおそらく2007年のもの。 特に制限はされてないのでCでてきることなら好きなようにやってもらえれば・・・。 課題のイメージとしてはガソリンエンジン車とディーゼルエンジン車をそれぞれ走らせ続けて適当な距離と時間を刻んでデータを取って保存できるようにしてもらえれば・・・。 グラフも作って出せとか言っていたからな、あの教授。
111 :
86 :2008/06/19(木) 23:30:04
何とかなりました。ありがとうございました
>>110 入力されるものは何?
出力すべきものは何?
113 :
104 :2008/06/19(木) 23:54:09
出力されるべきはエンジンの熱効率と燃費。 入力するのはエンジンの出力と単位時間に消費される燃料の重さ。 走行時間と走行距離はループで回す方向で。 上記両方をループで回すのはきついかもしれんのでどちらか固定してもらってもおkかと
>>99 マインスイーパ的な、なので、ビンゴの時はそのマスの周囲8マスにある
宝の数は不明かと。
もうちょっと込み入った何かをやらないと手数が足りないのではないかな。
…と見せかけて今までので実現できるならごめん。
>>109 あんたもしつこいね。getsがよくないのは後から知ればいい。
それよりもくみ上げる力をつけることのほうが優先だっていってんの。
まず言語になれること。そこからやっていいこと悪いことを知ればいい。
日本語を書くときに「の」の連続はよくないよ、ということを知ったのは
「の」の連続をしてしまうくらいには日本語を知ったあとだろう?
ご法度であることを次の授業で云々と言っている人は他の人だからパス。
>>50 の並べ替えの部分がよくわからないんだが、どういう風にやればいいんだ?
>>116 リストに追加する際、それらしいところに入れてあげれば勝手にソートされる
大きい順なので、たとえば、
3 が既にあるときに1を追加する場合は3の後ろにつなげる。
さらに2を追加する時は3と1の間にいれる。
>>51 >>52 C++じゃないとダメなのでnewに変えたのですがエラーが発生します
恐らく
>>52 さんのは試したものの、Cなのでダメなのでしょうが
>>118 何がダメなのか知らないが、mallocでキャストするのは実にC++っぽい行為だぞ
> C++っぽい それCですから、mallocでキャスト
Cはキャスト必要無いだろ
>>121 あれ?蛇足って言ったけど、蛇足じゃないと指摘されたのに
まだ主張しますか?そんなにキャストしてもらえることを
期待しているなら、お前は絶対に今後はキャスツすんなよ
型変換は明確なCの規格。 一人わかってないバカがファビョってるだけ。
キャストしてはいけない、ならギャーギャー言ってもいいけど してもしなくてもいいんだからどっちでもいいじゃん
>>124 キャストしなくてもいいところに、キャストしろってギャーギャー言ってるアホがいるんだが。
C++はmalloc非推奨ってことで終了。
それよりも
>>23 が本当にC++の宿題なのかどうかが気になるんだが
>>123 っと、キャストの意味を知らない素人が申しております
>>94 言動がキモイ・・・言い返し方もキモイ・・・だから一言居士はきめぇって
わざわざ改行?お前の真似をしてやったんだよ、皮肉だよ、気づけよ
構ってチャンw
>>91 の分かりやすい特徴
ズルなしで出来るか、ボケェ < 何か相手に意見するとき、
勢いづいて罵倒レスをつける癖がついてしまっている
> 自分のプレイの平均を出してみろ
命令口調。押し付けるタイプ。
C研究
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6935.txt [3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
Microsoft Visual Studio 2008
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C++
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
6月21日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
スルーされたのでもう一度書きます。
お願いします。
>>133 彼に反論すると漏れなく同一人物認定されます。
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):() 浮動小数点実数の文字列表現形式は以下のどれかである。 (1) 文字'0'-'9'だけの並び (2) (1)の前に'+','-'を高々1個付けたもの (3) (1)の前に'.'を付けたもの (4) (2)の直後に(3)が続くもの (5) (2)または (3) または(4) の後ろに'e'または'E'が続き(2)が続くもの コンソールから与えた文字列がこの形式になっているかどうかに 応じてYES(なっている場合)あるいはNO(いない場合)を出力 するプログラムを作れ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 6/20 午後17:00 [5] その他の制限: よろしくです。m(_)m
[1] 授業単元: プログラミング演習基礎 [2] 問題文(含コード&リンク):成績データを処理するために実験用データを,乱数により生成するプログラムを作成せよ. ただし,成績データは 学生番号,英語,数学,物理,化学,国語,社会 の6科目の得点を1行毎に学生番号毎に並んでいるものとする.得点は0点?100点の範囲に収まっている必要がある. また,学生番号が1001番から9999番まで存在するとする.実験用データは全ての人数について作成する必要がないので, コマンドライン引数から作成するデータ数を与え,その人数のデータを,同じくコマンドラインから与える ファイル名のファイルに出力すること(標準出力を使わないこと). [3] 環境 [3.1] OS: Windows/Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 6/20 23:00
>>136 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char **argv)
{
int i, j, num;
FILE *fp;
if(argc < 3) return 0;
num = atoi(argv[1]);
if(num < 1 || 9000 <= num) return 0;
if((fp=fopen(argv[2], "w"))==NULL) return 0;
for(i=1; i<=num; i++) {
fprintf(fp, "%d", 1000 + i);
for(j=0; j<6; j++) fprintf(fp, ",%d", rand() % 101);
fputc('\n', fp);
}
fclose(fp);
return 0;
}
>>79 >>80 明後日ってことは明日までまだ時間があるね。
よーーし、パパ、ちょっとがんばっちゃうぞぉ〜。
とりあえず、追加は出来たが、そのほかもやってみたいんで
それらも含めて出来たらうpしまつ。
>>139 構造体というものがよくわからないので配列で作ってもらえないですか?
と、言われるかと思うとしびれるよねw
気にせず満足いくものを作ってみるといいお
[1] 授業単元:通信ソフトウェア
[2] 問題文(含コード&リンク):HTTPサーバを実装する.マルチスレッドによる複数クライアントへの対応,GETとHEADの実装、Keep-alive,チャンクの実装をする.
[3] 環境
[3.1] OS:Windows XP/Vista
[3.2] コンパイラ名とバージョン:VC 8.0/VC 9.0
[3.3] 言語:どちらでも可
[4] 期限:6月23日 23:59
[5] その他の制限:特になし
自分で一応作ってみたのですが、どうもうまく動かないのでよろしくお願いします。
また、Keep-alive,チャンクの実装がよくわかりません。
自分で作ったのを置いておきます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6986.zip
[1]CとC++ [2]テキストサウンドノベルを作成する事。 キー入力でメッセージを表示し、途中で選択肢を含める。(最大3つまで) 画面をスクロールさせることは禁止。ページ切り替えは、画面全消去で対処する事。 テキスト行数は、最低50行から最大100行までとする。 画面全消去方法は、先生に聞くこと。 #include"stdlib.h" system("CLS"); この時に画面すべて消せる
144 :
104 :2008/06/20(金) 13:12:08
とりあえずゴチャゴチャ付け加えちゃったんでもう一回まとめて・・・。 [1] 授業単元:) [2] 問題文(含コード&リンク):C言語で自動車エンジンの走行距離と走行時間による熱効率と燃費の算出 (エンジンのパワーと単位時間に消費される燃料の重さを入力して走行距離と時間に応じた熱効率を算出する。燃費は熱効率と逆数の関係にあるのでそこから求められる。) [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: Microsoft Visual Studio 2007 [3.3] 言語:C [4] 期限:2008/6/27 [5] その他の制限:課題に対する制限は特になし。 これでお分かり頂けるでしょうか?
145 :
135 :2008/06/20(金) 14:53:43
>>140 あ、ありがとうございます。
内容は全然わからなかったのですが、取り敢えずコンパイルしてみました。
概ね動作しました。何故か前回正常にOKが返った値(4.39183e32)
がNGと返ってくることがあったような感じです。入力ミスなのかも
しれません。
ネット上のソースを写して提出したら単位認定しないという
結構厳しい授業なので、参考にさせて頂いて、自分で書き直して
みます。
>>145 >ネット上のソースを写して提出したら単位認定しない
このスレで言うのも何だがあたりまえだろ
全然厳しくないぞ
出題者も当然このスレはチェックしています 俺の出した課題が出てると喜んでいるでしょう
[1] 授業単元: プログラミング演習基礎
[2] 問題文(含コード&リンク):
複数の成績データを1度に読み込んで,それぞれのファイルに含まれる学生数と,
各科目の平均点を求めて,ファイル名と共に出力するプログラムを作成せよ.
成績ファイルは,
学生番号(整数),英語(整数),数学(整数),物理(整数)
の得点が一行に記載されている.ただし,学生番号順には並んでないし,抜けがあるかもしれないものとする.
学生番号は整数のみ,0〜番などは考慮しなくてよい
[3] 環境
[3.1] OS: Windows/Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 6/20 23:00
[5]
>>137 ありがとう、これもどなたかお願いします\(^o^)/
150 :
149 :2008/06/20(金) 16:42:55
書き忘れ・・・ argvとかを使って 例 % ex016 r901-1.dat r901-2.dat r903.dat r901-1.dat: 26 English: 82.23 Mathematics: 90.21 Physics: 79.93 r901-1.dat: 97 English: 42.41 Mathematics: 92.34 Physics: 89.93 r901-1.dat: 97 English: 32.23 Mathematics: 91.01 Physics: 99.93 となる感じでお願いします(数値は適当
151 :
デフォルトの名無しさん :2008/06/20(金) 17:50:55
[1] 授業単元:Cプログラミング [2] 問題文(含コード&リンク) 下に載せてあるプログラムを応用して以下のプログラムを作ってください。 (1)画像をモノクロ化するプログラム (2)画像の明暗を変化させるプログラム [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2003 [3.3] 言語: C [4] 期限: 6月22日までにお願いします [5] その他の制限:printfの変わりにfprintf文を使ってください。 #include "plite.h" int main(int argc,char **argv) { RGB in; RGB out; int i,j; ReadRGB(&in,argv[1]); MemRGB(&out,in.row,in.col); for(i=0;i<out.row;i++){ for(j=0;j<out.col;j++){ out.R[i][j]=in.R[i][j]; out.G[i][j]=in.G[i][j]; out.B[i][j]=in.B[i][j]; } } writeRGB(&out); return0; }
よろしくお願いします 総当たり以外に方法ありますか? [1] 授業単元:アルゴリズムとデータ構造 [2] 問題文(含コード&リンク):() それぞれ空き容量が異なる(同じでも良い) C, D, E, F ドライブのHDDに ファイル a, b, c, d が全て収まりきるか調べ、収まる場合はその入れ方を 一つ表示しなさい。 例) (C, D, E, F) = (1GB, 6GB, 4GB, 3GB) (a, b, c, d) = (3GB, 2GB, 2GB, 5GB) の場合、C:* D:d E:b,c F:a [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC2003 [3.3] 言語:どちらでも可
ナップサック問題の亜種だな 演習でやるなら動的計画法でも使えばいい。
[1] 授業単元:情報処理 [2] 問題文(含コード&リンク):() 文字列を逆向きにして標準出力に出力するvoid strRev(char *)を定義し、 この関数を用いて標準入力の各行を逆向きにして一行ずつ表示するプログラムを作成しなさい [3] 環境 [3.1] OS: Linux [3.2] コンパイラ: gcc [3.3] 言語: C [4] 期限: 6/23 [5] その他の制限: 関数の戻り値や引数を変更しない 出力例で英語の文章が数行書かれたsample.txtを ./a.out < sample.txt と入力された場合、それぞれの行が反転して出力されているのですが、これはどうすればいいのでしょうか? 最初の1行だけを反転して出力ならできるのですが・・・。
155 :
50 :2008/06/20(金) 18:59:17
なんとか頼みこんで期限を数時間遅らせて貰い、 自分でも調べたりしてるのですが全く理解ができません。 過去ログ探してみるも同じのはあったけどソースが消されていたり。 何とかならないでしょうか。 しつこいかもですがどうか御願いします。
#include <iostream> #include <vector> #include <algorithm> typedef struct lt{ double value; lt *left; lt *right; }o_list; void main(){ using namespace std; vector<double> vec; double tmp; for(int k=0;k<5;k++) { cin >> tmp; vec.push_back(tmp); } sort(vec.begin(),vec.end()); o_list *old=NULL; for(int v=0;v<5;v++) { o_list *t =(o_list *)malloc(sizeof(o_list)); t->left=old; t->right=NULL; t->value=vec[v]; old=t; } do { cout << old->value << endl; old=old->left; }while(old!=NULL); }
>>79 > 名前、年齢、メアド
> ソート(No.)、
えっ!?
>>158 主キーというか登録順でいいんじゃない?
>>157 これじゃmalloc使ってないよ。よし。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef struct lt{
double value;
lt *left;
lt *right;
}o_list;
void main(){
vector<double> vec;
double tmp;
int k, v;
for( k=0; k<5; k++ ) {
cout << k+1 << " of 5 : "; // cout
cin >> tmp; // cin
vec.push_back(tmp);
}
sort(vec.begin(), vec.end());
for( v=0; v<5; v++ ) {
cout << vec[v] << endl; // cout
}
}
>>50 C言語指定だと勝手に解釈してみた
#include<stdio.h>
#include<stdlib.h>
typedef struct tag_list_t{
int value;
struct tag_list_t *next;
}list_t;
list_t *list_add(list_t *list, int value){
list_t *member, *member_new, *prev;
member_new=malloc(sizeof(list_t));
member_new->value=value;
member_new->next=NULL;
for(member=list,prev=NULL;member;prev=member,member=member->next)
if(member->value > value) break;
if(!prev){
member_new->next=list;
return member_new;
}
member_new->next=prev->next;
prev->next=member_new;
return list;
}
void list_print(list_t *list){
for(;list;list=list->next) printf("%d\n", list->value);
}
int main(void){
list_t *list=NULL;
int value;
while(scanf("%d", &value)==1) list=list_add(list, value);
list_print(list);
return 0;
}
>>154 こんなんでいいのかな?
#include <stdio.h>
void strRev(char *str) {
if(*str!='\0') strRev(str+1);
putchar(*str);
}
int main(void) {
int i;
char buf[64],*str[128];
for(i=0;fgets(buf,sizeof(buf),stdin)!=NULL;i++) {
*(str+i)=buf;
strRev(*str);
}
return 0;
}
163 :
デフォルトの名無しさん :2008/06/20(金) 20:56:48
>>162 ありがとうございます。
ですが、コンパイルしたファイルを単体で実行するとフプログラムが終了しないのですが・・・。
これはどうしようもないのでしょうか?
繰り返し処理についてなんですが
169 :
50 :2008/06/20(金) 21:27:20
Cなの?C++なの?という疑問をすべてスルーして提出まで
やってのけた
>>50 はある意味大物か
>>162 >*(str+i)=buf;
まさかこれで文字列がコピーされてるとか思ってる?
172 :
50 :2008/06/20(金) 21:29:08
何か同じの2回言ってる orz 期限のとかも間違えてたし…。 すみません、次からはちょっと落ち着いて書き込もうと思います。
>>171 少なくともそれを期待したコードにはなってないから分かってると思うよ
>>173 そうか?
str[i]に毎回同じbuffのアドレスいれてるからわかってないと思うんだが。
一見簡単そうにみえるようにちょちょっとやるのがここの醍醐味 printf とか scanf とか再帰とかw
177 :
152 :2008/06/20(金) 21:44:26
>>174 しかも毎回*(str+i)にbuffを入れておきながら、関数に渡してるのは*strという事実
意味ねーw
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):()
課題@
「騎士の巡回」の解を求めるプログラムを用いて、チェス盤の1辺Nが5と6の場合について、経路の数を求めよ。(スタート地点は(0,0)とする。)
尚出力は、解の数と、時間計算量の評価回数、それに実行時間を示すこと。
課題A
「騎士の周遊」とは、「騎士の巡回」に加えて、経路の最後のマスからスタート地点に1手で戻れる経路を求める問題である。チェス盤の1辺Nが5と6の場合について、この条件を満たす経路の数を求めよ。
尚出力は、解の数と、時間計算量の評価回数、それに実行時間を示すこと。
課題B
下記に示すチェス盤では、移動できる部分をoで、移動できない部分をxで示している。このようなチェス盤に対する 「騎士の周遊」の解の総数を求める問題に対して、時間計算量を見積もった上で、プログラムを実行
し、解の総数と時間計算量(評価回数)を求めよ。
以下、授業中に板書された課題@のソートと、課題Bのチェス盤を載せておきます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6988.txt http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6989.txt [3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:6月23日(月)まで
[5] その他の制限:
課題@の上のソートじゃなくても全然構わないです。
たくさんありますが・・・よろしくお願いしますm(__)m
180 :
179 :2008/06/20(金) 23:51:43
改行するの忘れました・・・ 読みにくくて申しわけないですorz
181 :
デフォルトの名無しさん :2008/06/20(金) 23:53:25
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 文字列(英小文字)を入力し、その文字列を任意の数(1〜25)だけずらして、 文字列を暗号化する関数encryptを作成せよ。 (注)1文字ずらして暗号化する場合 「a」→「b」、「b」→「c」、「z」→「a」 という変換をして暗号化する <実行例> ------英字の暗号化------ 文字列を入力してください(英小文字) hello 何文字ずらしますか?(1〜25) 1 ------暗号化された文字列----- ifmmp [3] 環境 [3.1] OS: Linux [3.3] 言語: C [5] その他の制限: ポインタ使用可です。 よろしくお願いします。
#include <stdio.h> void encrypt(char *str, int n) { while(*str) { *str = 'a' + (*str - 'a' + n) % 26; str++; } } int main(void) { char str[256]; int n; puts("------英字の暗号化------"); puts("文字列を入力してください(英小文字)"); scanf("%s", str); puts("何文字ずらしますか?(1〜25)"); scanf("%d", &n); encrypt(str, n); puts("------暗号化された文字列-----"); puts(str); return 0; }
183 :
デフォルトの名無しさん :2008/06/21(土) 00:13:20
>>182 while(*str) {
*str = 'a' + (*str - 'a' + n) % 26;
str++;
ここを少し説明していただけませんか?
単にchar配列をn文字前に進めてるだけだろ
>>185 double mean(int a[] , int length)
{
int i;
double ave=0.0;
for(i=0;i<length;i++)
ave+=a[i];
return ave / (double)length;/*キャストいらないかもしれないけど明示するために一応付けとく*/
}
>>158 ソートは出題者のほうもよくわかってない感じなんで、とりあえず追加だけお願いします。
>>187 ういっ、もう少しでうpするでおじゃる●のクソースが見られるでおじゃるよ
クソースとへりくだりつつも、内心、「作品」だと思っている ところがイタい
>>183 a〜zまでは文字コードが昇順に並んでいることと、a〜zまでは26文字あること。
それくらいしか気になる点はないと思う。
>>191 何をおっしゃるか、これは紛れもなく初心者向けにレベルを落とした
クソースでおじゃっ
どうみても初心者向けとは思えないプロ教育を受けた人のコード である件について
ねーよw
えぇ〜〜、思いつきで書いたクソースゆえ、しかも プロとしてコードを書いてないゆえ、クソースということで 我慢してもらっているでおじゃる。上には上がいるゆえ、 まだまだ精進するでごじゃるよ。
198 :
デフォルトの名無しさん :2008/06/21(土) 05:52:41
実行してみた?
あー、環境書いてなかった。 gccでやってるからbccだと動かないかもしれない。
環境関係なく無限ループになる可能性があるんだが。
うむ。単純ミスorz 今のままだと重複したら無限ループするので makerandomstrのi--;の次の行にc=0;入れてください。
ソースを上げる時は、せめて テスト済みなのか、 コンパイル済み(文法エラー無し) 未コンパイルなのか、コメントに書きませんか?
宿題を片付けてほしい側 ちゃんと動くソースコードがほしい 題意を満たしていてほしい 何も出来ない初心者なので全部やってください>< ↑ このギャップは埋められない ↓ 宿題を片付ける側 面白そうだからやってみた (^ω^ がんばったお
>>205 コンパイル通らなきゃソース上げないと思うんだが。
未コンパイルの可能性があるのはレスに直接ソースを書いてる場合位のような。
>>205 が質問側なのか回答側なのか知らないけど
回答してる側としてはそこまで要求されてもなあ、と思う。
質問者が単位落としたとしてもこっちには関係ないことだし。
208 :
199 :2008/06/21(土) 10:58:21
>>200 ありがとうございます!
えーとbccでコンパイルしてみましたがヒットもブロウも0になってしまいます・・
210 :
デフォルトの名無しさん :2008/06/21(土) 11:38:39
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク)
>>151 です。あと2問残ってたのでこちらもお願いします
下に載せてあるプログラムを応用して以下のプログラムを作ってください。
(3)画像の分割・結合のプログラム。
(各画像の左半分と右半分を取り出し一方の画像の左半分と他方の右半分を結合した画像を出力)
(4)画像の切り抜きをするプログラム
(カラー画像に任意の領域を指定して、指定部分の画像のみを得る)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2003
[3.3] 言語: C
[4] 期限: 6月22日までにお願いします
[5] その他の制限:printfの変わりにfprintf文を使ってください。
#include "plite.h"
int main(int argc,char **argv)
{
RGB in;
RGB out;
int i,j;
ReadRGB(&in,argv[1]);
MemRGB(&out,in.row,in.col);
for(i=0;i<out.row;i++){
for(j=0;j<out.col;j++){
out.R[i][j]=in.R[i][j];
out.G[i][j]=in.G[i][j];
out.B[i][j]=in.B[i][j];
}
}
writeRGB(&out);
return0;
}
211 :
デフォルトの名無しさん :2008/06/21(土) 11:48:14
山形大学ですねわかります
>>205 なんか不具合があればここで報告しなよ。
せっかくアップしてもノーレスなら対処しようが無い。
あとレスがあれば回答者のモチベーションも上がると思うが。
質問者のモティベーションのほうが大切なような気がしないでも ないのだが...
ここに丸投げする奴にやる気があるとでも?
まぁ軽く藁をも掴む気概でいるんだろ
なんかあれだなここで丸投げしてる奴が、実務の一次請けとか発注元の卵だったりすると最悪だな。 丸投げの予行演習といったところか(w
>>216 そういうときは、クソースで返すでおじゃるよ
それが命取りだった
220 :
219 :2008/06/21(土) 14:28:21
>>219 の訂正
マスタが含む文字を複数入力するとバグる orz
バイトいってくるわ
こんな課題でそんな糞コード出されても困る。
[1] Cプログラミング演習 [2] 1.登録番号"int no"と名前"cahr *name"と年齢"int age"を含む構造体person型の 配列を定義し初期化せよ。なお、最後のデータの名前にはNULLを入れておく。 登録番号は入力順に1,2,3,4,5とする。 配列の先頭アドレスを示す構造体person型のポインタを引数として与え、 データを年齢順に並び替える関数を作成せよ。 2.登録番号(int no)と名前(char *name)と年齢(int age)を含む構造体person型のポインタ変数を宣言し、 登録人数分だけの動的メモリを確保せよ。 そして、データをファイルから入力せよ。 ファイルの形式は、先頭に登録する人数とし、そのあとに人数分のデータを登録番号、 名前、年齢の順に書いていく。(下の例を参照) 登録番号は入力順に1,2,3,4,5…とする。 そして、入力した全員のデータを表示せよ。 (ファイルの例) 3 1 田中 20 2 大田 40 3 井上 35 [3] 環境 [3.1] windows [3.2] Microsoft Visual Studio 2003 [3.3] C [4] 6/23まで [5] とくになし 初心者なので、出来れば分かりやすいコードでお願いします。 お手数おかけしまして、申し訳ないです。 宜しく、お願いします。
>>219 ありがとうございます。
そこの部分考えてみます( ^ω^)
>>226 int ts;
for(i=0;i<10;i++){
for(int i=1;i<10;i++)
{
if(hito[i-1].score<hito[i].score){
ts=hito[i];
hito[i]=hito[i-1];
hito[i-1]=ts;
}
}
}
>>226 for(i=0;i<10;i++){
for(j=i+1;j<10;j++){
if(hito[i].score < hito[j].score){
hito[10] = hito[i];
hito[i] = hito[j];
hito[j] = hito[10];
}
}
}
229 :
デフォルトの名無しさん :2008/06/21(土) 18:19:30
[1] 授業単元: ドイツ言語入門 [2] 問題文:次に打ち込まれた文字列に対して適切な文章をそれぞれ返すプログラムをハッシュテーブルを用い、ドイツ言語で書きなさい。"Guten tag","Sie du Japaner?","unko" [3] 環境 家賃三万円のそれなりの環境 [3.1] OS: VISTA [3.2] コンパイラ名とバージョン:コンパイラとは何ですか? [3.3] 言語:ドイツ言語 [4] 期限:私の気が向くまで [5] その他の制限:門限が7時です
230 :
デフォルトの名無しさん :2008/06/21(土) 18:20:17
反応がない見捨てられたようだ
231 :
デフォルトの名無しさん :2008/06/21(土) 18:20:43
ここの住人は冷たい・・・
232 :
デフォルトの名無しさん :2008/06/21(土) 18:21:06
VIPなら一分と待たずにレスが返ってくるのに・・・
233 :
デフォルトの名無しさん :2008/06/21(土) 18:21:37
やはりプログラマーの心は荒んでいるという噂は本当だったんですね
もう期限切れか
>>226 ninzuu = i;
for(i=0;i<ninzuu-1;i++){
for(j=i+1;j<ninzuu;j++){
if(hito[i].score < hito[j].score){
ts = hito[i];
hito[i] = hito[j];
hito[j] = ts;
}
}
}
for(i=0;i<ninzuu;i++)
>>194 どうも素晴らしいソースありがとうございました。
余裕があればでいいので、削除と編集も作っていただきたいです。
>>240 ありがとうございました。ちなみにここって、自分の作ったソースのどこが悪いかって見てもらえるんですか?
すいません
>>176 です。
提出期限を完全に間違えてました。。
6/23
夕方6です。
いずれにせよ焦ってます;;
どなたか目を通してくれるとありがたいです;;
せ、せめてリアクションがほしかった・・・orz
248 :
デフォルトの名無しさん :2008/06/21(土) 22:31:49
【本日VIP投票日ですた】●第3回全板人気トナメ●【反省会会場】
http://yutori.2ch.net/test/read.cgi/news4vip/1214054829/ vipを助けてくれ!!!!!!!!
負けそうだ!!!!!
シベリア超特急に負けそうなんだ!!!!!!!!!!!
俺 達 の v i p が 無 く な る ! ! ! ! ! ! ! !
ニュー速の本部を荒らして俺らに投票してくれ!!!!!!!!
P C ケ ー タ イ 友 達 家 族 を フ ル 動 員 し て
コードをとってきてくれ!!!!!!!!!!!!!
ここで勝ったら二回戦もよろしく!!!!!!!!!!!
つまんねー話してないで協力するんだ!!!!!!!!!!!!!!!!
2chが変わってしまうぞ!!!!!!!!!!!!!!
助けてくれ!!!!!!!!!!!
まだまだ俺たちはおわれねぇ!!!!!!!!!!!!!!!!!!
>>176 >>243 問題文が悪い、そんなんじゃ誰も手を付けない
結局、逆ポーランド記法と通常の計算を数値入力でやれって事か?
やって欲しいなら、具体例をだしなよ
>>176 です。
すいません。
問題文をそのまま載せたんですが
要点をまとめるべきでした。
つまり
>>249 さんの通りです。
例としては
入力数式
25.18,#,+,8,*,6,7,10,+,*,-,8,/
に対する答えは -5
となっています。
>>250 余計わからん
25.18,#,+,8,*,6,7,10,+,*,-,8,/
が-5になる流れを書いてくれ
まあ、この調子じゃ期限内に
>>176 が行なわれる事はないだろう
ヒントに3つの数字を3桁の数値に変換する関数とかあるのに、いきなり 25.18 とか…
本人が問題を理解してないか、問題文以外に課題の仕様があるのを正確に伝えて無いかがオチかと
まあ恐らく25,18の書き間違えだろう それならば-5になる
25,18 だとしても逆ポーランド記法なら-6ではあるまいか…
スマン、桁落ちさせるのか、四捨五入だと思ってた…
”書き間違え”は”書き間違い”の書き間違えだろう
25,18,#,+,8,*,6,7,10,+,*,-,8,/ 25 25,18 25,18,# 25,-18 25,-18,+ 7 7,8,* 56 56,6 56,6,7 56,6,7,10 56,6,7,10,+ 56,6,17 56,6,17,* 56,102 56,102,- -46,8 -46,8,/ -5.75 こんな感じになった
>>148 そういう発言をしてるあなたはどこにお住まいの方ですか?
あなたの出した課題が載ってたとか?
気にすんなよ 最悪バレても単位が出ないだけだろ もっとどうどうとしろ
>>247 お願いした通り作って下さってありがとうございました。
質問なんですが16行目のtypedefってなんの処理なんですか?
何せまだC初めて3ヶ月しか経ってなくて…。
> ・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください
267 :
179 :2008/06/22(日) 15:09:28
269 :
262 :2008/06/22(日) 15:47:19
int main(void)
{
int i; /* ループカウンタ */
unsigned char chTable[256]; /* テーブル領域 */
/* テーブル初期化 */
for(i = 0; i < 256; i++)
{
/* このような式でdata.binのデータ内容と同じデータを生成させる */
chTable[i] = (unsigned char)((i % 2) ? 255 - (i + 1) / 2 : (i + 1) / 2);
}
return 0;
}
>>262 の課題の算出方法に関する縛りですが、
上記ループ内の様な式で算出する事が条件です。
>>269 それは、読めば分かるから。余計な茶々はいれないで。
縛りについて、ほかには? S
271 :
262 :2008/06/22(日) 16:22:16
>>270 すみません。一応スレ側にも書いておこうかと思って。
他の縛りは特にないです。
>>179 5x5, 6x6のそれぞれの解の個数わかる?
あってるのかどうかわからないから
アップできない。
ちなみにまだ課題1だけしか・・・
>>262 for(i=0; i<256; i++) chTable[i] = (int)(16-i/8.0) * (int)(16-i/8.0);
274 :
272 :2008/06/22(日) 17:23:34
あ、C言語じゃん C++で作ってしまった もういいや
>>273 見た瞬間、間違ってるかと…
最初の値は0じゃね
見た瞬間とか言っていいレベルじゃないから、実行してから口から糞たれろ。
>>276 おまいさん、バイナリエディタすら持ってないのか…?
256をunsigned char に代入したらどうなると思ってんだよ、このボケが
0xFFです
(int)(16-0/8.0) * (int)(16-0/8.0) これが256になるのか?
にはならない
16 * 16 が256にならないでどうすんだよw
284 :
270 :2008/06/22(日) 17:41:55
unsigned char j; unsigned char k; for(i = 0; i < 256; i++) { if(i==0) {j=33; k=0;} if(i==128) {j=253; k=1;} /* このような式でdata.binのデータ内容と同じデータを生成させる */ if(i<128){ chTable[i]=k; if((i&7)==0) {j-=2; k-=j;} } else{ if((i&7)==0) {j+=2; k+=j;} chTable[i]=k; } if((i&15)==0) printf("\n%03X ", i); printf("%02X ", chTable[i]); } for(i = 0; i < 256; i++) { (i==0) ? j=33, k=0 : 0; (i==128) ? j=253, k=1 : 0; /* このような式でdata.binのデータ内容と同じデータを生成させる */ (i<128) ? ( chTable[i]=k, ((i&7)==0 ? j-=2, k-=j : 0) ) : ( ((i&7)==0 ? j+=2, k+=j : 0), chTable[i]=k ) ; (i&15)==0 ? printf("\n%03X ", i) : 0; printf("%02X ", chTable[i]); }
270の登場で、更に盛り上がってまいりましたw
(i==0) ? 0 : (int)(16-i/8.0) * (int)(16-i/8.0); こうだろw 片落ち代入じゃ、同じデータを作っても式があってないって事だろ? 違うのか…
盛り上がるもなにも、猿以下のアホが湧いてるだけだろ。
[1] 授業単元: 実験
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7010.txt 単振り子の方程式の近似解をホイン法によって求めるプログラム
ルンゲ・クッタ法のプログラムを資料として、オイラー法のプログラムは完成し、出力の値も問題ありませんでした。
次にホイン法のプログラムを作り、実行したところ、
本来ならば(π/4)cos(x)のグラフと近くなるはずの解の値が途中から一次方程式のようになってしまいます
[3] 環境
[3.1] OS: LinuxまたはWindows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 6月23日まで
[5] その他の制限:
できれば自分の作ったプログラムの間違っている箇所を修正して作ってくださると助かります。
今回の課題はプログラムリストの提出は求められていないので、多少動作が分かりにくくても問題はないです。
最後に解の値を出力しているのは、そのデータをgnuplotでプロットするからです。
280は(int)(16-0/8.0) * (int)(16-0/8.0)がいくつになると思ったのか答えてくれ
0x00000100です
ID無しのスレでは何事も諸行無常なり
-と/の優先順位がわからないって小学生以下だなw
顔真っ赤な人がいると聞いて。
8.0/0なら落ちます
どこまで釣りでどこまで本気かわからないスレだw
270が可哀相だよ 合ってるよスゲーよ
この流れはwwwwwwwwwww
>>294 void main(){0/8.0;}
8x8のナイトの旅がなかなか解き終わらない(´・ω・`) やっぱり総当り厳しいのかな・・・
[1] 授業単元:暇潰し [2] 問題文(含コード&リンク): 平面上にn個の点について、それぞれ他の全ての点に対し2点を結ぶ辺を作り、その重みをユークリッドノルムとして計算し、昇順にソートする。 nは10万以上のため、全ての重みをメモリ上で保持してソートするのは現実的でない。現実の計算機上で高速に計算しソートする方法を示せ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: g++ [3.3] 言語: C++ [4] 期限: (無期限] [5] その他の制限: なし 前スレで回答がもらえなかったので再掲載。
>>288 h*の位置がおかしくねーか?
h*(fk1[i] + fk2[i])/2だと思うんだが。
>>301 nが10万程度の場合ならば、主記憶が128GBの計算機を用いれば簡単。
S社の製品の場合、最も廉価なものであれば200万円程度で購入できる。
>>301 データをディスクに書き込んで、ディスク上でマージソート
再帰が深くなって断片がメモリに載るサイズになったら、好きなアルゴリズムを使ってメモリ上でソート
307 :
デフォルトの名無しさん :2008/06/22(日) 19:17:03
どうでもいいことだが
>>301 > 平面上にn個の点について、それぞれ他の全ての点に対し2点を結ぶ辺を作り、その重みをユークリッドノルムとして計算し、昇順にソートする。
# 平面上にn個の点について 〜中略〜 昇順にソートする。
なの?
それとも辺をソートするの?><;;
[1] 授業単元:C言語プログラミング [2] 問題文(含コード&リンク) 10進数の正の整数を入力し、2進数に変換して表示せよ 可能ならば、正の実数も変換できるものを作成せよ [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限:明日まで よろしくお願いします
311 :
262 :2008/06/22(日) 19:43:08
様々な解答ありがとうございます 上記の解答を元に自分なりに色々思考を 凝らしていきたいと思います 本当にありがとうございました
>>310 #include <stdio.h>
int main(void)
{
unsigned int n, i = 1 << sizeof(unsigned int) * 8 - 1;
scanf("%d", &n);
while((i&n)==0) i>>=1;
while(i) {
putchar(n & i ? '1' : '0');
i >>= 1;
}
return 0;
}
>>288 func(t, x, f) /*f(t, x)を定義*/ double t, x[], f[];{
f[0] = x[1]; f[1] = - (G/L0)*sin(x[0]);
}
を使わず
func(t,x,f,h)double t,x[],f[],h;{
f[0]=x[1]*h;f[1]=-(G/L0)*sin(x[0])*h;
}
として
for ( n = 0; n < n_step; n++ ) {
t[n+1] = T_s + (n+1)*h;
func(t[n], x[n], dfk1,h); /*dfk1=h* f(t[n], x[n])*/
for( i = 0;i < N_var; i++){
y[i] = x[n][i] + dfk1[i]; /*y[i]:中間変数Xn*/
}
func(t[n+1], y, dfk2,h); /*dfk2=h*f(t[n+1], y)=h*f(t[n+1], Xn)*/
for( i = 0; i < N_var; i++){
x[n+1][i] = x[n][i] + (dfk1[i] +dfk2[i])/2;
/*x[n+1] = x[n] + (fk1 + fk2)/2*/
}
}
>>310 #include <stdio.h>
void f1(int x) {
int y=x/2;
if(y!=0) f1(y);
printf("%d",x%2);
}
void f2(double x) {
int y;
double z=x*2.0;
y=(int)z;
z=z-(double)y;
printf("%d",y);
if(z!=0.0) f2(z);
}
int main(void) {
int i;
double r;
scanf("%lf",&r);
i=(int)r;
r=r-(double)i;
f1(i); putchar('.'); f2(r);
return 0;
}
何様だw
ワロタ
>>263 >>247 に不要なゴミコードが残ってた・・・気づいたら消しておいて。
> printf("p : %p \n",p);
データ追加、コピーの辺り。あと、一番最後に free(list); を忘れてた。
>>264 に説明があるけど、コードの中では
struct p_dataの構造をDATA型として、struct node_listの構造をLIST型
として定義し、変数の宣言のときに、わざわざ struct p_data と書かずに
DATA以下適当に変数を宣言できるようになってる。
>微妙ですがありがとうございます 微妙ですが 微妙ですが 微妙ですが 微妙ですが 微妙ですが 微妙ですが 微妙ですが
>>103 > 俺のプレイ
> もうこれ以上は減らせないw
そうかそうか、何回も何回もやりまくってやりまくってぇ〜
ありがとうございます!!!! 微妙ですが
微妙ですが が、今後のスタンダードかなるほど
このスレで笑ったのは初めてかもしれない
>>317 最近の人間はプログラムの意識が高いんだな…
構造体習って無いから使うな、簡単なコードで、人間と同等以上のAIプログラムを作れって…
と、作った本人が言って見るテスト
キミの周りの学生が、余裕でその課題をこなしてるなら
キミは今居る場所に居つづける事を考え直した方が良いかもよw
揚げ足取りがミイラ取りになってる件
微妙ですが私も揚げ足取りになってしまうかもしれません ><;
[1] 授業単元: Cプログラミング実習 [2] 問題文(含コード&リンク)-------------------- int型の数値データの内部表現を2進数で表示する。 実行に当たっては次のデータを入力して確認せよ。 [1]0 [2]1 [3]-1 [4]32767 [5]-32768 実行例↓ 入力データ:-1 内部表現:1111111111111111 入力データ:32767 内部表現:0111111111111111 ----------------------------------------------- [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: (visual studio 2005 ) [3.3] 言語: (C言語) [4] 期限:25日まで [5] その他の制限: (まだ大してC言語は習ってないので簡単な関数でお願いします)
>>331 なんか、前スレにマイナスにも対応しているものがあった・・・
ちと探してくる
>>331 #include <stdlib.h>
#include <stdio.h>
void main(int argc,char* argv[])
{
int _in = atoi(argv[1]);
int i;
for(i = 0;i < 32;i++)
{
printf("%d",(_in & (0x80000000>>i) )?1:0);
}
printf("\n");
}
数値は引数で入力、エラーチェックはしてない
>>331 #include<stdio.h>
int main( void ){
int i,n;
printf("入力データ:");
scanf("%d",&n);
printf(" 内部表現:");
for(i=0;i<16;++i){
if(n & 1<<15-i) printf("1");
else printf("0");
}
return 0;
}
微妙だな
いや、絶妙だ
>>334 VS2005でWinが対象だから32bitじゃない?
絶妙ですがありがとうございます
まっ、待ってたもう、麻呂の16進数まで対応したクソースを拝むでおじゃるよ もう少し待ってたもう
int i,n; int bit=sizeof(int)*8; //nをキーボードから入力 for(i=bit-1; i>=0; i--) printf("%d", n>>i&1);
346 :
331 :2008/06/22(日) 22:02:29
テキストの問題なんですけど、何ビットとか書いてないんですよ・・・ 多分16ビットでOKだと思います。
Winでint型だと普通は32bitだけどね
普通にsizeof演算子使えよ でも1byteが9bitの環境もあるって聞いたことあるな
テキストってことは16bit時代の参考書をそのまま使ってるんじゃね? あくまで「int型」の内部表現を出力するんであれば32bitが正解だろうなぁ
351 :
350 :2008/06/22(日) 22:14:09
一番最後のcoutではCtrl+Gだったけど、ダメみたいね・・・
352 :
350 :2008/06/22(日) 22:15:29
あら、コピったら生きてた さばら
DWORD WORD BYTE表現でいいだろ
>>301 nが小さいときだけおk
#include<iostream>
#include<algorithm>
#include<cmath>
struct point_t{
double x, y;
};
double calc_distance(const point_t &a, const point_t &b){
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
int main(void){
const int n=1000; // これが小さいときだけ
double *distance=new double[n*(n-1)];
point_t *point=new point_t[n];
long i, j, x=0;
for(i=0;i<n;i++){
point[i].x=rand();
point[i].y=rand();
}
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
distance[x++]=calc_distance(point[i], point[j]);
}
}
std::sort(&distance[0], &distance[x]);
for(i=0;i<x;i++){
std::cout << distance[i] << std::endl;
}
return 0;
}
16進数表示ならこんな漢字かな 実行して無いからわからんが for(i=bit-4; i>=0; i-=4) printf("%c", "0123456789abcdef"[n>>i&15]);
>>350 ちょ、俺のコンパイラ(BCC5..9.3)だと
direction++;で
エラー E2277 chess1.cpp 362: 左辺値が必要
(関数 CAnalyzeTourOfKnight::AnalyzeTourOfKnight(ANALYZETYPE) )
微妙だな
クソースとしては絶妙でおじゃ
まあ出題者がgcc指定してるからgccで通ればよいのか
>>357 >>360 いや
俺もbccなんだけど
そこで落ちる理由はわからん・・・??
俺の環境じゃ落ちないぞ?
それは奇妙だな
C:\Documents and Settings\knight>bcc32 TourOfKnight Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland TourOfKnight.cpp: 警告 W8004 TourOfKnight.cpp 134: 'tempY' に代入した値は使われていない(関数 CAnal yzeTourOfKnight::MoveKnightPosition(int &,int &,DIRECTION) ) 警告 W8004 TourOfKnight.cpp 134: 'tempX' に代入した値は使われていない(関数 CAnal yzeTourOfKnight::MoveKnightPosition(int &,int &,DIRECTION) ) 警告 W8004 TourOfKnight.cpp 309: 'y' に代入した値は使われていない(関数 CAnalyzeT ourOfKnight::KinghtRoundBoard(int,int) ) 警告 W8004 TourOfKnight.cpp 453: 'comparisonNum' に代入した値は使われていない(関 数 main() ) 警告 W8004 TourOfKnight.cpp 452: 'answerNum' に代入した値は使われていない(関数 m ain() ) Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland これだけ
>>361 BCC(今はCodeGearCCだからCCCか)のバージョンは同じ?
5.9.3ってBCB2007の付属品だよ。
フリーで配布されているのは5.5.1。
enum値のインクリメントは許されないのか・・・・
ちなみにVC9のエラーログ c:\documents and settings\********\my documents\visual studio 2008 \projects\learn1\chess1\chess1.cpp(367) : error C2676: 二項演算子 '++' : 'CAnalyzeTourOfKnight::DIRECTION' は、この演算子または定義済の演算子に 適切な型への変換の定義を行いません。(新しい動作; ヘルプを参照)
>direction++;で >エラー E2277 chess1.cpp 362: ファイル名を chess1.cにするか direction = direction + 1; にしたらいいんでない?
>>366 そのままではできないが、演算子多重定義すればできる。
>>368 ああそうか。てっきり
>>350 で
>C++だけど参考にでもしてください。
と書いてあったからcppしてたわ。
<time>も通らないので<ctime>にしてたしおかしいわと
思ってたんだ
direction = static_cast<Month>(direction+1); でどうだ!!? ということでごめんなさい。
>>370 いやcppだけどね。
timeは通ってるけど
たしかにctimeだわな('A`)
スマソ
373 :
350 :2008/06/22(日) 22:56:14
要するにC++モードでもenumに++演算子を適用できる コンパイラと弾くコンパイラがあるわけだ 規格書ではどうなってるのかな
ウォッチでは通るのに
376 :
350 :2008/06/22(日) 23:01:35
まあ普通に考えたら enum{ A=1, B=10, C=100, D=1000 }; とかがあることもあるわけだから、やっぱり++は許されないのかな
377 :
179 :2008/06/22(日) 23:23:16
>>350 返事遅れてごめんなさい・・・
自分C++全く知らないのですが、やっていただいたことに関しては
本当に感謝してます!
聞いてばかりで申し訳ないのですが、
このソースをCに書き換えるにはどのようにすればよいのでしょうか?
ちなみに調べてみたんですが5x5は解の個数が304個みたいです。
378 :
デフォルトの名無しさん :2008/06/23(月) 00:21:32
全部関数にしたらどう?
379 :
350 :2008/06/23(月) 00:22:56
>>377 304><
感動><
変数がめんどくさいかも・・・
全部staticでいいならいいけど・・・
380 :
デフォルトの名無しさん :2008/06/23(月) 00:26:52
Cってことはfor内での変数宣言とかも直さなきゃならんか
[1] 授業単元:プログラミングU [2] 問題文(含コード&リンク): 5 つの文字列を格納できる二次元配列 str を定義し,キーボードから5つの文字列を入力する. その後,配列 str と文字列数 num (この例では,5)を引数として受け取り, 最長の文字列が格納されている配列の添え字(行の要素番号) を返す関数 int str_maxlen(const char str[][100], int num)を定義し,動作を確認するプログラムを作成せよ. 但し,同じ長さの文字列が存在する場合は,最初に現れる文字列を優先すること. また,文字列長はライブラリ関数は利用せずに求めること。 main関数内で,str_maxlen 関数の返却値を元に文字列を出力することで,動作確認すること. [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: bcc [3.3] 言語: C [4] 期限:2008年6月24日 [5] その他の制限: 習った範囲は文字列まで。その他の制限は問題文参照 自分で解いていたらこの問題だけ上手くいかないのでお願いします
383 :
350 :2008/06/23(月) 00:38:42
>>377 書き換えてみた。
static変数使いまくりでひどいけど
ちなみに100行目に入れる値を変えればいろいろ変化します。
Bには非対応ですね。
自分で盤を初期化すれば多分できるのかな・・・
384 :
350 :2008/06/23(月) 00:39:13
>>382 #include <stdio.h>
int str_maxlen(char str[][100], int num) {
int i, j, max = 0, max_index = 0;
for(i=0; i<num; i++) {
for(j=0; str[i][j]; j++);
if(max < j) max = j, max_index = i;
}
return max_index;
}
int main(void)
{
char str[5][100];
int i;
for(i=0; i<5; i++) scanf("%s", str[i]);
printf("最長の文字列は%s", str[str_maxlen(str, 5)]);
return 0;
}
>>382 #include<stdio.h>
str_maxlen(const char str[][100], int num);
int main( void )
{
char str[ 5 ][ 100 ];
int i = 0;
int length = 0;
for( i = 0; i < 5; i++ ){
gets( str[ i ] );
}
length = str_maxlen( str, i );
printf( "%d", length);
return( 0 );
}
int str_maxlen(const char str[][100], int num)
{
int maxlen=0;
int i = 0, k = 0;
for( i = 0; i < num; i++ ){
for( k = 0; str[ i ][ k ] != '\0'; k++ ){}
if( k > maxlen ){
maxlen = k;
}
}
return( maxlen );
}
今だっ!おまいらうpロダ(ry
388 :
386 :2008/06/23(月) 00:59:01
>main関数内で,str_maxlen 関数の返却値を元に文字列を出力することで,動作確認すること. これやってないわ スマソ
返すのは長さじゃなくて添え字
>>389 まぁ結局は添え字だが、
返すべきはkじゃなくてiだわな
>まぁ結局は添え字だが、 何を言ってるんだ?
392 :
377 :2008/06/23(月) 01:07:21
>>383 、
>>384 書き換えまでやってくださったとは・・・!
本当何から何まですみません。
ありがとうございます!(>_<)
>>350 コンパイルは通ったけど、解が見つからなかったので報告。
// direction++;
direction = static_cast<DIRECTION>(direction+1);
/* switch(direction){
case NOTYET:direction = START; break;
case START: direction = RU; break;
case RU: direction = RD; break;
case RD: direction = DR; break;
case DR: direction = DL; break;
case DL: direction = LD; break;
case LD: direction = LU; break;
case LU: direction = UL; break;
case UL: direction = UR; break;
case UR: direction = END; break;
case END: direction = NOTYET; break;
}
*/
6x6の盤でナイトの旅を始めます。 解析中... 正しく解析できました。 1 30 27 18 3 10 26 17 2 11 28 19 31 36 29 20 9 4 16 25 8 35 12 21 7 32 23 14 5 34 24 15 6 33 22 13 評価回数は59079349回です。 要した時間は0.028秒です。
395 :
393 :2008/06/23(月) 01:21:25
//盤面のサイズ。 #define SIZE 5 です。遅れました Express 2005 + SDK
以下のようなプログラミングはどのようにすればよいのでしょうか? 「組み合わせ」を求める数学の公式にコンビネーションがあります。このコンビネーションのプログラミングを教えてください! 1.nとrをscanf()で読み、nCrの値を計算して表示させます。 条件として、nとrの値はマイナスでなく、またゼロでなく、さらにここではn<=10であることを確認させて、正しい数値を入力させる。もし誤った数値を入力したら「入力ミスです」と表示させる。 2.0!=1も扱えるようにすることを忘れない。
統計計算のプログラミングの例を教えてください。 最大20個までの実数値をscanf()で、配列に読み、呼んだデータの、平均値、分散、最大値、最小値を計算して表示するプログラムを教えてください! 条件として、データは-999.0から999.0の範囲とし、入力終了の合図として1000.0より大きい値のデータを入力すると、その数値は入力されずに入力作業を終了する。 平均値と分散については、 データ数をn、各データをXi(i=1〜n)とすると、(ΣXi)/n (データの個数で割ったもの)が平均値 (Σ(Xi-(データの相加平均))^2)/nが分散であるとする。 よろしくお願いします!!
5x5の盤でナイトの旅を始めます。 解析中... 解析できませんでした。 評価回数は15615711回です。 要した時間は0.07秒です。
>>391 maxlen=k;
return maxlen;
はどう見ても添え字を返してるだろ
400 :
350 :2008/06/23(月) 01:30:24
>>397 #include <stdio.h>
int main(void){
double value, sum=0, sum2=0, average, variance, maximum=0, minimum=0;
int n;
for(n=0;n<20;n++){
if(scanf("%lf", &value)!=1) break;
if(value>=1000.0) break;
sum+=value;
sum2+=value*value;
if(n==0 || maximum<value) maximum=value;
if(n==0 || minimum>value) minimum=value;
}
if(n==0) return 1;
average=sum/n;
variance=(sum2-sum*average)/n;
printf("平均値 %f\n分散 %f\n最大値 %f\n最小値 %f\n", average, variance, maximum, minimum);
return 0;
}
>>399 アホか
添え字って言っても
>最長の文字列が格納されている配列の添え字(行の要素番号)
だぞ。
kは文字列の長さにしかなんねーよ
>>385-386 ありがとうございます。
それにしても…早いw
次の問題解き終わってきてみたら20分後にはもうできてるし…
>>396 > 2.0!=1も扱えるようにすることを忘れない。
階乗を求めるやり方か・・・
>>396 あ〜、入力エラーの表示は適当に追加しておいて。
あと、nもrも0のときでも考慮されてる。
0個の中から9個のものを選ぶという事象も1つの事柄として扱っているし
n個の中から0個のものを選ぶ、すなわち何も選ばないということも
1通りの事象として扱われているから。
×0個の中から9個のものを選ぶという ○0個の中から0個のものを選ぶという
>>397 #include <stdio.h>
#include <math.h>
int main(void)
{
double d[20], max = -1000.0, min = 1000.0, ave = 0, var = 0;
int i, n;
for(i=0; i<20; i++) {
scanf("%lf", d + i);
if(fabs(d[i]) > 999.0) break;
if(max < d[i]) max = d[i];
if(min > d[i]) min = d[i];
ave += d[i];
var += d[i] * d[i];
}
if(!i) return 0;
ave /= i;
var = var / i - ave * ave;
printf("最大値%f\n最小値%f\n平均%f\n分散%f\n", max, min, ave, var);
return 0;
}
412 :
395 :2008/06/23(月) 02:48:26
>>400 有り難う御座います、見逃していました。
>ちなみに100行目に入れる値を変えればいろいろ変化します。
所で、よく見るとCのほう(float)キャストが無いので、経過時間が0.000秒でした。
軽作業用に使っている AthlonXP 2800+ 2GHzじゃ2.78秒 C2D E7200でも試してみようかのぅ
[1]CとC++ [2]テキストサウンドノベルを作成する事。 キー入力でメッセージを表示し、途中で選択肢を含める。(最大3つまで) 画面をスクロールさせることは禁止。ページ切り替えは、画面全消去で対処する事。 テキスト行数は、最低50行から最大100行までとする。 画面全消去方法は、先生に聞くこと。 #include"stdlib.h" system("CLS"); この時に画面すべて消せる
あいまいな問題にはまともに回答する必要無し
418 :
415 :2008/06/23(月) 10:59:11
サウンドはほっといていいらしいです。
それただのノベル。
プログラム部分なら作れるけど、ノベルはどうすんだよw
サウンドノベルみたいに選択肢で分岐するテキストアドベンチャーを作れば良いと理解した。 まってろ、今作ってる。
422 :
sage :2008/06/23(月) 11:42:17
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 5 つの数を double 型の配列 nums にキーボードから読み込んで, それらの 3乗の和を出力するプログラムを作成せよ。 3 乗の和を計算する部分は,関数 double cubesum(double vc[], int no) とすること。 ここで,配列 vc はデータの格納された配列を, no は入力したデータの個数を表す。 main 関数では個数の 5 は定数として扱って構わないが, 関数 cubesum では個数は引数で読み込むものとする。 つまり何個のデータにでも使える汎用性のあるものとして関数を定義する。 3 乗の和の計算は,main からその関数を呼び出して行う。 ヒント:関数の中の3乗和の計算には繰り返しの処理が必要となる。 for 文を使えば簡単に書ける。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年6月24日 [5] その他の制限:特になし
#include <stdio.h> double cubesum(double vc[], int no) { double sum = 0.0; int i; for(i=0; i<no; i++) sum += vc[i] * vc[i] * vc[i]; return sum; } int main(void) { double nums[5]; int i; for(i=0; i<5; i++) scanf("%lf", nums + i); printf("%f", cubesum(nums, 5)); return 0; }
>>415 マルチでもいいけどさ、環境と期限書こうぜ
425 :
415 :2008/06/23(月) 12:32:18
環境はvista 言語はC++ 起源ははっきりとは言ってなかったが夏休み前だと思います。
お前の夏休みなんか知らねーよww
427 :
350 :2008/06/23(月) 12:43:59
>>412 動作に現れる部分を修正するのは大いに結構だが
現れない部分の修正しないで提出すると痛い目見るよ
例えばラインコメント(//)とか//コンストラクタとか//デストラクタとか
アルゴリズムだとかstaticばかりなのかとか
421だが、飽きた。 他の人に任せた。
429 :
デフォルトの名無しさん :2008/06/23(月) 13:00:43
微妙ですがage
430 :
425 :2008/06/23(月) 13:26:52
期限だろ。字間違うなよ
夏休みの宿題になっちまうなw
432 :
デフォルトの名無しさん :2008/06/23(月) 14:03:54
[1] 授業単元:画像処理 [2] 環境 [2.1] OS:Linux [2.2] 言語:C言語 #include <stdio.h> #include <stdlib.h> int main( int argc , char *argv[] ) { unsigned short int ipi[256][32]; unsigned short int ipo[256][32]; FILE *fpi,*fpo; int i,j; if((fpi=fopen( "logo.gray" ,"rb")) == NULL) { printf("file open error\n"); exit(-1); } fread(ipi[0],sizeof(unsigned short int),256*32,fpi); fclose(fpi); for (j=0 ;j <256 ; j++){ for (i=0 ;i <32 ; i++){ if(127>ipi[j][i]){ ipo[j][i]=0; } else{ ipo[j][i]=255; } } } if((fpo=fopen( argv[2] ,"wb")) == NULL) { printf("file open error\n"); exit(-1); } fwrite(ipo[0],sizeof(unsigned short int),256*32,fpo); fclose(fpo); logo-bin.gray の境界点を抽出した画像を作成するプログラムを作成せよ。
433 :
432 :2008/06/23(月) 14:07:01
return 0; }最後にこれを忘れてました。分かりにくくてすみませんが問題はこれです。 logo-bin.gray の境界点を抽出した画像を作成するプログラムを作成せよ。
434 :
142 :2008/06/23(月) 14:27:47
[1] 授業単元:
C
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7023.txt [3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
Microsoft Visual Studio 2008
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
明日13:00まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
お願いします。
>>435 バッチファイルで書いた方が早い気がするw
/*未コンパイル 動作確認無し*/ #define N 7 #include <stdio.h> struct{int linkable[3];char *prompt; }scene[N]={ {1,3,5," [彼女]ねぇ挿れて"}, {0,2,4,"[貴方]麻呂のクソースくらえ〜"}, {1,3,5,"[彼女]もっと優しくぅ〜"}, {0,2,4,"[貴方]う〜きつい"}, {1,3,5,"[彼女]う〜固い"}, {2,4,6,"[貴方]出、出る〜"}, {7,7,7,"[彼女]駄目〜出しちゃ.汚れちゃう"}, } int main(void){ int i=0,j; wihle( i<N)[ printf("%s¥n",scene[i].prompt); do{ printf("Select which?[1,2,3]?");scanf( "%d¥n",&j); }while((j<1)&&(j>3)); i=scene[i].linkable[j]; } return 0; }
こんなの書くような子じゃなかったんだけど...
トリ付けてないからなりすましの可能性も… 更に言うとこれも含めて自演の可能性もあるなww
445 :
デフォルトの名無しさん :2008/06/23(月) 16:15:39
1以上の正の整数の値をキーボードから入力し、1からNまでの和を求める プログラムをC言語で作成せよ。 また、1から999までの和はいくらか? お願いします。
446 :
445 :2008/06/23(月) 16:21:31
間違えた問題の続きです。 1+2+・・・+N=Σi あともうひとつ 1以上の正の整数の値をキーボードから入力し、1からNまでの2乗の和を求める プログラムをC言語で作成せよ。 また、1から100までの和はいくらか? 1の2乗+2の2乗+・・・+Nの2乗=Σiの2乗 これもお願いします。 問題分かりにくくてごめんなさい。
>>445 #include <stdio.h>
int main(void)
{
int N;
printf("入力");
scanf("%d", &N);
printf("1から%dの和は%d\n", N, (1+N)*N/2);
return 0;
}
448 :
445 :2008/06/23(月) 16:23:18
誰か432をお願い!
449 :
445 :2008/06/23(月) 16:25:44
ずいぶんとレベルの違う宿題が出る授業だなw 小学校と大学院が校舎共有してるのか?
451 :
デフォルトの名無しさん :2008/06/23(月) 16:32:35
外径、内径、高さの値を入力して、中空円筒の体積を計算するプログラム をC言語で作成せよ。 #include<stdio.h> #include<math.h> main() { double pi,r1,r2,h,V; 途中までやりました。お願いです。
452 :
447 :2008/06/23(月) 16:32:38
>>449 本当はforループで計算するのを求めていると思う
453 :
445 :2008/06/23(月) 16:36:06
>>450 1年の授業と3年の授業ですw
432と446の問題を誰かお願いします。
期限は今週末です。
>>432 "logo.gray"ってファイルは?
無くとも、もっと説明しなきゃ
”境界点を抽出”って意味は?
"logo.gray"が無いと説明出来ないならUPしなきゃ
456 :
454 :2008/06/23(月) 16:41:08
457 :
デフォルトの名無しさん :2008/06/23(月) 16:43:33
次の関数を計算するプログラムを作成せよ。C言語で。 y=3エックス2乗+2エックス-6 これ簡単だからやってみそ!
お前がやれ。
459 :
436 :2008/06/23(月) 16:50:45
460 :
432 :2008/06/23(月) 16:54:17
>>455 境界点を抽出の意味は僕もよく分からないです。ほんとにちんぷんかんぷんです。
単元は2値画像処理というところです。
>>460 輪郭抽出って事?
2x2 sobel フィルタとか使うの?
462 :
デフォルトの名無しさん :2008/06/23(月) 16:56:01
>>457 そんなこと言わないでさー やってよーん
>>460 それじゃ、誰も出来ないだろw
もっと説明がいるぞ
"logo.gray"ってのは存在して、それの境界点抽出なのか
それとも任意の2値画像なのか
友達でも誰でも良いから聞いてきなw
465 :
432 :2008/06/23(月) 16:59:55
輪郭抽出だと思います! 2x2 sobel フィルタは使わないと思います。 とにかくそういうc言語のプログラムを作成しろと言われて。 432を少し改良すればできると教授に言われました。
466 :
432 :2008/06/23(月) 17:01:19
>>464 "logo.gray"は存在して、それの境界点抽出です!
>>466 なんだ?意図的にとぼけてるのか?
それなら"logo.gray"をUPしなきゃ、誰も出来ないだろ
って言ってるんだけど…
>>466 16.bitグレイスケール画像を作ってうp!
>>451 #include<stdio.h>
main()
{
double pi,r1,r2,h,V;
printf( "外径\n" );
scanf( "%lf", &r1 );
printf( "内径\n" );
scanf( "%lf", &r2 );
printf( "高さ\n" );
scanf( "%lf", &h );
pi = 3.14159265358979;
V = (pi * (r1 / 2.0) * (r1 / 2.0) + h) - (pi * (r2 / 2.0) * (r2 / 2.0) + h);
printf( "中空円筒の体積\n%f\n", V );
return 0;
}
1] 授業単元:授業じゃないんですが、質問スレがここしか分からなかったのでお願いします。 [2] 問題文(含コード&リンク): #include<stdio.h> int main(void){ int teika; printf("定価を入力してからENTERを押してください。\n"); scanf("%d",&teika); printf("1割引だと%4d円\n",(int)(teika*0.9)); printf("3割引だと%4d円\n",(int)(teika*0.7)); printf("5割引だと%4d円\n",(int)(teika*0.5)); printf("8割日だと%4d円\n",(int)(teika*0.2)); return 0; } このプログラムで、1000とかキリの良い数値を入力すると、3割引だけ1円だけずれた値が帰ってきちゃいます。 これってなんでですかね? [3] 環境 [3.1] OS:WindowsXP SP2かな? [3.2] コンパイラ名とバージョン:CPad for Borland C++Compiler Version 2.31 [3.3] 言語:C [4] 期限:無期限 [5] その他の制限:基礎は一通りやって、授業ではそれを応用して色々やらされてます。 が、ところどころ分からないので一人で最初から勉強し直してます。
[1] 授業単元: 実験 [2] 問題文 (1)ベクトルの内積を求めるプログラムを書け (2)3×3の行列の掛け算を行う関数を作り、標準入力から入力した行列を 掛け算するプログラムを書け (ヒント 2重配列が必要。 double matrix[3][3];) [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 6月26日まで [5] その他の制限: 特になし
>>471 切り捨てたいの?切り上げたいの?四捨五入したいの?
>>473 なんでもいいです。
参考にしてるサイトのやり方に従ってそこまで作りました。
やっぱ(int)が影響してるんですかね?
と思って全部それ取って実数型にしたら直りました。
どんな原因なんでしょう…
>>474 浮動小数点数は条件が合わない限り小数ぴったりの数値を扱えないので
内部ではその数値に近い値に丸められている
0.7 はコンピュータ内部では 0.7 より小さな値で格納されていて
0.9 と 0.2 は少し大きな値になってるんだろう
>>475 やはりコンピュータ上の問題ですか。
プログラムの作り方を変えるとかしないと解決できないわけですね。
ありがとうございました。
>>453 アンカー付けろ
テンプレ使え
数字は半角(まぁ全角でも困らないけどさ)
>>471 3割引だったら7倍してから10で割ってみてはどうだろう。
teika * 7 / 10
479 :
デフォルトの名無しさん :2008/06/23(月) 18:12:32
>>471 1円どっちにずれてる?
割る前に2円足すか1円引けばいいんじゃね?
>>480 定価を入力してからENTERを押してください。
1000
1割引だと 900円
2割引だと 800円
3割引だと 699円
4割引だと 599円
5割引だと 500円
6割引だと 400円
7割引だと 299円
8割引だと 200円
9割引だと 100円
>>481 round ceil floor のいずれを使ってもピッタリの数値になるのに
キャスト(int)による型変換のときだけ1円ずれる
めんどくせー
>>478 なるほど。
そういう風にすればいいのですね。
ありがとう。
>>480 >>481 の通りです。
>>482 めんどいっすねw
でも宿題じゃなくてなんとなく答えも見えたんでおkです!
皆様ありがとう。
>>446 いくらなんでも簡単すぎだろ。
丸投げしすぎ。
487 :
446 :2008/06/23(月) 19:07:34
488 :
451 :2008/06/23(月) 19:09:41
>>483 >>90 〜省略〜
BITREE_TYPE sumValue(BITREE_NODE *p){
BITREE_TYPE total = 0;
if(p->left) total += sumValue(p->left);
if(p->right) total += sumValue(p->right);
total += p->value;
return total;
}
int main(int args, char **argv){
BITREE_NODE *p;
int end=0;
if(args < 2) return 1;
p = inputBITree(argv+1, args-1, &end);
printf("合計は %d です\n", sumValue(p));
printf("左部分木の合計は %d です\n", sumValue(p->left));
printf("右部分木の合計は %d です\n", sumValue(p->right));
destroyBITree(p);
return 0;
}
490 :
デフォルトの名無しさん :2008/06/23(月) 19:55:16
[1]プログラミング言語C [2]@3より大きく、入力された上限の数未満の全ての自然数かつ非素数に ついて、3で割り切れるものは無視し、3で割った余りが1のものは加算 し、余りが2のものは減算して合計を求めよ。 A次のように表示する Input Upper Limit : 11 [Enter] Answer is : 6 B配列、平方根は使ってはならない。 [3]@windows vista Agcc BC言語 [4]2008/6/23/21:00まで [5]今年の春から始めたので、まだ基礎のほうです。 よろしくお願いします。
493 :
491 :2008/06/23(月) 20:52:41
494 :
491 :2008/06/23(月) 20:55:59
495 :
デフォルトの名無しさん :2008/06/23(月) 20:58:38
>>413 8x8の解がいくつあるのか試してみて欲しいな
比較的簡単な問題が出るとここぞとばかりに回答が提示されるよね
簡単な問題解いてなんの意味があるって感じだよな
肩慣らし
簡単な問題をだらだらと置いておいても意味ないし
>>500 だから何?お前基準で簡単とか言われても基準が曖昧なんだが。
お前が簡単だと思っているだけで、実際にお前が解いてもミスだらけなんじゃね?
【回答テンプレ】 [1] 回答レベル:ノーチェック/コンパイル済/テスト済/清書済 [2] 回答 短いものは、直接記入可 もしくはリンク [3] 開発環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイル/テストに使用した コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4]コメント なーんてね
>>504 ひとつの問題に対して複数者から解答が上がったら概ね平易
ひとつの問題に対して複数者が議論を始めたら面白みのある問題
ミスだらけかもね
誰かの解答に対して議論が始まることもあるけどなー
>>507 うん、だから お前基準 ほど 難易度 として当てにならないっつってんだが?
一言居士はうざいって意味が分からない?四の五の言わずにてめぇレスしろよw
>>492 はなぜ (i+1) やら、i=0からスタートしているのかと?
>>490 > 入力された上限の数未満
おかげで未満じゃなくなってるし・・・
なんという自己参照定義 循環論証
ってか
>>507 が自分基準で難易度の話をしているように読めるのなら文盲だな
あ、文盲って言葉も使っていいよ。自分が知らない他人を批判する言葉とか大好きそうw
すいません、この問題をおねがいします。 [1] 授業単元: Cプログラミング演習 [2] 問題文(含コード&リンク) 2以上32767以下の素数を求める。 整数nが素数かどうかは、2から√nまでの素数で割り切れるかどうか判定して、 そのすべてで割り切れなければnは素数となる。また、2以外の偶数は素数にならないから、 3以上の整数については奇数だけを対象にして求めればよい。 余力があれば、long型を対象にして2から2^31-1までの素数を求めてみよ。 [3] 環境 [3.1] OS: (Windows vista) [3.2] コンパイラ名とバージョン: (visual studio 2005 ) [3.3] 言語: (C言語) [4] 期限:今週中 [5] その他の制限: (自分のレベルはかなり低いので難しい関数はなしでお願いします・・・)
すみませんがこの問題をお願いします。 変数(int型 または double型 または 両方),入出力(scanf関数,printf関数),条件分岐(if else文)をすべて用いて, 各自自由なプログラムを作成する. 課題提出のメールには,必ずそのプログラムの仕様の説明文をつけること (そのプログラムが何をするものなのかを説明すること).
>>515 楽しすぎるwww
大まかに、どんなの作りたいかとか買いてけよw
テストの点数とか、体重の判定とかなんでもいいからよw
HDDをクラッシュさせるプログラムはどうかな? 成績表を破壊するプログラムとか
むしろwikiの回答例でも持って池。
>>515 int scanf printf if else
でググると良い
>>515 wikiのマスターマインド(Hit&Blow)がいいんじゃない?
流れ的にサウンドノベルしかないだろ
CG曲シナリオシステム全部1人でか
むしろなんかシューティング系を(ry
>>514 > long型を対象にして2から2^31-1までの素数を求めてみよ。
PCの性能にもよるけど、物理的に時間が掛かるんで却下。
>>499 BITREE_NODE *inputBITree(char *str[], int len, int *end){
〜〜省略〜〜
*end = i + i;
return p;
}
*end = i + i; を *end = i + 1;
に変更
>>522 >wikiのマスターマインド(Hit&Blow)
実行してみたんですが、どうやって終わらせるんですか?
Ctrl と c 同時押しすれば終わるんじゃない
>>528 70.3秒かかったよ
これって長すぎる?
アルゴリズムはエラトステネスの篩使用
エラトステネスの篩じゃね?
全然違う
ふるいじゃないよ
>>530 ありがとうございます。数字はしっかりでました!
実行例にある
入力データ [ 6 [ 8 [ 1 _ _ ] 5 _ _ ] ] [3 _ [ 9 _ _ ] ] ]
というのはどうやって出せばいいのでしょうか?
>>539 浦島状態って。
C#ならまだしも、いつの時代の人?
>>538 printBITree(p, 0, 0);
値の間にスペース入れたいならprintSubtreeの中をいじくる
>>539 #include <stdio.h>
int main(void)
{
char str[110], *p[10], temp[11];
int i, j, cnt[10] = {0}, n = 0;
p[0] = str;
for(i=0; i<10; i++) {
printf("入力文字列==>");
fgets(temp, sizeof temp, stdin);
for(j=0; temp[j]; j++) if(temp[j] == '\n') temp[j] = '\0';
if(strcmp(temp, "end")==0 || strcmp(temp, "END")==0) break;
for(j=0; j<n; j++) {
if(strcmp(p[j], temp)==0) {
cnt[j]++;
break;
}
}
if(j==n) {
char *dst = p[n], *src = temp;
while(*dst++=*src++);
p[n+1] = dst;
cnt[n]++;
n++;
}
}
printf("*** 集計結果 ***\n");
for(i=0; i<n; i++) printf("%s : %d\n", p[i], cnt[i]);
return 0;
}
#include <string.h>忘れてた
strcmp関数は作ってしまえ
[1] 授業単元:計算機 [2] 問題文(含コード&リンク): 8パズルを解く上で、状態の重複をチェックするにはどのようなプログラムを加えればよいか考えよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: [3.3] 言語:C [4] 期限: 明日 どなたかよろしくお願いします。
8パズルとやらをググってみたけど >状態の重複 ってどんな状況だ? こんなんか? bool bCheckOverlap(int x, int y){ if(puzzle[x][y]>0){ return false; } return true; }
動かしたとき同じ状態に戻らないようにするためのチェックじゃない?
>>546 A
void func(int *a, int *b);
B
void func(int *a, int *b)
{
if(*a < *b) {
int temp = *a:
*a = *b;
*b = temp;
}
}
551 :
545 :2008/06/24(火) 01:26:32
>>549 さんの仰るとおり、過去と同じ状態になっていないかチェックして無駄な処理をしないようにというものです。
言葉足らずで申し訳ありません。
>>550 ありがとうございます。
「void func(int *a, int *b);」こうやって宣言するんですね、この段階で自分はつまづいてました。
またこちらもお願いできますでしょうか?これで課題がすべて終わるのでお願いします。
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
関数は戻り値をひとつしか返せないが、ポインタを使うと複数の値を呼び出し側に
返すことができる。秒数を与えると、それが何時間何分何秒にあたるかを計算する
関数void calctime(int sec, int *hp, int *mp, int *sp);を作成せよ。
たとえば、calctime(3725, &h, &m, &s); として呼び出すとh=1, m=2, s=5となる
(1時間2分5秒は3725秒)
(解説)
main関数側で各関数を用意し、計算する関数を呼び出す。
結果の表示は関数の呼び出しが終わった後、main関数側で行えばよい。
秒→時間、分、秒の計算は単純に割り算の商と余りを用いればよい。
[3] 環境
[3.1] OS: VineLinux
[3.2] コンパイラ名とバージョン: GNOME gcc
[3.3] 言語: C言語
[4] 期限:6/25 PM:2時
>>545 1 2 3
4 5 6
7 8 -
という状態なら123456780という数字を覚えておくとか。
3 4 2
1 7 -
8 5 6
という状態なら342170856という数字
こういうのをソートされた線形リストにいれておけばまあ悪くないのでは?
>>545 [1]回答レベル:ヒント
[2]コード:なし
[3]環境:省略
[4]コメント:
つ9進数
>>554 本当に回答がお早いです。自分もそれくらいになりたいですorz
なにはともあれ、ありがとうございます。
本当に助かりました。
557 :
553 :2008/06/24(火) 02:01:26
>>553 線形リストじゃ手が長くなった場合の探索コストが大きいかな。メモリも食うし。
静的に9^9Byte≒370MB確保しておくのもなんだかアレだしなんか良い案あるかしら
[1] 授業単元: C言語演習U [2] 問題文(含コード&リンク): n個の文字列C0, C1, C2, ... ,Cn-1を読み込んだ後、C0, C1, C2, ... ,Cn-1を アルファベット順に並び替える関数を作成し、main関数でこの関数を呼び出すようにせよ。 ここでいうアルファベット順とは、例えば"Report Ha Dase"と入力すると、 " aaDeeHoprRst"のように大文字と小文字がある場合は小文字が先にくるように アルファベットの並べ替えを行なう。 (ヒント) 文字列を読み込んで、アスキーコード順に並び替えを行なう。 ただし、大文字と小文字が混在するので、そこは各自テクニックが必要。 なお、入力文字列中の「空白」は並び替え後、先頭にくる。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語: C言語 [4] 期限:2008.6.24 午後6時までの急ぎでお願いします。m(_ _)m
>>558 空白、アルファベット以外は出現順
#include <stdio.h>
#include <string.h>
void alphabetsort(char *dst, const char *src)
{
int count[256] = {0}, idx, i;
char *p, label[256] = " aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ";
idx = strlen(label);
for( ; *src != '\0'; src++){
p = strchr(label, *src);
if(p) count[p - label]++;
else{ label[idx] = *src; count[idx] = 1; idx++; }
}
for(i = 0; i < 256; i++) while(count[i]-- > 0){ *dst = label[i]; dst++; }
*dst = '\0';
}
int main(void)
{
char buf[100], dst[100], *p;
fgets(buf, sizeof(buf), stdin);
p = strchr(buf, '\n');
if(p) *p = '\0';
alphabetsort(dst, buf);
printf("%s\n", dst);
return 0;
}
>>559 >>560 両方、ありがとうございます。
どちらもせっかく作ってもらったので、両方使いたいところですが
今回は
>>560 さんのコードを使わせていただきます。
コード中の説明やコードの作りが分かりやすかったので
>>559 さんのコードもアスキーコード使用が基本的で良かったのですが、
文字列の並び替え部分が若干難しかったので、今回はごめんなさい。
文字列を並び替える関数であって、並び替えた文字列を表示する関数じゃないと思うんだが。
それなら、順番に表示する部分を配列に格納すりゃ良い
n個の文字列って指定からガン無視してるソースに突っ込むなんてw
でたよ、ソースを書きもせず、自分のアイデアも提示せずに 批判しかしない基地外。
>>561 本人?が良しとした時点で後からいちゃもんつけてもなぁ・・・
後は本人が出来るなら、適当にやるだろうし。
並び替えならバブルソートだ! void swap(char *a, char *b) { char temp = *a; *a = *b; *b = temp; } void sort(char *str) { int i, j, len = strlen(str); for(i=len-1; i>0; i--) { for(j=0; j<i; j++) { if(tolower(str[j]) > tolower(str[j+1])) swap(str + j, str + j + 1); else if(tolower(str[j])==tolower(str[j+1])) { if(isupper(str[j]) && islower(str[j+1])) swap(str + j, str + j + 1); } } }
ソースを書かずに口出しする奴の方がどうかとw
宿題を片付けるという趣旨とは言えども、回答テンプレに沿っていない
すなわち、コードの品質に対する明示が無かったり、コメントが一切
無くコードそのものやコードへのリンクだけの場合は、参考に留める
だけに留め、あくまでも独力でトライすることをおすすめします。
多くのコードは良心的で真面目ですが、中には
>>438 のような悪辣
なコードもありますので、参考以上の扱いをすると災難に合う場合も
あります。
なお、小さなプログラムコードの場合、簡単にその優劣は判断出来ま
せん。コードは数学の問題と異なり、一度解いてしまえばおしまい
というわけではなく、何度も実行されて書き直されて真価が評価され
るものです。
宿題を自力で解けないレベルの人がその優劣の判断を出来ると
は到底思えません。
複数の回答が出た場合でも、それに優劣を付けていると取られかね
ない言動を取ることは質問者は絶対に避けて下さい。
自分のソースにミスがあった場合、ソース書かなくても突っ込んでくれると有難いがな。
[1] 授業単元:プログラミング [2] 問題文 3×3の行列の掛け算を行う関数を作り、標準入力から入力した行列を掛け算するプログラムを書け (ヒント 2重配列が必要。 double matrix[3][3];を使用) [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 6月26日まで [5] その他の制限: おねがいします><
574 :
491 :2008/06/24(火) 10:00:41
自己解決しますた いないかもしれないけど、協力して下さった方々 どうもです
575 :
456 :2008/06/24(火) 10:54:36
>>486 わかりやすい回答ありがとうございます!
次からは自分でもできるよう参考してがんばります。
>>573 環境: 2005 Express + SDK
#include <stdio.h>
int main() {
int i, j, k;
double matrix1[3][3], matrix2[3][3],matrix3[3][3];
for(i=0;i<3;i++) {
printf("INPUT 3 numbers. (%d of 3):", (i%3)+1 );
scanf("%lf%lf%lf", &(matrix1[i][0]), &(matrix1[i][1]), &(matrix1[i][2]));
}
for(i=0;i<3;i++) {
printf("INPUT 3 numbers. (%d of 3):", (i%3)+1 );
scanf("%lf%lf%lf", &matrix2[i][0], &matrix2[i][1], &matrix2[i][2]);
}
for(i=0;i<3;i++)
printf("%lf\t%lf\t%lf\n", matrix1[i][0], matrix1[i][1], matrix1[i][2]);
putchar('\n');
for(i=0;i<3;i++)
printf("%lf\t%lf\t%lf\n", matrix2[i][0], matrix2[i][1], matrix2[i][2]);
puts("");
// A(i,k) * B(k,j) = C(i,j)
for(i=0;i<3;i++)
for(j=0;j<3;j++) {
matrix3[i][j] = 0.0f;
for(k=0;k<3;k++)
matrix3[i][j] += matrix1[i][k] * matrix2[k][j];
}
for(i=0;i<3;i++)
printf("%lf\t%lf\t%lf\n", matrix3[i][0], matrix3[i][1], matrix3[i][2]);
}
>>408 いろいろ試してみたが、AMDのプロセッサ(AthlonX2)はL1 Data
Cacheが2Way-Set AssosiativeのためにCore 2 Duoのような
8Way-Set Assosiativeのマシンに特定の場面で大幅に負ける事がある。
データ・テーブルも今回は2個だがこれが10個〜20個と増えてくると
AMDとIntelではあまり差がなくなってくるだろう。
>>578 #include <stdio.h>
float interest(float r, int n)
{
float ret = 1.0;
int i;
for(i=0; i<n; i++) ret *= (1 + r / 100);
return ret;
}
int main(void)
{
float r;
int y, n;
printf("利率(r):");
scanf("%f", &r);
printf("金額(y):");
scanf("%d", &y);
printf("期間(n):");
scanf("%d", &n);
printf("返済金額は%d円です", (int)(y * interest(r, n)));
return 0;
}
>>577 ちょっとスレ違いになるかも知れないが、何故L1Chacheの構造が
原因であると断定できるのか教えて欲しいと思います。
1] 授業単元: [2] 問題文(含コード&リンク): 次々に入力される値を合計する処理である。 変数dtにデータを入力する処理を繰り返し行い、 入力終了後その合計sumと平均aveを出力する。 なお、入力データは正の整数とし、 入力するデータがなくなったら、 終わりの印として負の値を入力する。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C++ [4] 期限: [5] その他の制限:
1] 授業単元: [2] 問題文(含コード&リンク): 次の説明を読んで、プログラムを作成しなさい。 小数で入力される気温のデータを5℃単位の整数に丸めたい。 キーボードからdouble型変数kに気温を入力し、 丸めた数値はint型変数gに求め、gを画面に出力する。 ただし入力データに負の気温はないものとする。 また必要なら、 計算途中の中間結果を格納するint型変数wなど、 適宜変数を用意すること。 【実行例】 温度を入力 22.4 約20度です 温度を入力 22.5 約25度です [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C++ [4] 期限: [5] その他の制限:なし 2問ありますが、よろしくお願いします
>>581 #include <iostream>
int main()
{
int dt, i = 0, sum = 0, ave;
while(1) {
std::cin >> dt;
if(dt<0) break;
sum += dt;
i++;
}
if(i!=0) {
ave = sum / i;
std::cout << "合計:" << sum << "平均:" << ave << std::endl;
}
}
>>582 #include <iostream>
int main()
{
int g, w;
double k;
std::cout << "温度を入力";
std::cin >> k;
for(g=0; g<k; g+=5);
if(g - k > 2.5) g -= 5;
std::cout << "約" << g << "度です" << std::endl;
}
>>581 [1]コード品質:未チェック
[2]コード:直接記入
#include <stdio.h>
#include <stdlib.h>
int main(void){
int sum,count=0,current;
char s[32],*ss;
do{
if (ss==fgets(s,32,stdin)) continue;
while(*ss){ if( (*ss=13)||(*ss=10) )*ss=0;ss++;}
if(( current=atoi(s) )<0)continue;
count++;sum+=sum+current;
printf("%6d:value=%6d sum=%6d average=%lf¥n",count,current,sum,
(double)sum/(double)count);
}while(0);
retrun(0);
}
[3] 環境:Linux/Gcc/C++
[4]コメント:上記コードはC++でもコンパイルできる筈です。
C++はCのほぼスーパーセットです。ループの中で、stdinから文字列
を読み込み、atoi関数で整数に変換しています。平均の計算はdoubleで
行っています。駄コードですがご参考にどうぞ。
駄コードってレベルじゃねーぞ
>>585 みたいな明らかにおかしい、見てるだけで頭が痛くなるようなコードにも
ソースを書かなきゃ文句言っちゃいかんのか?
チラシの裏にでも書いてろ
>>541 できました!ありがとうございます。
ところで、資料に書いてあったようにbitree.hを作ってインクルードする意味ってなんなんでしょうか?
また、bitree.hを作る場合は、bitree.hに一応
int main(int args, char **argv);
BITREE_TYPE sumValue(BITREE_NODE *p);
なども書き加えておいたほうがよいのでしょうか?意味はない気がしますが・・
591 :
デフォルトの名無しさん :2008/06/24(火) 16:19:08
このスレをいろんな大学に通報すればいいんですねわかります
通報なんかしなくてもこんな所で丸投げする奴はどうせ卒業できん
>>585 点○虫か。コード品質なんて項目要らない。
>>581 #include <stdio.h>
#include <stdlib.h>
int main(void){
// int sum, count=0, current;
int sum=0, count=0, current;
char s[32], *ss;
do{
// if (ss == fgets(s, 32, stdin))
if (!(ss = fgets(s, 32, stdin)))
continue;
while(*ss){
// if( (*ss=13) || (*ss=10) )
if( (*ss==13) || (*ss==10) )
*ss = 0;
ss++;
}
if(( current = atoi(s) ) < 0)
continue;
count++;
// sum += sum + current;
sum += current;
printf("%6d:value=%6d sum=%6d average=%lf\n",
count, current, sum, (double)sum/(double)count);
// }while(0);
}while(current >= 0);
// retrun(0);
return(0);
}
594 :
お願いします :2008/06/24(火) 19:20:36
C++言語を使ってスタックを実現するクラスを定義し,その実行を確認するプログラム(main関数)を書く. クラス名はstackとする. 要素のデータの型はintとする. 格納できる要素の最大数は10とする. 公開されているインターフェースは下記のものとする. void push(int data); int pop(); 初期設定は,以下のいずれかにより行う. (1) クラスのコンストラクタ(constructor)の機能を用いる. (2) 初期設定用のインターフェース(init)を定義し,スタックを使用する前に,initを呼び出す. 機能確認のためのインターフェース(たとえばスタック内のデータを表示させる)を追加してもよい. 上記の仕様を満たさない(インターフェース名が上記と一致しない等)プログラムは対象としない.
#include <iostream> #include <vector> using namespace std; int main() { vector<int> stack; stack.push(1); stack.push(2); cout << stack.pop() << endl; cout << stack.pop() << endl; } じゃ駄目ですか(><;
>>594 #include<iostream>
#include<vector>
class stack{
public:
void push(int data){ if(m_data.size()<m_datanummax) m_data.push_back(data); }
int pop(){
int ret=-1;
if(m_data.size()>0){
ret=m_data[m_data.size()-1];
m_data.pop_back();
}
return ret;
}
void display(){ for(unsigned i=0;i<m_data.size();i++) std::cout << m_data[i] << std::endl; }
stack(){m_datanummax=10;}
stack(int datanummax):m_datanummax(datanummax){};
private:
std::vector<int> m_data;
unsigned m_datanummax;
};
int main(void){
stack a, b(5);
for(int i=0;i<20;i++){
a.push(i);
b.push(i);
}
a.display();
std::cout<<"-----"<<std::endl;
b.display();
return 0;
}
添削屋が虫作ってどーすんだよw
麻呂のクソースはいらんかえぇ〜
>>589 main関数はヘッダで宣言したらダメ
sumValue関数はヘッダで宣言してもいい
bitree.hを作ってincludeさせてるのは勉強のためじゃない?
main関数と同じファイルに関数を定義してるなら普通はわざわざ宣言部をヘッダに分けない
main関数以外をbitree.cとかいうファイルにでも定義するならbitree.hを作る必要がある
分割コンパイルについて知りたいなら、ググるか他のC言語質問スレに質問しましょう
>>590 完全2分木って書いてあるけど、綺麗な形の木じゃない場合ってことは
完全2分木ではない場合を考えろってこと?
>>599 わかりました、ありがとうございました!
問1 A : [] B : 0 C : * D : * E : * F : 0 G : vc
問3 A : d B : d C : s
606 :
デフォルトの名無しさん :2008/06/24(火) 22:50:35
1
607 :
デフォルトの名無しさん :2008/06/24(火) 22:53:53
608 :
デフォルトの名無しさん :2008/06/24(火) 23:03:35
[1] 授業単元:数学演習3
[2] 問題文(含コード&リンク):
3a-2b+ - d= 7
. 2b+2c+ d= 5
.a-2b-3c-2d=-1
. b+2c+ d= 6
上の行列をピポット選択を使い前進消去法で解くプログラムを作る。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語:C
[4] 期限:2008年06月25日07:00まで
[5] その他の制限:特に制限はありません
以下が作っては見たもののアルゴリズムエラーでどこが悪いのかもわからない自作プログラム。
http://nijibox.ohflip.com/futabafiles/001/src/sa26951.txt
609 :
608 ◆k4INPBPZ3E :2008/06/24(火) 23:04:30
トリップ忘れてた
610 :
デフォルトの名無しさん :2008/06/24(火) 23:11:40
1] 授業単元:基礎プログラミング [2] 問題文 (1)標準入力からint 型引数に文字コード (ASCII) を読み込むと, その文字が小文字 (a〜z) であれば大文字のコードを返し そうでないならば受け取ったコードをそのまま返す関数を設計し, その関数を利用するプログラムを作成しなさい (2)char 型の配列の名前を引数として受け取ると, その配列に記憶されている文字列の逆順に 並べか替えた文字列を表示し 何も返さない関数を設計し, その関数を利用するプログラムを作成しなさい. (3)char 型の配列の名前を2つ引数 P, R に受け取ると, P に記憶されている文字列を逆順に並べか替えた文字列を R に記憶して 何も返さない関数を設計し, その関数を利用するプログラムを作成しなさい. (4)char 型の配列の名前を引数として受け取ると, その配列に記憶されている文字列が回文ならば 1 を, そうでなければ 0 を返す関数を設計し その関数を利用するプログラムを作成しなさい. ただし,前問の関数を利用すること. (5)char 型の配列の名前を引数として受け取ると, その配列に記憶されている文字列が回文ならば 1 を, そうでなければ 0 を返す関数を設計し その関数を利用するプログラムを作成しなさい. ただし,前々問の関数を利用せず, 直接,文字列中の文字を先頭と末尾から比較する方針を用いること. [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン:(cygwin) [3.3] 言語:C [4] 期限:(明日の15時まで) [5] その他の制限:
>>607 #include <stdio.h>
int main(void)
{
int i, j, sum;
for(i=1, sum=0; i<=100; i++) sum += i;
printf("1から100までの整数の和は%d\n", sum);
for(i=1, sum=0; i<=100; i+=2) sum += i;
printf("1から100までの奇数の和は%d\n", sum);
for(i=1; i<=20; i++) {
if(i<10) for(j=0; j<i; j++) putchar(' ');
else for(j=20; j>i; j--) putchar(' ');
printf("%d\n", i);
}
return 0;
}
612 :
607 :2008/06/24(火) 23:26:48
2進数変換の問題を出されました。。。基本的な部分は作ってみたのですが、完璧にできません…小数変換の工程などは手ではできるのですが… どなたかご助力宜しくお願いします。 [1] 授業単元:実験 [2] 問題文(含コード&リンク): 10進数を2進数に変換するプログラムを作成せよ。 その際、入力する10進数が小数点ありの数値(例:2.56)でも変換可能なものとする。 [3] 環境 [3.1] OS:XP [3.3] 言語: C [4] 期限: 08年06月27日 [5] その他の制限: 基本的に習ったことの利用がメインなので、特殊な関数などは使えません。原始的なアルゴリズムでないとだめなようです。 もちろん、構造体、配列、ポインタなどの基本は習いました。
作ってみたプログラムです。(また、どうしてもMSBに0が羅列してしまって…変換した数値のみを表示させたいのですが…。つまり、000000000000000000010110とかではなく10110と。) #include <stdio.h> const int BitSize = sizeof(int) * 8; // 整数型のビットサイズを算出 void dtob(int x) { int bit = 1, i; char c[BitSize]; for (i = 0; i < BitSize; i++) { if (x & bit) c[i] = '1'; else c[i] = '0'; bit <<= 1; } // 計算結果の表示 printf("2進数: "); for ( i = BitSize - 1; i >= 0; i-- ) { putchar(c[i]); } printf("\n"); } int main(){ int x = 0; do { printf("10進数を2進数に変換します(0で終了)\n"); printf("xの値: "); scanf("%d", &x); dtob(x); } while (x != 0); return 0;}
あ、すみません、 >613 = >614 です。
for(i=BitSize-1; c[i]=='0'; i--); //最初に1が出るまでスルー for( ; i>=0; i--) putchar(c[i]); //後は普通に表示
>616 レスありがとうございます! なるほど〜ちょっと改良してみます。 あとは小数点が問題ですね。。。 やっぱりとりあえず、整数部分と小数点以下をわけてスキャンしなきゃだめですよね
619 :
デフォルトの名無しさん :2008/06/25(水) 00:05:49
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 登録番号(int no)と名前(char *name)と年齢(int age)を含む構造体person型のポインタ変数を宣言し、登録人数分だけの動的メモリ確保をせよ。そして、データをファイルから入力せよ。 ファイルの形式は、先頭に登録する人数とし、そのあとに人数分のデータを登録番号、名前、年齢の順に書いていく(下の例を参照。登録番号は入力順に1,2,3,4,5,・・・とする。そして、入力した全員データを表示せよ。) (ファイルの例) 3 1 田中 20 2 太田 40 3 井上 35 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VisualStudio2005 [3.3] 言語:C [4] 期限: できるだけ早くお願いします。 [5]問題文でわかりにくいところがありましたら、聞いてください。
>>614 んー?その課題ってそういう解き方を期待してるのかな。
それでもいいんだけど、初歩的な段階ということを考慮すると
整数部なら2で割ったあまりをせっせと詰めていくように思えた。
小数部は2倍したものの整数部を詰める、みたいな。
その段階でビット演算でできるという発想をしたなら優秀な
生徒さん(もしくは経験者)なんだなあって思う。
// 皮肉じゃないです。念のため
何を習ったのかお前知ってるのかよw
622 :
デフォルトの名無しさん :2008/06/25(水) 00:25:57
[1] 授業単元:基礎プログラミング [2] 問題文 キーボードから2つの自然数を入力し、入力した値が10以下で2の倍数なら足し算 それ以外はかけ算させた結果を表示させるプログラムを作成せよ。 但し、if文を用いて自然数以外を入力したらエラー文を表示させる。 [3] 環境 [3.1] OS: Windows/linux [3.2] コンパイラ名とバージョン:VC++ 6.0/gcc [3.3] 言語: C [4] 期限:6/27 [5] その他の制限:入力はscanf、出力はprintf stdio.h よろしくお願いしますorz
>>621 あーもーそういう煽りが欲しいわけじゃなくてな。
関数、ポインタ習いました。とか原始的なアルゴリズムで、とか前置きしなきゃならない段階でしょ?
その段階でビット演算を直感的に理解できる子は少ないでしょ。
わかんないかなー。
学生の頃周りがどうだったか、自分がどうだったか思い出しなよ。
学校では習ってません独学です、ならビット演算をスムーズに理解できたのはいつのことだった?
>基本的に習ったことの利用がメイン って書いてあるのに、ビット演算を習ってないと思うほうがおかしいだろ。
>623 >624 さん方 お二人ともすみません(汗) 自分の書き方がまぎらわしかったです・・・ ビット演算は習っていません。 柴田先生の本を読みまして、 内部表現とビット などの説明あたりを読んでいるときに 先生が以前ビット演算でやればサマートなんだけどな・・・ブツブツと ボソっといってたのを思い出して、 それから少し自分で勉強してみました。 ですが、挫折しかけてこのサイトに、、です。(汗) というか途中で疑問に思ったのですが、なんでC言語には2進数で表示する機能がないのでしょうか・・・?
>>623 相手するだけ無駄
>>624 宿題解いてもらえなくて涙目なんですよね、わかります。
催促していいよw
628 :
613 :2008/06/25(水) 00:41:18
あ、ちなみに 原始的なアルゴリズム とはありますが、 たぶんビット演算くらいはOKかと思います。 先生は期待してはいないと思いますが…。 その、手計算でやるときのアルゴリズムと まったくそのままのほうが、わかりやすいのだとは思うのですが、 違う方向性でやりはじめてしまったので…。 最終的にダメそうなら、ホントに原始的な方向でいくつもりですが。
630 :
608 ◆k4INPBPZ3E :2008/06/25(水) 01:03:52
ヘルプ!ヘールプ!!!
>>629 void quicksort(int left, int right)
{
int i=0;
if(left >= right) return;
i = partition(left, right);
quicksort(left, i-1);
quicksort(i+1, right);
}
void mergesort(int l, int r)
{
int m;
if(l>=r) return;
m = (l + r) / 2;
mergesort(l, m);
mergesort(m+1, r);
merge(l, m, r);
}
>>631 あなたが神か
ありがとうございます!
超絶感謝!!!
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): (1)1つの整数を2進数に変換表示する関数convert(a)を作成せよ。そして、キーボードより任意の正の整数を入力し、 その整数の2進数が表示されるプログラムを作れ。 (2)1つの正の整数を素因数分解し表示する関数bunkai(a)を作成せよ。そして、キーボードから任意の正の整数を入力し、 その整数の素因数分解を表示するプログラムを作れ。 ------表示例------ 整数を入力: 50 50=2x25 25=5x5 5=5 5*5*2 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5 [3.3] 言語: C [4] 期限: 明日 [5] その他の制限:関数についての演習です。実は(1)に関しては十分な実行結果は得られました。 蛇足があれば指摘していただきたいです。
(1)の作成したプログラムです。(2)の参考になればよいのですが。 #include <stdio.h> void convert(int n) { if(n>1) convert(n/2); if(n==1) printf("1"); else printf("%d",n%2); } void main() { int n; printf("10進数を入力してください:"); scanf("%d",&n); printf("2進数に変換すると\n"); convert(n); }
>>628 手作業で小数を2進数に変換することができることに加え、浮動小数点のビット列が
どのように構成されてるかを理解する必要があるよ
それでもビット演算しますか?(y/n)
前回教えてくださったありがとうございます!! 以下のようなプログラミングはどのようにすればよいのでしょうか? 「組み合わせ」を求める数学の公式にコンビネーションがあります。このコンビネーションのプログラミングを教えてください! nとrをscanf()で読み、nCrの値を計算して表示させます。 条件として、nとrの値はマイナスでなく、またゼロでなく、さらにここではn<=10であることを確認させて、正しい数値を入力させる。もし誤った数値を入力したら「入力ミスです」と表示させる。 0!=1も扱えるようにすることを忘れない。 これもよろしくお願いします
639 :
613 :2008/06/25(水) 02:12:31
>637 はい…そこなんですよ…。 それが頭いっぱいになって、ここにたどり着きました。。。 1年間アセンブリ言語をやっていたことがあって、 そのとき浮動小数点に苦労しました。。。 でも原始的なアルゴリズムよりもスマートに、短くできるんだったら 大変興味があります。なのでとりあえずやりたいと考えます。
640 :
613 :2008/06/25(水) 02:23:50
ちなみに 丸め誤差については特にいわれてないのですが、 4ビット程度表示できればいいかなぁと考えています。
前スレの人?
>>641 yを求めた時のiの値とxn[i],xn[i+1]とxの関係を考えてみろ。
っていうか前スレのヤツならなんできちんと写さない?
644 :
613 :2008/06/25(水) 02:37:40
>642 え、自分でしょうか?? 自分はこのスレ、はじめてです。(検索で見つけました)
いや641のこと。
646 :
613 :2008/06/25(水) 02:38:42
あ、すみません m()m
東京高価万歳 凄いぞ東京高価
ニヤニヤするぐらいならどこがおかしいか指摘ぐらいしたら?
おかしくなんかないよ、ただ、おそらく等差数列の差を使うとか 一番最後は工夫すりゃif else 不要
ループの中にムダな分岐つっこんで効率と可読性下げるより、あのままで十分だと思うけど。
652 :
デフォルトの名無しさん :2008/06/25(水) 04:12:17
>>650 これでいいですか><?
for(i=1;i<=20;i++)
printf("%*s%d\n",i<=10?i:20-i,"",i);
654 :
590 :2008/06/25(水) 06:42:59
>>600 えっと・・・完全2分木っていうのは葉以外の全てのノードが枝を2つ持っている事が必要十分条件ではないのですか?
それならば一部のパスだけが長いという場合も考えられますよね。
それとも左右対称の三角形みたいな形の木になることを意味しているんでしょうか。
完全二分木は、「すべての葉の深さが等しい二分木」という定義が普通だと思う
AVL木とか赤黒木なら回転を伴うが常にバランスした二分木が作れる 何も考えずに昇順に挿入したりするとリスト構造の高価なシミュレーションになる
あ、質問の意図を誤解してたかも NlogNじゃねーの?
>親ノードから左右の >子ノードの中身を比較することで、完全2分木中の任意のノードの探索が行えるとする この意味が分からん 「左右の子ノードの中身を比較」ってどういうことだろう 普通の二分探索木なら簡単に解ける 完全二分木の高さをhとすると、N=2^h-1だから、h=log2(N+1) 比較回数の最大値は高さと同じだから、log2(N+1)回
>fscanf(fp, "%s", p->name);
#include<stdlib.h>いれろよ
662 :
デフォルトの名無しさん :2008/06/25(水) 10:38:17
[1] 授業単元: プロC演習 [2] 問題文(含コード&リンク):() # 下記のようにキーボードから4桁の10進数の入力を2回受付ける. Input the 1st value > 6479 Input the 2nd value > 1497 但し,4桁の各位の数は必ず互いに異なるものが入力されるとする. # 入力された数値に対して,次のようにに定義する「ヒット数」と「ホームラン数」を求める. * ホームラン数: 二つの数字を同じ位ごとに比較した場合,何ヶ所の位について一致してるかを表す. * ヒット数: 二つの数字を異なる位同士で比較した場合,一致している組み合わせの数を表す. 例 1234と1234のとき,0ヒット4ホームラン 1234と4321のとき,4ヒット0ホームラン 6479と1497のとき,2ヒット1ホームラン # ヒット数とホームラン数を下記のように表示する. 2 hit(s) 1 home run(s) [3] 環境 [3.1] OS: WindowsVista [3.2] コンパイラ名とバージョン:Cygwin gcc [3.3] 言語: C [4] 期限: 6月26日正午 [5] 現時点で習ってるのは、条件分岐、繰り返し、配列、ソート、ポインタまでです。 よろしくお願いします。
663 :
デフォルトの名無しさん :2008/06/25(水) 10:54:32
memcpy(n1,n1,sizeof(int)*2*3); memcpy(n1+(2*3),n2,sizeof(int)*2*3); これって何やってるの? 調べたんだけどよくわからないです…
664 :
デフォルトの名無しさん :2008/06/25(水) 11:12:06
だれか610を助けて…
>>610 #include <stdio.h>
#include <string.h>
/*1)*/ int getUpper(){ int r=getchar(); return 'a'<=r && r<='z' ? (r-'a'+'A') : r; }
/*2)*/ void showReverse(char *s){ int i; for(i=strlen(s)-1; i>=0; putchar(s[i--])); putchar('\n'); }
/*3)*/ void letReverse(char *P, char *R){ int i,k; for(k=0, i=strlen(P)-1; i>=0; R[k++]=P[i--]); R[k]='\0';}
/*4)*/ int isCircular(char *s){ char *r=(char*)malloc(sizeof(char)*(strlen(s)+1)); int ret; letReverse(s,r); ret=strcmp(s,r)==0; free(r); return ret; }
/*5)*/
static int isCircular2s(char *s1, char *s2){ if(s1>=s2) return 1; else{if(*s1==*s2) return isCircular2s(s1+1, s2-1); else return 0; } }
int isCircular2(char *s){ return isCircular2s(s,s+strlen(s)-1); }
// なんか色々関数を利用するプログラム
void checkCircular(char *s){ printf("%s is %scircular string.\n", s, isCircular(s) ? " " : "not ");
int main(void){
char rev[10];
printf("Hit keyboard: ");fflush(stdout);
printf("getUpper() is .. %c\n", getUpper());
showReverse("abcde");
letReverse("a1b2c3", rev);
printf("reverse a1b2c3 = %s\n", rev);
checkCircular("abcba"); checkCircular("12321");
printf("12321 is %scircular string.\n", isCircular2("123321") ? " " : "not ");
}
667 :
デフォルトの名無しさん :2008/06/25(水) 12:56:24
>>666 神様ありがとう!
でも分けかからんww 勉強せねば…
>>662 #include <stdio.h>
int main(void)
{
char value[2][5];
int i, j, hit = 0, homerun = 0;
printf("Input the 1st value > ");
scanf("%s", value[0]);
printf("Input the 2nd value > ");
scanf("%s", value[1]);
for(i=0; i<4; i++) {
for(j=0; j<4; j++) {
if(value[0][i] == value[1][j]) {
if(i == j) homerun++;
else hit++;
}
}
}
printf("%d hit(s) %d home run(s)\n", hit, homerun);
return 0;
}
669 :
デフォルトの名無しさん :2008/06/25(水) 14:53:44
[1] 授業単元:計算機システム [2] 問題文(含コード&リンク):擬似シェル(UNIX上で動く)を作る 必要な機能 ・リダイレクト(>>、>、<) ・パイプ(|) ・パイプは複数つなげるように ・できればcdやaliaseも。 [3] 環境 [3.1] OS:UNIX [3.2] コンパイラ名とバージョン:gcc 3.4.6 [3.3] 言語: C [4] 期限:明日の午前中 [5] その他の制限: リダイレクトとパイプの実装ができません。 お願いします。
> 1.gettimeofday関数を用いて、サイズ5000の配列を用い、 それを100000回程度繰り返して、 倍精度浮動小数乗算の演算性能を測定し、それをMFLOPSで求めよ。 > また、使用したプログラムも提出せよ。 におんごでおk
672 :
670 :2008/06/25(水) 15:25:06
673 :
◆DuoCt8/SKk :2008/06/25(水) 15:41:19
>>625 if (a <= 10 && a % 2 == 0 && b <= 10 && b % 2 == 0)
(・∀・)ニヤニヤ
675 :
634 :2008/06/25(水) 17:55:45
一応途中まで作ってみました。 問題は最後の一行(素因数展開の表示:ex.「5*5*2」)なんですけど・・・ 配列作って素数を入れてかないと駄目ですかね? #include <stdio.h> void bunkai(int n,int i) { if(i==n){ printf("%d=%d\n",n,n); } else if(n%i==0){ printf("%d=%dx%d\n",n,i,n/i); bunkai(n/i,i); } else bunkai(n,i+1); } void main() { int n,i=2; printf("整数:"); scanf("%d",&n); bunkai(n,i); }
うpロダー使えYO!
678 :
634 :2008/06/25(水) 18:07:06
すいません、自己解決しました。
いや、もうおせーYO!w
681 :
637 :2008/06/25(水) 18:22:06
682 :
637 :2008/06/25(水) 18:25:58
補足で、doubleが8byteであることを期待したコードになってる箇所がいくつかあります。 sizeof(double)やってたりやってなかったりで汚いんですが、 そもそも8byte以外だった場合にビット構造がどうなるのか知らないので8byteな環境 以外でどうなるかわかりませんです。 誰か教えてくれるとありがたいです。
684 :
637 :2008/06/25(水) 18:38:29
累計 50 49 48 47 46 45 44 43 42 41 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 累計 を一次元配列のみを使ってどうやって書けますか?
>>685 ずれてすみません
縦累計と横累計ということです><
688 :
デフォルトの名無しさん :2008/06/25(水) 18:59:59
http://x68000.q-e-d.net/~68user/net/c-ftp-1.html をみてCでftpクライアントのプログラムを作成しましたが
サンプルソースの224行目が実行されて
「150 Opening ASCII mode data connection」がサーバから返却された後
226行目が実行されて
「226 Transfer complete」がサーバから返却されるまで180秒かかってしまいます。
何故でしょうか?
サーバはredhatlinux上でProFTPD 1.3.1が動いています。
クライアントは上記サーバと兼ねています。下記のようなログがでます。
<-- 220 ProFTPD 1.3.1 Server (ProFTPD Default Installation) [127.0.0.1]
--> USER ユーザ名
<-- 331 Password required for ユーザ名
--> PASS パスワード
<-- 230 User ユーザ名 logged in
--> PORT 127,0,0,1,229,242
<-- 200 PORT command successful
--> RETR ファイル名のフルパス
ファイルの中身
<-- 150 Opening ASCII mode data connection for ファイル名のフルパス (13 bytes)
<-- 226 Transfer complete(これが出るのは1つ上の行が出力されてから180秒後)
--> QUIT
<-- 221 Goodbye.
>>688 なぜここに?
とりあえずサーバのログおよびパケットキャプチャをしてみて原因探るしか。
>>687 あ、同じですね><
明日提出なんですがさっぱりなんです
>>691 ありがとうございます
まだ入門編なので、複雑でよく分かりません><
これ以上簡単に表現できないのですか?
>>692 理解しようとする気があるならちゃんと授業中に理解しようね
教員には「沢山勉強してわかるようになりました」って言っておけばなんとかなる
>>693 すみません
自力でやってみます
ありがとうございました><
#define が見慣れないだけか?ROWを10にCOLを5に書き換えれば良いが もちろんそれが分かっていれば、そんなことせんでROW と COL で定義し 後はそれらを変更することでそれに応じて結果を出すソースのままにしときゃええがな
696 :
デフォルトの名無しさん :2008/06/25(水) 20:41:00
>>695 #defineは分かります!
tr,tcというのはトータルという事ですね。事故解決しました!
ありがとうございました
699 :
デフォルトの名無しさん :2008/06/25(水) 20:52:03
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 構造体person型を自己参照的構造体(下の例を参照)にし、配列に入力していたデータを単方向連結リスト構造に入力せよ。 ファイルからデータを入力したリストの先頭を引数として、入力した年齢と一致する人物をリスト内から検索し、該当人物がいれば表示するプログラムを作れ。 自己参照的構造体とは、構造体のメンバの中に自分と同じ型の構造体のポインタ変数を持つ構造体のことである。 単方向連結リスト構造とは、自己参照的構造体で次の要素をポインタを使って一定の方向に辿るデータ構造である。 (読む込むファイルの例) 入力するリストの先頭 1 20 田中 2 40 大田 3 35 井上 7 60 斉藤 4 23 佐藤 (自己参照的構造体) struct person{ int no,age; char name[40]; struct person *next; } [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VisualStudio2005 [3.3] 言語:C [4] 期限: できるだけ早くお願いします。
>>704 >[4] 期限: できるだけ早くお願いします。
じゃね?w
[1] 授業単元: Cプログラミング演習 [2] 問題文(含コード&リンク) 2^nの計算 n=0〜30に対して、2~nを計算して出力する。結果の最大桁数は10進数10桁であるので、 long int型の変数をしようすること。 なお、再帰法を用いてもよい 実行例 2** 0=1 2** 1=2 2** 2=4 ・ ・ ・ 2**30=1073741824 [3] 環境 [3.1] OS: (Windows vista) [3.2] コンパイラ名とバージョン: (visual studio 2005 ) [3.3] 言語: (C言語) [4] 期限:明日まで [5] その他の制限: (シンプルなプログラムでお願いします)
710 :
613 :2008/06/25(水) 22:15:54
>>637 (
>>684 )
ありがとーございますっ!
自分もcygwin(windows)でコンパイルして、
それなりに検証しましたが、十分機能しているようです!
あとは自分で一文ずつ動きを見て、内部表現を書き出し、
改良していこうかと思います。
えっと、doubleは64bitの8byteであっていたかと思います。
なんにせよ、ありがとうございました!!
>>709 #include <stdio.h>
int main()
{
int i;
long int n = 1;
for (i = 0; i<=30; i++)
{
printf("2** %d=%d\n", i, n);
n *= 2;
}
return 0;
}
712 :
637 :2008/06/25(水) 22:18:35
>>710 きれいじゃなくてごめんね。
やったことない内容だったのでこちらも楽しめました。
こちらこそありがとうw
>>713 シンプルなプログラムだから
これでいいのだ
716 :
711 :2008/06/25(水) 22:23:38
>>713 言うのは勝手だが、せめてパッチぐらいおいてって欲しかった。
9,10c9
< printf("2** %d=%d\n", i, n);
< n *= 2;
---
> printf("2** %d=%d\n", i, 1 << i);
>>713 勝手に自分基準でスマートとかぬかしてんじゃねーよw
718 :
711 :2008/06/25(水) 22:24:40
ちょw擁護されてたwありがとうwww
720 :
709 :2008/06/25(水) 22:26:55
うお、早いですねw ありがとうございます。
まるで日本語、C言語トランスレータ君だなw
722 :
636 :2008/06/25(水) 22:38:06
どなたか636をお願いします。 期限は後日6/26午後3時です。 課題の追加・補足はありません。
724 :
709 :2008/06/25(水) 22:50:21
すいません、あと2問分からないのがあるので できればお願いします。 [1] 授業単元: Cプログラミング演習 [2] 問題文(含コード&リンク) 2つの正の整数a,bを入力して、ユークリッドの互除法により最大公約数(GCM)を 求める。ユークリッドの互除法は次の手順により最大公約数を求める方法である。 (1)a,bの大きい方をa、小さい方bとする。 (2)aをbで割った余りをcとする。c=0ならばbが最大公約数となる。 (3)c≠0ならば a←b b←c として、(2)に戻る。 実行例 入力データ:a = 88 b = 256 GCM = 8 [3] 環境 [3.1] OS: (Windows vista) [3.2] コンパイラ名とバージョン: (visual studio 2005 ) [3.3] 言語: (C言語) [4] 期限:明日まで [5] その他の制限: (シンプルなプログラムでお願いします、ポインタなどはまだ使えません)
失礼します (1)階乗を再帰を用いずに表示 という問題なんですが教えてください。
printf("階乗");
ワロタ
728 :
636 :2008/06/25(水) 22:56:16
>>723 いえ、内容は指定の暗号文を復号するプログラムを作成せよです。
課題内容で仕様など不明な箇所があったら言ってください。
>>728 ようするに "KOUKA" がどこに隠れてるか探せばいいんですよね?
730 :
709 :2008/06/25(水) 23:12:49
もう1問。 すいません、よろしくお願いします。 [1] 授業単元: Cプログラミング演習 [2] 問題文(含コード&リンク) 直角三角形の斜辺の長さをc、ほかの二辺の長さをa、bとしたとき、 a^2 + b^2 = c^2 が成り立つ。これを三平方の定理という。 2以上100以下の整数a,b、cに対して a^2 + b^2 = c^2 を満たす組(a、b、c)をすべて求める。ただし、a≦b≦cとする。 max(a^2、b^2)≦ a^2+b^2 であるから、aとbの値を先に設定して、cの値をmax(a、b)から1ずつ増やし a^2 + b^2 = c^2 (解あり) または a^2 + b^2 < c^2 (解なし) となるまで変化させて求めればよい。 なお、cの値を先に設定して、aとbを求める方法もある。 実行例 a=3 b=4 c=5 a=5 b=12 c=13 a=6 b=8 c=10 [3] 環境 [3.1] OS: (Windows vista) [3.2] コンパイラ名とバージョン: (visual studio 2005 ) [3.3] 言語: (C言語) [4] 期限:明日まで [5] その他の制限: (シンプルなプログラムでお願いします、ポインタなどはまだ使えません)
732 :
636 :2008/06/25(水) 23:14:43
>>729 はい、そうですお願いします。
(例え)
暗号文:huisdfhnauid
アスキーコード1行ずらし:oujafkadmioafa これは×
アスキーコード1行ずらし:KOUKAkiasdfkao これは「KOUKA」が含まれているので複合化成功
この段階でアスキーコードをずらす処理を終了して、複合化結果の「KOUKAkiasdfkao」を表示する。
という題意です。
>>730 ばかしょうじきに。
#include <stdio.h>
int main()
{
int a, b, c;
for (a = 1; a <= 100; a++)
{
for (b = a; b <= 100; b++)
{
for (c = b; c <= 100; c++)
{
if (a*a + b*b == c*c)
{
printf ("a=%d b=%d c=%d\n", a, b, c);
}
}
}
}
return 0;
}
735 :
636 :2008/06/25(水) 23:21:18
>>731 ありがとうございます!!
それにしても動作させてみて笑いました、バレバレですねwww
まさかこんな痛い内容とは思いませんでした。
>>636 > 例えば「ABC]という文をアスキーコードを1つ後にずらすと「BCD」となる。
> このずらした数を総当りで探索すればよい。
KOUKA というなら Kが2つあるわけだから、当然ずらす前も
その該当の5文字には同じ文字が1文字目と4文字目にあるわけだが
暗号文:huisdfhnauid
ん〜〜〜・・・、小文字と大文字両方含まれる?
737 :
731 :2008/06/25(水) 23:23:56
>>732 その例を見ると俺が作ったの全然ダメかもしれない。
1行ずらしとやらを行うと文字数増えるの?
あと問題付属のソースコードが構文エラーありまくりでした。
>>735 とおもったらこれでいいのかよ!
738 :
636 :2008/06/25(水) 23:27:13
>>736 あ〜それは例えの暗号なので解けない&解はないです。
暗号文自体は「KOUKA]の文字列が入っていれば複合化成功なので、
大文字だけ、小文字だけ、大小文字混合のどれでも大丈夫だと思います。
とくに指示はなかったので
739 :
636 :2008/06/25(水) 23:29:53
>>737 まぎらっこしくてすいません。
自分は
>>731 の回答で満足なので、本当にありがとうございます。
>>724 入力方法が記載されていなかったのでカンマ区切りで入力するようにしました(ex. 4,24)
#include <stdio.h>
int main()
{
int ia, ib;
int a, b, c;
scanf("%d,%d", &ia, &ib);
if (ia >= ib) {
a = ia; b = ib;
}
else {
a = ib; b = ia;
}
c = a % b;
while(c != 0)
{
a = b;
b = c;
c = a % b;
}
printf("入力データ:a = %d\nb = %d\nGCM = %d\n", ia, ib, b);
return 0;
}
741 :
デフォルトの名無しさん :2008/06/25(水) 23:39:48
1] 授業単元: c言語 [2] 問題文(含コード&リンク):固定長テキスト形式のファイルの内容を構造体に読み込むプログラムを作成しなさい. [3] 環境 [3.1] Windows [3.2] VC 6.0 [3.3] 言語: C [4] 期限: 6/26 12:00 [5] その他の制限: 固定長テキスト形式のファイルの内容を構造体に読み込むプログラムを作成しなさい
>>741 ファイルのレイアウト、もしくは構造体のレイアウトを提示すべきだと思う。
679です。どなたかよろしくお願いします…。
>>743 1
1文字ずつチェック
ヒットしたらカウンタ++
2
1行ずつチェック
ヒットしたらカウンタ++
745 :
デフォルトの名無しさん :2008/06/25(水) 23:55:13
>>742 すいません。
typedef struct{
int num;//出席番号
char class;//クラス
char name[14];//名前
}meibo;
構造体はこんな感じです。
ファイルには最大10人分のデータがあります。
よろしくお願いします
>>739 っつか、暗号文すべてを復元したのを比較するよりも
KOUKAを暗号化して、その暗号化されたものを含む場合で
判断した方が、暗号化する文字数を減らせないか?
>>744 ううう…どうにも思い浮かばないんだな。
だからここのスレに質問してるんだな。
プログラムお願いしますなんだな…。
752 :
709 :2008/06/26(木) 00:29:55
>>746 減らせますね。そのように作ってコードを載せてからいいましょうよ。
>>755 > コードを載せてからいいましょうよ。
はぁ?コードを書いたわけでもないお前に言われたくねーよ
お前こそ言うくらいなら書けよ
>>753 strcmp使わないでわざわざ効率悪い関数自作するのはなんで?
760 :
755 :2008/06/26(木) 01:14:54
>>758 > strcmp使わないで
使ったのをお前が書けば良いだろ、果たして うまく いくかな?w
口先だけってのはそういうことだ。
本人じゃないとわめかれても困るのでソース削除しといた。
>>762 それがstrcmp使わないでnamecmpを使う理由だと思っていいのかな?
strcmpじゃ比較がうまくいかないと。
1人幼い子がますね
>>762 あ、もしかしたらstrncmpと勘違いしてるかも?
strcmpは完全一致したときだけ0返すお。
namecmpが桁数チェックとかしてるのって
strncmp("abc", "abcd", 3)が0返す挙動に対する考えに見える。
違ったらごめんね。
ただ、だからといってstrcmp使えよとは言わないけどなあ。
あくまでも宿題やってるうちは車輪の再発明万歳だと思うし、
俺が教授なら努力賞あげる。
>>759 ありがとうございます
申し訳ないんですが、
何故 printf("%*c ",w,0x20); の"%?"は1つしかないのに後ろに2つ値があるんですか?
普通は printf("%d",12);みたいな感じで1対1じゃないんでしょうか?
ショボイ質問ですが分からないので教えて下さい。
strncmpって一致したのにfalseを返すのかって一時思ってたことがある
>>766 <string.h>使わないならともかく、使ってるんじゃ再発明もないと思うがなあ
>>768 その%dの間にある * は、%3d といったように、最低の桁数を指定できる書式。
後ろの引数には * で桁数を指定するのに w を用いている
最初に n から桁数を求めて w に入れている
この手法が駄目なら、wの分だけfor分を使ってスペースを入れるとか
>>772 そうだったんですかありがとうございます
問題の方なんですが
例えばn=10なら
2 3 4 5 6 7 8 9 10 11 12………98 999 1000 1001
と言うように
二桁の場合は2回スペース
3桁の場合は3回スペース
4桁の場合は4回スペース
というようにしたいのですがその場合も教えて下さいませんでしょうか?
大変すいません…
774 :
773 :2008/06/26(木) 01:59:39
>>773 間違えました
2桁なら3回スペース
3桁なら4回スペース
4桁なら5回スペース
でした…
>>774 んじゃ、そのときの最大公約数の桁数を求めて、最小限必要な桁数 w との
差をとって繰り返して入れてみては?さぁ考えてみよー
それよりも本当にそのように表示したいのかが気になるところではある 各列幅がnの桁数 + 1になるようにしたいなら分かるんだけどね
またおまいか、憶測野郎。自分が思った疑問なら何でも投げかける 自分が思った通りじゃないからという理由だけで。相手が既に こうだと言っているにも関わらず、自分はそれに対して こうするね、という意見を出すから、お前人の話聞いてんのかっ!? はぁ?俺はそんなことを聞いてんじゃないよって言い返される。 孤立する人間のパターンそっくりだな。
このスレで孤立してるのはお前だけだからw
779 :
773 :2008/06/26(木) 02:22:40
>>775 ますますわかりません…orz
>>776 上に書いた例はスペースの個数が反映されなく全て1回のスペースで書かれてしまいましたが
言おうとしてることはまさにそうです
できたら問題文を一字一句正確に写したものをあげてくれない?
>>778 自己紹介乙、そういう言い返しをする時点でバレバレなんだよ
782 :
デフォルトの名無しさん :2008/06/26(木) 02:36:16
>>750 [1]品質:未検証
[2]コード:直接記入
void main(void){
double n,i,j,a,b,tmp;
do{printf("n=(n>=3)");fscanf("%d¥n",&n);}while((n<3)||(n>=1000));
fprintf("%3 s ","");
for(i=3;i<=n;i++)printf("%-3d",i+1);
printf("¥n");
for(i=2;i<n;i++){
sprintf("%3d:",i);
for(j=3;j<i+1;j++)printf("%3 s","");
for(j=i+1;j<=n;j++){
a=i;b=j;
whlie(a!=0){tmp==b % a;b==a;a==tmp;}
fprintf("%-3d",b);
}
printf("¥r");
}
return 0;
}
[3] Windows Visual C++ 6.0 Cモードコンパイルを想定
[4]すんごく難しい課題でした。ユークリッドのアルゴリズムは
良くわかりません。参考にどーぞ
あくまでオプション的な事なのでできる人だけやれと講義の最後に口伝えで言われたので書くにも書けないんです…すいません 言ってたことは 各幅が nの桁数 + 1 です。
>>785 マジでありがとうございます。
マジで感謝します。
っつか、やっぱ普通に %*d 使えYO!w
>>788 > それで本当にいいの?
またお前か・・・自分がレスしている相手のレスが見えんのか?
誰でも同一人物認定して噛み付くからな。
>>789 お前には聞いてねーよ、引っ込んでろカス
>>783 void main ひょっとしてギャ(ry
もうお前らトリ付けろよwww IDがないからグチャグチャだぜ…
>>792 誰でも同一人物認定して噛み付くからな。
っつか、なんか最近必死な奴が紛れ込んだよなw
新学期、4月を境に分かりやすいw
2ちゃん慣れしてないだろ、こいつ?
前々からこのスレを見ている人にはバレてんぞ、ヘタレ小僧
もちっと 煽り耐性 を身につけてから出直せ。
でなきゃ、こんな場所じゃまずやっていけないよ。
お前みたいな揚げ足取りもいるからな。
長文書いて、レス回数が一番多いヤツのことを必死って言うんだよw
>>1 > 気に入らない質問やその他や発言はスルーの方向で。
おいっ、新入りファビョり厨、↑が読める?読めない?w
ttp://jp.youtube.com/watch?v=RIL28wqOQGA ファビョり厨「読めないわけないだろっ!お前日本語知ってのかっ!?日本語でおk」
ってなるのがオチだからな。触らぬ神にたたり無し、日本語が読めない奴は以後スルーで。
ここでは時には エスパー も必要さ、(チェリー)ボーイ?
あと、特徴がモロに出てるよ。余計な一言、罵倒。バカ、アホ、カスなど
陰湿に、不必要に相手を煽る、罵る。その時点でバレてるって言っただろ?
人格、人間性が言動に出ているとあれほど忠告したのに、駄目な奴は何をやっても駄目なんだな。
「またお前か」←これはもう勘弁してくださいwww
彼のいうエスパーとは、一般人なら普通に理解できる
>>26 のすまんの意味が理解できずに
>>34 >>37 とファビョることですw
>>797 全部、お前が言うなwってことだらけじゃねーかw
801 :
790 :2008/06/26(木) 03:10:44
そして俺は32だったりするw
おまえらもう寝ろ こんな時間にからかって遊ぶな
>>789 うpして2分後のレスで実行して動作チェックまで完璧にしたと思うのか?
ただソースがあがってるのを見て御礼しただけの可能性の方が高いだろ。
>>804 > うpして2分後のレスで実行して動作チェックまで完璧にしたと思うのか?
あのソースをコンパイルして実行したのなら、今になってそれすら言っても
説得力ねーよ・・・またお前は憶測で物を言ったな。相手がしていないという証拠は?
何もかもがお前の思い込みだって気づけよ。
807 :
802 :2008/06/26(木) 03:19:35
回答者もテンプレに従えとは言わんが、 アンカー+直リン||直ペーストだと 通りすがりの女の娘に声をかけて、股間を指差して見せて喜ぶ 露出狂のオヤジみたいで、スレが荒れる傾向にある。 やはり、コード品質とかコメントとか、書いてやったほうが いいんではないかい?
コメントも情報も何も無しでソースだけ見せられてもな 回答者自身のソースが無駄になるだけ てか、自分が○○だから他人も○○だ、なんて考え持つなよ
まぁ、麻呂のクソースにはいくら突っ込まれようが 初心者レベルに落としたクソース ということで免罪符を貼ってます故 意見されても訂正する気がござらんので、言うくらいなら 訂正して賜う
麻呂のソースは初心者レベルじゃねーだろ。 間違った方向に勘違いした初級者レベルってところだ。
>>813 > 間違った方向に勘違いした
お前が理解できないだけだろ。妬み僻みをあらわす発言がしてたのお前だろ?w
>>813 > 初級者レベル
言うまでもない、無理に初心者っぽくしているとは言え
何が初心者か?なんて基準がないから。
にしても、貶しすぎ。お前のレベルの低さが露呈しているぞ。
麻呂で行くのかファビョるのかどっちかに統一しろよw
>>813 何か言わなきゃ気が済まないんだよな、お前って。
マジうざい。だから周りから嫌われているって気づけよ、基地外。
そこまで言うなら、お前は必ずソースを書けよ、意見をする前に。
そして意見をするなら。間違いの指摘という指摘すらせずに
そんなのは、って自分の主観でしか言わんだろ。
あれだろ、意見をすると自分の無知を露呈するから怖くて
そんなのはと自分が気に入らなきゃ蹴るタイプだろ?
そんな奴は人生を失敗した負け組みくらいだぞ。
>>813 前に、LISTの課題で、CSV形式とバイナリー形式での保存のときに
必死に噛み付いていて、結局お前が答えずに口先だけで負けたから
悔しいんだろ?初心者レベルに落とすってのがどれだけ難しいか
一度知ってしまうと、便利なものは使わずにはいられないもんだぞ。
ましてや、それが費用が掛かるわけでもなく、単にコードを記述するだけ。
お前のような他人を貶すような口出しをする奴は、人間としてもレベルが高くないどころか
ワレこそはと、自分の主観や主張のみを押し切るタイプだろ。
すみません
どなたか
>>749 お願いできないでしょうか
そうやって過去スレのリンク張るってことは専ブラ使ってるのか…… 一度今までの自分の書き込みを冷静振り返ってみることをお勧めするよ。
"に"が抜けた。 冷静 → 冷静に な。
意見、いちゃもんをつけるくらいなら自分が書け。 相手に意見をするなら、それのどこが客観的にかつ 動作する上で問題か、指摘しろ。 もっとこう、効率の良いものはあるよといわれても 所詮このスレは初心者向け。標準ライブラリを用いても それを使うなという注文もあるが、確かにそれに応じずとも 良いといえば良いが、ここで初心者をバカにしに来ているなら 性格が捻じれてんぞ。まぁ、過去にあんたが誰かにやられたのかも しれんが、そんなの知ったこっちゃねーだろ、第三者には。 無関係な奴を罵倒するなよ?なぁ、最後に必ず罵倒レスを入れなきゃ 気が済まないあんた?
無視してりゃそのうち自分が惨めになってどっかいくでしょ
>>1 > 気に入らない質問やその他や発言はスルーの方向で。
日本語も読めない奴が、コードを読解する能力があるとも思えん。
>>624 酷い言い掛かりだ。こりゃ嫌われるぞ。
いい加減、新学期から来ているなら3ヶ月以上経っているんだから
このスレの基本的な流れを理解しようや?お前一人が回答者じゃないんだぞ。
>>1 >気に入らない質問やその他や発言はスルーの方向で。
[1] 授業単元:Cプログラミング [2] 問題文:入力された文字列(char型配列に格納)について、1文字ずつその文字の種類を示し、最後に文字数を表示するプログラムを作成せよ。 文字の種類は大文字、小文字、数字、その他の文字の4種類とすること。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:2008年06月27日いっぱい [5]配列と文字列まで習いました。ポインタや構造体は習ってません。
#include <stdio.h> #include <ctype.h> int main(void) { char str[256]; int i; scanf("%s", str); for(i=0; str[i]; i++) { if(isupper(str[i])) printf("%c : 大文字\n", str[i]); else if(islower(str[i])) printf("%c : 小文字\n", str[i]); else if(isdigit(str[i])) printf("%c : 数字\n", str[i]); else printf("%c : その他の文字\n", str[i]); } printf("文字数 : %d\n", i); return 0; }
>>830 さんありがとうございます、参考にさせていただきました。実はもう一つできなかった問題があるのですが、
1] 授業単元:Cプログラミング
[2] 問題文:2つのchar型配列x[],y[]に格納された文字列を入れ替えるプログラムを作成せよ。ただし入れ替え処理には関数swap_array(char [],char [])を作成して用いること。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
なのですができたらでいいので宜しくお願いします。
>>829 解決済みみたいだけど・・・
ascii文字コード
http://e-words.jp/p/r-ascii.html #include <stdio.h>
int main()
{
char STR[256];
int i;
printf("文字列を入力してください。\n");
scanf("%s",STR);
for(i=0; STR[i]!='\0'; i++){
if(65 <= (int)STR[i] && (int)STR[i] <= 90)
printf("%c は大文字です。\n",STR[i]);
else if(97 <= (int)STR[i] && (int)STR[i] <= 122)
printf("%c は小文字です。\n",STR[i]);
else if(48 <= (int)STR[i] && (int)STR[i] <= 57)
printf("%c は数字です。\n",STR[i]);
else
printf("%c はその他の文字です。\n",STR[i]);
}
printf("文字数は %d です。\n",i);
return 0;
}
>>831 swap_array(char a[],char b[])
{
char *tmp;
tmp = malloc(strlen(a)+1);
strcpy(tmp, a);
strcpy(a, b);
strcpy(b, tmp);
free(tmp);
}
>>832 >>833 ありがとうございます。
>>831 の実行結果なんですが、
文字列x(20字まで)?適当な文字列
文字列y(20時まで)?適当な文字列その2
関数swap_array()を呼び出しました
入替後のx:適当な文字列その2
入替後のy:適当な文字列
となるような結果にしたいのですが。
>>834 mainも書けってことか?
int main(void)
{
char x[21], y[21];
printf("文字列x(20字まで)?");
scanf("%s", x);
printf("文字列y(20字まで)?");
scanf("%s", y);
puts("関数swap_array()を呼び出しました");
swap_array(x, y);
printf("入替後のx:%s\n", x);
printf("入替後のy:%s\n", y);
return 0;
}
>>836 すみませんでした
>>833 のソースの意味が理解できていませんでした。
できればswap_array関数だけでなく、その関数を呼び出すプログラム含め全体のソースが知りたいのですが。
839 :
833 :2008/06/26(木) 10:48:32
voidつけるの忘れた 20時が門限なら void swap_array(char a[],char b[]) { char tmp[21]; strcpy(tmp, a); strcpy(a, b); strcpy(b, tmp); } でもいいや
>>837 ありがとうございます。とてもよく分かりました。
>>838 の質問はなかったことにしといてください。ご迷惑をおかけします。
>>835 #include <stdio.h>
int main(void){
char moji20[21];
wile(1){
printf("入力データ:");
fflush(stdout);
scanf("%s", moji20);
printf("出力データ: %d 文字", strlen(moji20));
}
}
831と似た内容なんですけど格納された文字列xと文字列yを入れ替えるのではなくて文字列xの最後に文字列yを連結させる場合はどうすればいいでしょうか? ちなみに使っている関数はstringcat(char[],char[])で呼び出すときに連結後の文字数が20字を超えたら「連結付加」と表示するようにしたのですが
>>842 つなげる前に文字列の文字列xとyの文字数を調べればいいだけのような
>>841 ありがとうございました。
4行目while(1){でしたYO!
[1] 授業単元:ネットワーク応用 [2] 問題文: インターネットに接続されたPC同士で、同一のアプリケーションの状態を、 同期・共有させるソフトウェアの作成 つまりはフォトショップを持っている人同士で、高度なお絵かきチャット を出来るようにするソフトみたいな。 [3] 環境 [3.1] OS: Windows [3.2] VC++ 2005 [3.3] 言語: どちらでも可 [4] 期限: 7月1日 [5] その他の制限: 特になし どういったことをすればそういうことが実現出来るのか、 についても可能であればご教授賜りたいです
[1]コードレベル:(ヒント/未コンパイル/コンパイル可能確認/ 典型ケース確認済/多ケース確認済/リファクタリング済(変数の使い方 の見直し、フローの再設計etc)≒清書) [2]コード:アップローダーを使う場合でも、核心部分だけでも書く。 書式は多少乱れても良いが、ギチギチに圧縮はしない。 アップローダー上のファイルが保存される保証は無いから。 これについては質問者も同様で、質問の概要でも書いておくこと。 別の組織が運営しているサイトへのリンクポインタ配列のように 掲示板を利用するのはやはりマナー違反(おとり潰しの対象に なりますよ) [3]環境:コンパイルに使用したコンパイラ、OSなど。特に C/C++のどちらのモードでコンパイルしたのかは必ず [4]コメント/説明
[1] 授業単元:cプログラミング
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7084.txt ・部分木p から最小のキーを持つノードを削除した部分木を返す関数deleteMinNode を作成せよ.
・上の資料等 を参考にして,コマンドライン引数で指定したキーを持つノードを2 分探索木から削除するプログラムを作成せよ.
ただし,プログラム引数の「整数1 整数2 …」の各値をキーに持つノードを順に挿入して2 分探索木を生成し,
deleteNode 関数を使ってコマンドライン引数の「X1 X2 …」の各値をキーに持つノードを順に2 分探索木より削除する.
また,次のようなプログラム実行例を想定している.
% ./a.out 9 5 11 3 4 15 10 -- 4 5 9
入力データ [9 [5 3 _ 4] _ ] [ 11 10 15 ] ]
deleteNode(4)
==> [9 [5 [ 3 _ _ ] _ ] [ 11 [10 _ _ ] [ 15 _ _ ] ] ]
deleteNode(5)
==> [9 [ 3 _ _ ] [ 11 [ 10 _ _ ] [ 15 _ _ ] ] ]
deleteNode(9)
==> [10 [ 3 _ _ ] [ 11 _ [ 15 _ _ ] ] ]
%
% ./a.out 9 5 11 3 4 15 10 -- 8
入力データ [9 [5 3 _ ] [ 11 _ 15 ] ]
deleteNode(8)
deleteNode: 指定キーのノードがありません
[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まで] または [無期限] のいずれか)
6月30日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
852 :
デフォルトの名無しさん :2008/06/26(木) 17:52:46
>>851 です。
期限28日×→27日○ でした(;゚Д゚)
>>808 遅くなりましたがありがとうございます!
思ったんですが制限の20回を外して無制限にするにはどうすればいいのですか?
856 :
◆DuoCt8/SKk :2008/06/26(木) 18:58:32
>>852 >>855 回答ありがとうございました.しかしながら以下のようなエラーが出てしまい困っています.
どうしたらいいでしょうか?
c:\program files\microsoft visual studio\vc98\include\string.h(4) : warning C4182: #include のネスト レベルは 363 です; 無限再帰の可能性があります。
c:\program files\microsoft visual studio\vc98\include\string.h(4) : fatal error C1076: コンパイラの制限 : ヒープの領域を使い果たしました; 上限を設定するために /Zm オプションを使用してください。
857 :
デフォルトの名無しさん :2008/06/26(木) 19:19:05
>>696 です。。
どなたかお願いできないでしょうか?
>>849 返答ありがとうございます
でもすいませんが文字化けして見えないんですが…
860 :
855 :2008/06/26(木) 19:43:13
>>856 エラーメッセージは「ヘッダが繰り返し読み込まれて…」と言ってるのだけど
環境違うんでどうするのがいいかはまでは分からんです。
ヘッダ読み込んでるのは標準関数のmalloc,memset,memcpy,atoi使うためなんで
それらが使えるように適当に適当にヘッダ削ったり追加したりして下さいな。
もしくはvisual studioに詳しい方、お願いします。
861 :
◆DuoCt8/SKk :2008/06/26(木) 20:01:22
>>860 そうだったのですか,返事ありがとうございました.
>>標準関数のmalloc,memset,memcpy,atoi
標準関数はまだ習ってません……どうしましょう……
図々しいお願いかとは思いますが,どなたか
>>855 さんのプログラムを修正しては頂けないでしょうか?
もし良かったらでいいので,よろしくお願いします.
ただ一つ言えること
>>855 のソースをgccでコンパイル出来ない人が
Visual-Studioのような高度なC環境をまともに扱えるかど
うかは極めて懐疑的
Windowsでも、BCC5.5とかCygWinのgccとか
MinGWのgccとかのCコンパイラを使うことをおすすめする。
[1] 授業単元: プログラミング [2] 数字をキーボードから入力し、次に割る数を入力します。 最初の数字(suji1)が2番目の数字(suji2)で 割り切れるかどうかを判断するプログラムを作成しなさい。 注:最初の数字に大きい数を入力してください。 また、2番目の数字に0は入力しないようにしてください。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語:C言語 [4] 期限:今日中 急で悪いですが宜しくお願いします
865 :
◆DuoCt8/SKk :2008/06/26(木) 20:27:56
>>862 すみません,stringのヘッダを消せばいけるのですがその標準関数で
エラーが出てしまうのです.あとVisualStdioは学校の指定みたいな
ものなので,他の開発環境とか全然知らないんです.
>>863 はい
#include<stdlib.h>はあるか?
[1] 授業単元: C++プログラミング [2] 問題文:循環小数を検出するとき、繰り返される範囲を{,}でくくり出すプログラムを作れ 例:37/330 = 0.1121212・・・ = 0.1{12} [3] 環境 [3.1] OS: Windows XP SP2 [3.2] コンパイラ名とバージョン: VC++2007 [3.3] 言語: C++ [4] 期限: 6月27日 午前11時まで お願いします
869 :
デフォルトの名無しさん :2008/06/26(木) 21:19:49
>>867 ちょっと横槍ですまぬが、
その環境の精度の範囲内で良いんかな?
自分ところだと 1/31 は循環するが
精度の範囲内では循環しているように表示されない。
0.
032258064516129
032258064516129
>>870 環境の精度の範囲内で大丈夫です。
よろしくお願いします
どなたか782もお願いします
>>867 > 循環小数を検出するとき
して、どのように分数を指定するのかね?
適当に入力?それとも・・・1〜nまで総当り?
>>873 問い2
cが0のとき。
(問題文中に「文字列str」とあるので、strは正しい文字列と仮定してよい。)
char *str_char(const char *str, int c)
{
for ( ; *str != c; str++) {
if (*str == '\0')
return (char *)str;
}
return ((char *)str);
}
>>874 分数は適当に入力して、循環小数になる場合は{}でくくり出す感じです。
1/976=0.0010[245901639344262295081967213114754098360655737704918032786885] 1/977=0.[00102354145342886386898669396110542476970317297850562947799385875127942681 6786079836233367451381780962128966223132036847492323439099283520982599795291709314 2272262026612077789150460593654042988741044012282497441146366427840327533265097236 4380757420675537359263050153531218014329580348004094165813715455475946775844421699 0788126919140225179119754350051177072671443193449334698055271238485158648925281473 8996929375639713408393039918116683725690890481064483111566018423746161719549641760 4912998976458546571136131013306038894575230296827021494370522006141248720573183213 9201637666325486182190378710337768679631525076765609007164790174002047082906857727 7379733879222108495394063459570112589559877175025588536335721596724667349027635619 2425793244626407369498464687819856704196519959058341862845445240532241555783009211 8730808597748208802456499488229273285568065506653019447287615148413510747185261003 0706243602865916069600818833162743091095189355168884339815762538382804503582395087] 1/978=0.0[0102249488752556237218813905930470347648261758691206543967280163599182004 08997955]
880 :
864 :2008/06/26(木) 23:05:13
>>864 今日中だからガンバ
としかいいようがない。
方針はあってるが、
スペルミスなどが目につく
882 :
875 :2008/06/26(木) 23:13:40
こめんなさい、この答え間違ってますorz...
884 :
867 :2008/06/26(木) 23:23:09
[1] 授業単元: プログラム基礎
[2] 問題文 文字列のコピーを実現する関数として,char *myStringCopy(char *destination, char *source)をプログラミングせよ.
ただし,コピーに失敗したときにはNULLを返し,成功したときにはdestinationを返すものとする.
自分で作った関数を使うこと.strcpyやstrncpyを使わないこと.
例を参考にすること(あくまでも参考例なのでそのままコピーしても動かない.)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7094.txt [3] 環境
[3.1] OS: Windows/Linux/
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 6/27(金)20:00
[5] その他の制限: 問題文にもありますが、strcpyやstrncpyを使わずにお願いします
>>883 scanf("%s",...)で標準入力から読み込むとホワイトスペースで読み込みが停止するので
スペースを含めて読み込みたい場合は
fgets(speech,NMAX,stdin); とか
scanf("%[^\n]",speech); とかで読み込めばよろし
あとtypoに気をつけて
887 :
855 :2008/06/26(木) 23:59:07
if(b < a) return b; return a;
minってここ最近は関数で用意した覚えないな いつもマクロだ #define mMIN(a,b) ((a > b)?b:a)
891 :
144 :2008/06/27(金) 01:11:42
[1] 授業単元:) [2] 問題文(含コード&リンク):C言語で自動車エンジンの走行距離と走行時間による熱効率と燃費の算出 (エンジンのパワーと単位時間に消費される燃料の重さを入力して走行距離と時間に応じた熱効率を算出する。燃費は熱効率と逆数の関係にあるのでそこから求められる。) [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: Microsoft Visual Studio 2007 [3.3] 言語:C [4] 期限:2008/6/27 [5] その他の制限:課題に対する制限は特になし。
892 :
144 :2008/06/27(金) 01:12:31
度々失礼 今日大学で試しに作ってみたんだが、どうだろう? #include<stdio.h> #include<stdlib.h> #include<math.h> int main(void){ int i,k,H,h; double Ne,B,be,Fuel; Fuel=50.0; h=1;//h:走行時間 H=0;//総走行時間 Ne=24.6;//仮の値、//Ne:エンジン出力 B=8;//仮の値、//B:hだけ走ったときの燃料消費量 //be:正味燃料消費率 be=B/(Ne*h); while(Fuel>=0){ Fuel=Fuel-B; H=H+1; be=B/(Ne*h); printf("%ld\t%lf\t%lf\n",H,Fuel,be); } return(0); } ってかスレ違い??
>>886 素早い返答ありがとうございます
申し訳ございませんが何故 scanf("%[^\n]",speech); でおkなのでしょうか?
説明していただけないでしょうか?
>>892 俺は興味無いからやらんが、微分方程式解いた方が早いんじゃね。
896 :
144 :2008/06/27(金) 01:35:15
>>895 微分方程式ですか?
とりあえず発表に使うのに時間ないから一番簡単に文献に与えられてた式を用いたんですけど。
そっちのほうがいいんですかね?
>>891 燃費って走行距離/消費燃料なんじゃないの?
それ以外の何かを検討しないといけないのなら式が欲しい。
[1] 授業単元: 数理解析 [2] 問題文(含コード&リンク): 実対称行列の固有値問題に対するJacobi法のプログラムを作成せよ。 ※そして、5〜10次程度の実対称正方行列に対しプログラムを実行せよ [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 今日20時くらいまで [5] その他の制限: 講義中に学んだJacobi法の手順は、 @行列にGivens変換(A→A~=G^(-1)AG ( = G^tAG)を繰り返し行う A対角行列に近づける(非対角成分が一様に0に近づく) B対角成分が固有値である なので、できるだけこの手順準拠でお願いします。
3の倍数でウルトラマンになって、5の倍数でゴジラになり 3と5の倍数でウルトラゴジラになるプログラム(ry
>中間順に各値を表示する の意味がよくわからん
木ならわかるんだが、配列なんだよな。
904 :
900 :2008/06/27(金) 03:46:02
すみません、
>>900 のJacobi法の手順ですが、
・Rutishauserの計算式
z = ( aqq - app ) / 2apq
t = sign(z) / ( |z| + √(1+z^2))
c = 1 / √(1+t^2)
s = ct
u = s / (1+c)
app~ = app - t*apq
aqq~ = aqq + t*apq
apq~ = aqp~ = 0
apj~ = ajp~ = apj - s( aqj + u*apj) ( j≠p,q )
aqj~ = ajq~ = aqj + s( apj - u*aqj) ( j≠p,q )
を使って変形を繰り返す→非対角成分の中の絶対値最大の要素が0に近づいたら
(最初に定義しておいた0に限りなく近い値よりも小さくなったら)ループ終了
という形でも大丈夫そうです
【質問テンプレ】 [1] 授業単元: 情報処理演習 [2] 問題文(含コード&リンク): データ (x,y)を10個読み込んでその回帰直線を求めるプログラムを作れ. 平均値を計算する関数を作る 前回の課題のプログラムをそのまま使う (データ x とそのデータ数 n を引数で受け取り,その平均値を値として返す関数を作れ. 平均値を計算する関数 主プログラムからデータの個数と配列を受け取る 平均値を計算して,返す 君と君の友人あわせて10名の体重と身長を調べ,作成した関数を用いてそれぞれの平均値を求めよ. 主プログラム 身長のデータをサイズ10の配列 height に読み込む 体重のデータをサイズ10の配列 weight に読み込む height を引数(パラメータ)に関数を呼び出す weight を引数(パラメータ)に関数を呼び出す 結果を出力する )
つづき 回帰直線の係数 a, b を計算する関数を作る 主プログラムからデータの配列を受け取る 平均値を計算する関数を呼び出してmx,myを求める 係数 a, b を計算する 結果をポインタ引数を通じて返す 主プログラムは データをサイズ10の配列 x, yに読み込む x,y を引数に関数を呼び出す 結果を出力する [3.1] OS:Linux [3.2] コンパイラ名とバージョン:わかりませんorz [3.3] 言語: Cのみ [4] 期限: 2008年6月27日 [5] その他の制限:組込関数・繰返し・条件による繰返し・配列・ポインタ・関数まで習っています。 なるべく早めにやってくれると助かります。お願いします。
>>887 わざわざ書きなおして下さるとは……回答本当にありがとうございました.
エラーの内容も示して下さったリンク先を参照にして考えてみます.
ありがとうございました.
■ ■ ■ ■ ■ ■ ■ ■ ■ こんなかんじで左端から右端まで行くと今度は左端に行くように表示する for文のプログラムを教えてください。 OS:WindowsXP 言語:c言語 コンパイラ:VC++ 2008
横の文字数って決まってるの?
>>910 横は確か半角で40文字だったような?
コマンドプロポントで表示です
あと右端に到達したらっていうのは一番右端の■でいいの?
>コマンドプロポントで表示です コマンドプロンプトね というかコンソールアプリってことねw
916 :
915 :2008/06/27(金) 09:08:08
>>915 そこ消えてるんですけど・・・・他にありませんかね?
>>916 ありがとうございます。助かりました><
参考にさせていただきます
>>909 #include <stdio.h>
int main(int argc, char** argv){
int i;
char buf[64];
for(i = 0; i < 40; i++){
buf[i] = ' ';
buf[i + 1] = '\0';
printf("%s■\n", buf);
}
for(i = i - 1; i > -1; i--){
buf[i] = '\0';
printf("%s■\n", buf);
}
return 0;
}
0と1をそれぞれ偶数回受け取ったらq0に戻ると思うんだが、受理状態q3なのが意味わからん。
>>920 "0110"だと受理状態にならないからこの遷移図おかしくね?
適当だけど、参考までに #include <stdio.h> int main(void) { int n = 0, ch; while(1) { printf("Input 0 or 1:"); ch = getchar(); while(getchar()!='\n'); if(ch!='0'&&ch!='1') break; n ^= 2 - (ch - '0'); printf("状態q%d\n", n); } return 0; }
S=qs E=q10 w(qs, 1)=q1_ w(qs, 0)=q0_ w(q1_, 1)=q_0 w(q1_, 0)=q10 w(q_0, 1)=q10 w(q_0, 0)=q1_ w(q10, 1)=q_0 w(q10, 0)=q1_ 偶数を正の整数に限定してみた
[1] 授業単元: 制御システム [2] 問題文(含コード&リンク): 線形システム x'(t) = Ax(t) −@ y (t) = Cx(t) −A のシミュレーション。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: borland C++ Compiler 5.5 [3.3] 言語: C言語 [4] 期限: 6/29 [5] その他の制限:ポインタまで既習です。 数値はキーボードから入力。 補足:1、A,Cを3×3行列で入力 2、初期ベクトルx(0)を入力 3、@式からx(t)の解は x(t) = e^(At)x(0) となります。 (e^(At)はルンゲ・クッタ法を用いて近似計算される) 4、これをA式に代入してy(t)を求める、というものです。 本当にさっぱりわからないです(;´Д`) もしわかる方いらっしゃいましたらよろしくお願い致します。
>>927 ルンゲ・クッタ法は知らんが、行列Aをジョルダン分解してジョルダンJ行列のexp(Jt)を求め、
それを逆変換すればexp(At)は簡単に求まる。
悪いがCで書くのはだるいのでパス
スレ違いかもしれませんがC言語を1から始めるのに良い本ってありますか?わかりやすいやつがいいのですが
>>928 が言うとるのは
BAB^(-1)=diag[e1,e2,e3]というBを求められると
exp(At)=B diag[exp(e1t),exp(e2t),exp(e3t)]B^(-1)
だから
y(t)=CB diag[exp(e1t),exp(e2t),exp(e3t)]B^(-1)
要するにルンゲクッタ法を使わなくてもできるよと口だけ
言うとるわけだが、B,B^(-1)を求めるのはそう簡単な作業
というわけでも無いことは明記しておこう。
Aが対称というわけでもないからね。
素直にルンゲクッタの方法を使ったほうが簡単。
もっとも、こういう計算なら、Excelでやったほうが
能率がいいだろうね。Cでやるのはたるいというのは
正常な感覚かも知れない。
932 :
デフォルトの名無しさん :2008/06/27(金) 15:56:23
>>931 > 関数を使わずお願いします
インラインアセンブラですか,そうですか
934 :
デフォルトの名無しさん :2008/06/27(金) 16:01:50
935 :
833 :2008/06/27(金) 16:11:30
>>933 main( )とscanf( ) とprintf( )関数ぐらいは使わせてくれよ
>>933 int main(void){
int n, c;
double i, sum_i, sum_dbl_i, min, max;
scanf("%d", &n);
for(c = 0; c < n; c ++){
scanf("%lf", &i);
if(c == 0) min = max = i;
else {
if(min > i) min = i;
if(max < i) max = i;
}
sum_i += i;
sum_dbl_i += i * i;
}
{
double u, row;
u = sum_i / n;
row = sum_dbl_i / n - u * u;
printf("u = %f, row = %f, min = %d, max = %f\n", u, row, min, max);
}
}
未コンパイル
>>937 一応、sum_iとsum_dbl_iは初期化しておいたほうが良さそうだね
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク):() キーボードからポーランド記法で入力した計算式の演算結果を求めるプログラムを作成せよ。 例:(* (+ 4 5) (+ 2 3)と入力した場合に45と結果を表示する [3] 環境 [3.1] OS:Windows [3.2] borland c++ 5.5.1 [3.3] C [4] 期限:2008/07/02/16:00 [5] その他の制限:入力する値は一桁とし、演算子は*と+の2種類に限定する。再帰呼出を活用して作成する 逆ポーランド記法は出来たのですがポーランド記法はわかりませんでした。 どうかよろしくお願いします。
[1] Cプログラミング実習 [2] 1、変数の下位16ビット中の1のビット数を数える関数 int bit_count(int x)を作成せよ。 2、シフト演算を用いて「□」と「■」を次のように表示せよ。 □□□■ □□■ □■ ■ □■ □□■ □□□■ [3] 環境 [3.1] Windows [3.2] Visual Studio .NET 2003 [3.3] C [4] 6/30(月曜日)まで [5] とくになし
あばばばばわかんねー\(^o^)/
どなたか
>>885 お願いします
>>940 1.
int bit_count(int x)
{
int _cnt = 0;
int i;
for(i = 0;i < 16;i++) {
if( (x & 0xffff) & (1<<i) ) _cnt++;
}
return _cnt;
}
2.
void main() {
int bit = 8;
int i,j;
for(i = 0;i < 7;i++) {
for(j = 0;j < 4;j++) {
if( bit & (1<<j)) {
printf("■\n");
break;
} else {
printf("□");
}
}
if(i >= 3) bit <<= 1;
else bit >>= 1;
}
}
未コンパイルです。
>>941 char *myStringCopy(char *s, char *d)
{
char *retval = d;
if(!d || !s) return NULL;
while (*s)
{
*d++ = (char)*s++;
}
*d = '\0';
return retval;
}
これでよろしい?
944 :
943 :2008/06/27(金) 17:24:52
countCharの返り値がNULLを含まない値の場合 myStringCopyの最後の *d = '\0'; を消してください。 ただ、出来ればcoutCharの返り値にNULLも含ませるか mallocする際にsizeに+1してください
ありがとう、参考にしてさらっと終わらせます\(^o^)/
>>939 #include <stdio.h>
#include <stdlib.h>
char *nelm(char *s){
while(1)
switch(*s){
case ' ': case '\t': case '\r': case '\n': case '(': case ')': s++; break;
default: return s;
}
}
int evalp(char **s){
char c;
*s = nelm(*s);
c = *((*s)++);
printf("**s = %c\n", c);
switch(c){
case '*': { int lhs, rhs; lhs = evalp(s); rhs = evalp(s); printf("\t%d*%d\n", lhs, rhs); return lhs * rhs; }
case '+': { int lhs, rhs; lhs = evalp(s); rhs = evalp(s); printf("\t%d+%d\n", lhs, rhs); return lhs + rhs; }
case '\0': return 0;
default: return c - '0';
}
}
int main(void){
char input[1025], *u;
printf("input: ");fflush(stdout);
fgets(input, 1024, stdin);
printf("%d\n", evalp(&(u = input)));
}
947 :
144 :2008/06/27(金) 17:44:09
>>899 燃費算出にも色々計算式があるみたいで・・・。
ガソリンエンジンとディーゼルエンジンでも微妙に計算式違ったりしてる。
でも一般的な値を使ってある式の一つを持ってきたから、Ne(出力)とh(走行時間)を掛けると、言う通りの次元になるのかもしれん。
ま、次元解析までは手を出してないですがwww
Wordで報告書に式が掲載されているんだが、それをWebにうpする技術が自分には無くて・・・。
ここに直接書くとdでもない事になりそうです。
とりあえず終わりも近いしageとくか
>>944 分かりにくい解説なので、もう一度丁寧にお願い。
950 :
デフォルトの名無しさん :2008/06/27(金) 18:02:42
>>949 えと、countCharの実装方法によるんだけど
char source[]="Hello";をカウントした場合に5が帰ってくる場合
>>943 に書いたmyStringCopyだと、Helloをコピーした後に文字列の終端を示す為に\0を追加するので
6バイト分書き込みます
もし、カウント分の5バイトしかmallocで確保しなかった場合にメモリを破壊してしまいますので
malloc時にmalloc(size * sizeof(char) + 1);等して6バイト分確保してください
で、何で最後に\0を追加するかというと
fprintfで表示する際に
もし無かった場合、\0が出てくるまで表示しようとしますので
そうならないようにする為です。
これでOK?
そろそろ仕事あがるので、後は他の人に任せた
953 :
デフォルトの名無しさん :2008/06/27(金) 18:11:31
すいません、先生が一を言って十をわかることを求める人なので…orz [1] 授業単元:情報処理 [2] 問題文(含コード&リンク): ncursesを使って、(初心者からすれば)少し大きめのプログラムを作れ。 ↑(かなりアバウトですが、実際にこういわれたw) [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: cygwin [3.3] 言語: C限定でお願いします。 [4] 期限:2008年7月6日まででおねがいします! [5] その他の制限:特になくてOKっす!おねがいします!
>>953 質問しないお前が悪い。早くメールで聞き直せ
>>950 #include <stdio.h>
void myfunc(int, int[]);
int main()
{
int input, ans[2];
printf("値を入力してください。\n");
scanf("%d", &input);
myfunc(input, ans);
printf("10加えた値は %d\n", ans[0]);
printf("10倍した値は %d\n", ans[1]);
return 0;
}
/* void myfunc(int num, int *ans) 例にあわせるならこの表記 */
void myfunc(int num, int ans[])
{
ans[0] = num + 10;
ans[1] = num * 10;
}
956 :
950 :2008/06/27(金) 18:27:14
957 :
941 :2008/06/27(金) 18:27:24
>>952 950じゃないけどわかりやすかった、ありがとう
958 :
941 :2008/06/27(金) 18:27:54
違う、950じゃなくて949だ・・・ わけわからんからこのへんで\(^o^)/
959 :
941 :2008/06/27(金) 18:32:37
で、sizeを(size+1)に置き換えて*d='¥0';を削除してということで理解しました。
いやいやいやいやいや size + 1 にするなら *d = '\0' 消しちゃ駄目でしょ
961 :
940 :2008/06/27(金) 18:35:24
962 :
デフォルトの名無しさん :2008/06/27(金) 18:35:53
>>947 普通の人に燃費って言ったら「1リットル当たりどれだけの距離を走れるか」と考えるんでない?
少なくとも俺や周りの人間はその程度の認識。
次元解析とかいうよくわからない言葉を出さないといけないのなら、相応の情報がないと
手のつけようがないって言ってるんだが、おかしいかな。
報告書に載ってる式があるらしいことは分かったが、内容を知るすべがない。
適当なとこにうpすればいいじゃん。全部がいやなら式のとこだけテキストに起こすとかしてもいいし。
>>885 から
>>941 までのやりとり追跡すると、
世の中のバグの多くはこういったやりとりの果てに作られてんだなと思った。
一方は教えたつもり、他方はわかったつもりになってしまう。
正解が一つとは限らない問題を扱っている場合はとくにこうなりやすい。
何を伝えたのか、何がわかったのかをきちっとやり取りで確認しないで通信
するようなことはCプログラマとしては一番やってほしくないことだ。
通信アプリの記述に関しては、Cほど実績があるものは無いからな。
いや↑のはただの成りすましで遊んでるアホがいるだけだろw
次元解析なんて理系なら常識だろう。
>>967 じゃあ回答してやれよって話だよー
ある式の一つを使用することに決めた報告書を相手は持っているが
こちらはそれがどの式であるかも分からないんだよ?
適当に回答して、その式じゃないです、って言われないためにも情報は必要。
>>968 次元解析って名前は大仰だけど無意識でやってるだろ
970 :
デフォルトの名無しさん :2008/06/27(金) 19:26:38
>>970 ざっと見ただけ
恐らくシンプソンの公式で数値積分し、フーリエ係数を求めている。
積分刻み幅を増やしたりフーリエ係数の打ち切り個数を増やして
計算させてみたら
f(t) フーリエ展開から求めたもの
0.004052 0.000000
0.200007 0.200000
0.400001 0.400000
0.599999 0.600000
0.799993 0.800000
0.995948 1.000000
0.799993 0.800000
0.599999 0.600000
0.400001 0.400000
0.200007 0.200000
0.004052 0.000000
という風に、割合と良く一致しているから、全体的には
正しい解答を出せるプログラムだとは思うが、当然そのままのコードでは、このようには出ない。
IT関係の学生が課題をアウトソーシング
http://slashdot.jp/developers/article.pl?sid=08/06/27/1059249 英・米のコンピュータ関係の学生が課題を海外へアウトソーシングしていることが明らかになった(silicon.com・本家/.記事)。
課題は(元々は企業向けの)コーディング請負サイトに競争入札形式で出され、最低価格の入札者が契約を落札できる。
単純な課題から卒業論文までアウトソーシングされており、簡単なものだと一件5ポンド(約1050円)程で、
修士論文でも100ポンド(約21,000円)程度で請け負ってもらえる。
ここで答えてもらえないような課題でも海外なら解決してくれるようだな。
安いな
安いけど英語にしないといけないんだろ? 俺には無理だ
おいおい、理系英語は単語さえ分かれば圧倒的に楽だろう。
読むだけなら簡単 書くとなったら大変
いや、そりゃ1から書けばね。 関連する洋書の教科書読めば書き方なんて大体分かる。
どうせ英語でのニュアンスを無視して、単語1つ1つを並べて 日本語を英語に無理やりしたような英語を書くんだろぉ?w バイク板で妙な奴を見かけたよ。緑色の縁のプレートという表現で the green-rimmed plate といった漢字で 色+縁取られた という形容詞で 辞書に丸々と使い方が載っているのに、それを提示しても無理やり green plate rimming なんて、緑のプレートが縁取っている なんて 妙な単語の並べ方、活用の仕方をしやがって、吹いちまったぜ。 そんな俺は理系に進んだが英語の成績の方が良かったという 進路を間違えた被害者の一人だ。これがジャポネーゼの教育の実態だ。 英語が使いたいというなら、1年でも留学しろ。留年じゃないぞ、留学だぞ。
>>980 それはバイク板の当該スレでいうべきことでは
1をみて10を知るのもいいが一般化するに足るサンプル数があるのか?
いや、明らかに誤用だろ・・・そういう反論をする奴こそ 我こそは間違っていない、疑問に思うことはすべて 異例を調査してでも反論しようってタイプだろ? 世の中そんなんじゃやっていけないが、辞書で調べれば 金縁のめがねは gold-rimmed glasses で載ってますからw
>>982 福田首相がダメだから日本の歴代首相は全てダメというくらい強引だな
自分が言ったことが正しいと思い込む、あるいは正しくなくては困る 例えそうでなくても、意見をするものを封じるために相手を否定する 指摘した奴を陰湿に罵倒するような奴は、まず孤立している奴だろ。 いわゆる自分ルールで生きてきた奴。それゆえに通用しないことばかり。 だからそんなへまもする。まぁ、間違いを指摘されて反論するようじゃ まず駄目だろう。にしても、用例や細かく分析しても納得のいく説明に わざわざ指摘した側に圧力を掛けるって、どんだけ視野が狭いんだろうねw
>>984 間違えたのはバイク板の何某一名じゃないのか?
不毛すぎる他でやってくれ
毎日この時間から朝までご苦労様です
>どうせ英語でのニュアンスを無視して、単語1つ1つを並べて >日本語を英語に無理やりしたような英語を書くんだろぉ?w これが妄想という名の自分ルールじゃなかったらなんなんだw
>>988 あっ、もうそういう詰まらない屁理屈しかいえなくなったんだ。
所詮お前もジャポネーゼイングリッチュw
991 :
973 :2008/06/27(金) 22:39:31
俺が悪かった。俺がこんな話しなきゃ・・・
>>989 おお、ぜひともとっととアメリカ行ってくれw
>>991 まあ、その話してなくても別のことで大暴れするだけだからあなたのせいじゃないよ
せめてプログラムの話と絡めて欲しいもんだな。 こんな微妙な名前の変数名を見た、とか。 それにしてもどうでもいい話だけどさ
よし in English なジャポネーゼが必死だなwwww まぁ、お前の使えない英語は、日本語を必死に英語に訳そうとして 本来の英語を無視しているからなんだよ。まずは生粋の英文を 日本語に訳して、英語を英語として意味を理解しろ。 日本語に単語単語で訳してから理解しようとしている奴は 効率が悪く、まずまともな英語は身につかない。なぜなら、 英語を英語で理解する人は、わざわざ日本語に訳してなんて ことはしていないだろ?当然っちゃ当然だが、そういうこと。 英語を英語で理解する、わざわざ日本語に置き換えなくても良いんだよ。 英語を知っている人なら、ね?w さっ、宿題スレなんて、俺の戯言はこの辺で。所詮ジャポネーゼ イングリッチュは通用しないって、海外に出れば分かるからw
speak english,plz
いつだったかバイク板で誰かが green plate rimming と書き込んだ ゆえに、日本人は変な英語を使う 話の流れがおかしくないか?
彼にまともな理屈が通じるとでも?
梅
All your coursework are belong to us
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。