トップページ⇒tech
76コメント23KB

課題を出してくれ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/06/23(土) 01:38:44
暇なので何かプログラミングする。
課題出してくれたらCで作ります。
0002デフォルトの名無しさん2007/06/23(土) 01:42:34
標準ライブラリだけで ini ファイルをよみこんで設定情報を提供するライブラリを作れ。
なるべく使いやすいI/Fでな
0003デフォルトの名無しさん2007/06/23(土) 01:44:34
>>1
素数を全て列挙するプログラムを作れ。
0004デフォルトの名無しさん2007/06/23(土) 01:47:40
>>1
指定したディレクトリ内からエロ画像だけ認識して別のディレクトリに移動するプログラムたのむ
0005デフォルトの名無しさん2007/06/23(土) 01:47:48
課題を出してくれ?
だったら上2つを3日で頼む
0006デフォルトの名無しさん2007/06/23(土) 01:52:50
宿題は自分でやれよ?
0007デフォルトの名無しさん2007/06/23(土) 01:56:01
単語すべてを使って、しりとりができるか判定せよ。
単語は配列に入っていて、数は決まってない。
配列の最後はNULLが入っている。

char *words[] = {
"abc",
"cde",
"efg",
NULL
};

○ agc efg cde
× abc efg def
0008デフォルトの名無しさん2007/06/23(土) 01:56:09
>>3
素数は無限にあるから全て列挙する事は不可能
0009デフォルトの名無しさん2007/06/23(土) 01:58:55
>>7
これって結局,何ていう問題にリデュースするの?
0010デフォルトの名無しさん2007/06/23(土) 01:59:24
全部3日で頼む
0011デフォルトの名無しさん2007/06/23(土) 02:00:04

void func(T table[], int n);

配列と、その長さを渡されて、その中身の順列組み合わせを表示する関数。
配列の型は適当に。
0012デフォルトの名無しさん2007/06/23(土) 02:02:17
>>9
それを考えるのも課題のうちだろう。
0013デフォルトの名無しさん2007/06/23(土) 02:04:15
四角形をあらわす構造体を二つ渡されて、それが重なっているかどうか判定する関数を作れ。

struct RECT {
  int top, bottom, left, right;
};

int f(struct RECT* p1, struct RECT* p2);
0014デフォルトの名無しさん2007/06/23(土) 02:07:29
文字列で、同じ文字が続いてる箇所を調べて、
一番長く続いている箇所の、文字とその長さを表示する関数。

"aaabbbbbbccddd"

これだったら、"b"で長さ6とか。
0015デフォルトの名無しさん2007/06/23(土) 02:12:03
>>7
この関数のテスト用データを作成するプログラムを作成せよ。
0016デフォルトの名無しさん2007/06/23(土) 02:17:04
正規表現にマッチする文字列を複数作成するプログラム。
使う正規表現は、*+.の三つ。

たとえば"AA+C*" という正規表現を渡されたら、
"AAAAAAA","AACCCC","XXAAC"のような文字列を生成する。

簡単すぎると思ったら、正規表現の数を増やしてみること。
0017デフォルトの名無しさん2007/06/23(土) 03:01:15
>>16
無限に生成できちゃわね?
0018デフォルトの名無しさん2007/06/23(土) 03:05:27
適当に作ったんでよければ、+ と * を削除し、. を適当な文字で置換すれば終わりだな。
0019デフォルトの名無しさん2007/06/23(土) 10:37:02
宿題スレ行けばいくらでも転がってるな
0020デフォルトの名無しさん2007/06/23(土) 12:12:20
http://www.programming-challenges.com/
ここに問題が山ほどある。
0021デフォルトの名無しさん2007/06/23(土) 13:01:27
こっから上の課題全部を5日で頼む。
0022デフォルトの名無しさん2007/06/23(土) 13:06:02
わしの課題は108まであるぞ
0023デフォルトの名無しさん2007/06/23(土) 15:03:20
>>7
これでいい?

#include <stdio.h>
#include <string.h>

int ChkSiri(char *w[])
{
    int t[256] = {0}, n = 0, i;

    for ( ; *w; w++)
        t[**w]++, t[(*w)[strlen(*w)-1]]--;
    for (i = 0; i < 256; i++)
        if (t[i])
            n++;
    return n <= 2;
}

int main(void)
{
    char *words0[] = {"abc", "cde", "efg", NULL};
    char *words1[] = {"agc", "efg", "cde", NULL};
    char *words2[] = {"abc", "efg", "def", NULL};

    printf("しりとり出来%s\n", ChkSiri(words0) ? "る" : "ない");
    printf("しりとり出来%s\n", ChkSiri(words1) ? "る" : "ない");
    printf("しりとり出来%s\n", ChkSiri(words2) ? "る" : "ない");
    return 0;
}
0024デフォルトの名無しさん2007/06/23(土) 20:19:07
>>23
先頭と最後の文字のカウントしてるだけじゃ、
axa bxb cxc でも、しりとりできるって判定されるよ。
0025デフォルトの名無しさん2007/06/25(月) 00:23:02
>>7
力技。wordsの中身直接いじってます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4378.txt

ちなみに >>1 じゃないよ。
0026252007/06/25(月) 00:32:16
あかん、バグってる。
0027デフォルトの名無しさん2007/06/26(火) 10:47:16
つ ttp://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
0028デフォルトの名無しさん2007/06/26(火) 12:14:57
>>9
それぞれの文字列を点にして後に繋げられるという関係を辺で表すと有向グラフになるから、全ての点を一度ずつ通る経路が存在するかどうかのグラフ理論の問題になるね。
0029デフォルトの名無しさん2007/06/26(火) 13:15:40
>>1
一行目で読み込んだ、文字列(半角)を二行目で読み込んだ、文字列と比較し
何番目が違うかを表示するプログラムを作成せよ。

実行例
make
takes

1番目が違います。
5番目が違います。
0030デフォルトの名無しさん2007/06/26(火) 14:20:10
7って有向グラフのハミルトン問題ってことになるのかな?
NP困難とかじゃなかったっけ
これって
0031デフォルトの名無しさん2007/06/26(火) 15:00:02
有向でも無向でもNPコンプリートだよ
0032デフォルトの名無しさん2007/06/29(金) 16:40:17
>>14
関数ではありませんが、
最長の文字連続(_文字列,_文字ならび,_長さ) :- atom_chars(_文字列,L),連続(L,0,[],_文
字ならび,_長さ).
連続([],Max,L,L,Max).
連続([A|R],Max,L,X,Y) :- 先頭から連続([A|R],L1,R3),list_length(L1,Len),連続_1(A,Le
n,Max,R3,L,X,Y).
連続_1(A,Len,Max,R3,L,X,Y) :- Len=Max,not(member(A,L)),連続(R3,Len,[A|L],X,Y).
連続_1(A,Len,Max,R3,L,X,Y) :- Len=Max,member(A,L),連続(R3,Len,L,X,Y).
連続_1(A,Len,Max,R3,L,X,Y) :- Len>Max,連続(R3,Len,[A],X,Y).
連続_1(A,Len,Max,R3,L,X,Y) :- Len<Max,連続(R3,Max,L,X,Y).
先頭から連続([A,A|R1],[A|R2],R):- 先頭から連続([A|R1],R2,R).
先頭から連続([A,B|R1],[A],[B|R1]) :- not(A=B).
%%% 実行例 %%%
?- 最長の文字連続(aaabbbbbbccdddeeeeeefffeeeeeejjjjee,_長さ,_文字).
_文字=[e,b],
_長さ=6
yes
?-
0033322007/06/29(金) 17:13:42
間違えた。
?- 最長の文字連続(aaabbbbbbccdddeeeeeefffeeeeeejjjjee,_文字,_長さ).

でした。書き込み直前に>>14の仕様に合わせたのだが、肝心の質問部分を
書き直し忘れた。
0034デフォルトの名無しさん2007/06/29(金) 18:16:58
呪いが必ず死ぬプログラム作れ
0035デフォルトの名無しさん2007/06/29(金) 18:40:34
char name[BUFSIZ]

FILE *fp = fopen("デスノート", "w");
if(fp == NULLL) exit(1);

fscanf("%s", name);
fprintf(fp, "%s¥n", name);

fclose(fp);
0036デフォルトの名無しさん2007/06/29(金) 18:43:27
スパゲティコードを書けば
デスマになって誰か死ぬかも。
0037デフォルトの名無しさん2007/06/29(金) 18:49:01
ギャンブルで必ず儲かるコードをおしえてくれ
0038デフォルトの名無しさん2007/06/29(金) 18:51:50
賭けなければ少なくとも損することは無い。
0039デフォルト名無しさん2007/06/29(金) 19:35:01
ビット配列を表示して
n回ビット回転させるプログラムおしえておくれ〜
0040デフォルトの名無しさん2007/06/29(金) 19:39:14
>>37
胴元になれ
確実ではないがプレイヤーよりは儲かる仕組みを自分が作れる
0041デフォルトの名無しさん2007/06/29(金) 19:53:33
>>39
ここは課題を代わりに解いてもらおうという
腐れた人間のためのスレではなあい!
0042デフォルトの名無しさん2007/06/29(金) 19:57:27
>>39
宿題スレいけ
0043322007/06/30(土) 06:40:07
>>7
Prolog向きの課題。仕様からはちょっと外れるが。

しりとり(L,_実行結果) :- member(A,L),しりとり(A,L,_実行結果).
しりとり(A,[A],[A]) :- !.
しりとり(A,L,[A|R]) :- delete(L,A,L2),sub_atom(A,_,1,0,B),member(E,L2),sub_atom(E,0,1,_,B),しりとり(E,L2,R).

sub_atom/5,\+/1,!/0はISO標準規格の組込述語。delete/3とmember/2は
標準規格外だが、組込述語となっている処理系が多い。
delete([],_,[]).
delete([A|R1],A,R2) :- delete(R1,A,R2).
delete([B|R1],A,[B|R2]) :- \+(A=B),delete(R1,A,R2).
member(A,[A|_]).
member(A,[_|R]) :- member(A,R).
0044デフォルトの名無しさん2007/07/01(日) 15:55:30
課題・・9時から16時までの勤務表を作れ
勤務表は一時間単位であり、以下の制約条件を充たす必要がある。
要員は木村、新井、吉田の3名である。
最小勤務単位は2時間であり、一時間だけの勤務は認められない。
一人勤務は1時間までであり、もし一人勤務に就いた場合は、
次の少なくとも1時間は勤務に就けない。
以下の時間は、それぞれ用事があり、勤務できない。
木村・・14時、新井・・11時と14時、吉田・・9時と11時
0045442007/07/01(日) 16:00:58
開店時間は9時から17時です。16時台を含みます。
0046デフォルトの名無しさん2007/07/03(火) 03:36:46
>>14 >>32
findall/3 と sub_atom/5 を駆使すると
% 最長の文字連続(S,X,Max) :-
% findall(Len,(sub_atom(S,_,Len,_,S1),連続判定(S1)),Lens),
% max(Lens,Max),
% findall(Subatom,(sub_atom(S,_,Max,_,S2),連続判定(S2)),X).
% 連続判定(S) :-
% sub_atom(S,0,1,_,A),
% findall(A,sub_atom(S,_,1,_,A),L),
% atom_chars(S,L) .
でいけるようです。
0047課題2007/08/17(金) 06:33:09
自称「マネージメントもできる」派遣クンが
「Windowsが僕のプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」
と言っています。

彼のWindowsプログラムが動かないのを調べるのは誰の仕事なのでしょうか?
0048デフォルトの名無しさん2007/08/17(金) 06:38:10
コピペ厨フィルタとか作れないかな。
単純なコピーだけでなく、ミスや恣意的な表現の揺らぎにも対応したもの。
0049デフォルトの名無しさん2007/08/17(金) 06:58:18
>彼のWindowsプログラムが動かないのを調べる

よりは

彼はそのプログラムをWindowsで動くように作ったのかどうかを調べる

ほうが効率的。
0050デフォルトの名無しさん2007/08/17(金) 07:01:27
>>47
別人じゃね。たぶん47。

if文が7段くらい入れ子してそうなコードの悪寒。
0051デフォルトの名無しさん2007/08/17(金) 09:01:34
俺の会社なら「僕の仕事どはありません」と言った時点でクビだけどな
0052デフォルトの名無しさん2007/08/17(金) 11:39:28
>>47
彼の次に派遣で来る人
0053デフォルトの名無しさん2007/08/17(金) 15:04:23
>>47
氏ねゴミ
0054デフォルトの名無しさん2007/08/17(金) 15:12:22
お前が氏ねよ、派遣クン
まあ、ほっといても将来、公園のテントでリアル厨房に虐殺されるかもしれんがw
0055デフォルトの名無しさん2007/08/17(金) 15:18:01
>>54
0056デフォルトの名無しさん2007/08/17(金) 15:22:25
>>51
甘いな
そういうバカでも切るまでに1ケ月は必要
0057デフォルトの名無しさん2007/08/19(日) 06:24:52
>>54
まあ、ほっといても将来、社員も派遣も皆失業だから転職かテント暮らしの準備しとけ。
上流から下流まで、人件費が安いベトナム人とかインド人がやるだろうよ。
どっかのアニメーターみたく。

>>56
ひたすらそいつが出したバグを突付きまくって1月凌ぐ。
やるほうもやられるほうも虚しいけどな。
0058デフォルトの名無しさん2007/09/23(日) 19:18:25
http://acm.uva.es/p/v100/10011.html
こ…この問題、解けたつもりなのにWrongAnswer食らいまくりなんだが…。
0059デフォルトの名無しさん2007/09/23(日) 20:55:28
>>58
何が書いてあるんだ?俺は英語くらいしか分からんから読めない・・・
0060582007/09/24(月) 00:44:20
>>59
要するに…
普通の直交2次元座標で
円O[中心(x,y),半径R]と点P(u,v)を与えたときに
点(u,v)を中心に持つ円Hが次の条件を満たす最大半径を求めよ。
1・円Hは円Oの内部を含まない。
2・(0,0)放射線源としから円Oを障壁とする。
  円Hが放射線に当たらない。
※(0,0)と(u,v)は円Oの外部にあるものとする。
※答えは小数点以下第3位まで求める。条件を満たす円Hがない場合は
 0.000とする。
0061デフォルトの名無しさん2007/09/24(月) 02:36:58
>>60
入力
3
0 5 3 0 1
0 5 3 2 9
0 5 3 5 9

出力
0.000
1.472
1.400
0062デフォルトの名無しさん2007/09/24(月) 16:15:41
問題  C言語
 1次元変数a[5]を定義し、a[0]〜a[4]に適当な数値を入力したあとにこれらの平均を
計算・表示するプログラム。(a[i](i=0,1,2,3,4)はscanfで読み込み、for文で計算する)

俺はこれでかなり迷ったけどみんなできる?

ちなみに俺は↓の問題がわかりません。このままわからない場合は宿題スレで聞く予定です。

a,b,cをそれぞれ入力し、axの2乗+bx+c=0の2つの解を表示するプログラムです。
0063デフォルトの名無しさん2007/09/24(月) 16:26:58
>>62
#define N 5
#define S N-1

double average(int *a)
{
double sum = 0;
int *temp;
for(temp = &a[0]; temp <= &a[S]; temp++)
sum += *temp
return sum/(double)N;
}
0064デフォルトの名無しさん2007/09/24(月) 16:33:49
>>63
正解だとは思うけど、defineとか習ってないからできているのか俺からは
何もいえない・・・すいません。
0065デフォルトの名無しさん2007/09/24(月) 16:42:43
>>58
ソース晒しておくれ
0066デフォルトの名無しさん2007/09/24(月) 19:29:45
>>62

#include <stdio.h>

void main(void)
{
int a[5];
int i,sum;

sum=0;

for(i=0;i<=4;i++){
printf("配列No%d:",i+1);
scanf("%d",&a[i]);
sum += a[i];
}
printf("%d\n",sum/5);
}

こんなんでいいの?
0067デフォルトの名無しさん2007/09/25(火) 06:06:52
>66
正解だと思います。俺の場合averageを使ったので。でもさすがです。
0068デフォルトの名無しさん2007/09/25(火) 15:19:07
>>66
動作確認したらあってました。

問題
2次方程式の解放プログラム:a,b,cをそれぞれ入力し、axの2乗+bx+c=0の
2つの解を表示するプログラム

Cのプログラミングでn次元変数を使ってください。
0069デフォルトの名無しさん2007/09/25(火) 15:44:43
n次元変数ってなんだろう
0070デフォルトの名無しさん2007/09/25(火) 16:04:10
>>69
1次元変数とか2次元変数です
0071デフォルトの名無しさん2007/09/25(火) 16:13:09
http://www.google.com/search?num=50&hl=ja&q=C%E8%A8%80%E8%AA%9E+%22%EF%BC%92%E6%AC%A1%E5%85%83%E5%A4%89%E6%95%B0%22&lr=lang_ja

>C言語 "2次元変数" に一致する日本語のページ 4 件
0072デフォルトの名無しさん2007/09/25(火) 16:15:45
使用者の意図どおりな簡単に型変更できるスタックとその操作関数。
0073デフォルトの名無しさん2007/09/25(火) 23:04:35
>>1
>>72はまーだー??
0074デフォルトの名無しさん2007/09/25(火) 23:06:46
>>72
C++ならstd::stackがあるけど、Cならマクロとか駆使すればできるのかな?
0075デフォルトの名無しさん2007/09/25(火) 23:14:03
>>72だが、自作しちゃった。
興味ってすごいね。


ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4969.zip
0076デフォルトの名無しさん2007/09/25(火) 23:14:40
>>74
むしろプリプロセッサなしでは出来ない。
■ このスレッドは過去ログ倉庫に格納されています