[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 06/15 06:15 / Filesize : 299 KB / Number-of Response : 887
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題を片付けます 104代目



1 名前:デフォルトの名無しさん [2008/02/04(月) 23:32:19 ]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう.
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):()
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 103代目
pc11.2ch.net/test/read.cgi/tech/1200318925/

438 名前:438 mailto:sage [2008/02/26(火) 21:23:50 ]
>>428 行数制限のため入出力は関数にしなかったが。
#include<stdio.h>
int day[12][6][7];
int z(int y,int m,int d){
if(m<3)y--,m+=12;
return(y+y/4-y/100+y/400+(m*13+8)/5+d)%7;
}
int main(void){
int y,s,m,w,d;
while(1){
printf("y=");
scanf("%d",&y);
//格納
for(m=0;m<12;m++)
for(w=0;w<6;w++)
for(d=0;d<7;d++){
day[m][w][d]=w*7+d+1-z(y,m+1,1);
if(day[m][w][d]<1||day[m][w][d]>(z(y,m+2,1)-z(y,m+1,1)+7)%7+28)
day[m][w][d]=0;
}
//表示
for(s=0;s<3;s++)
for(w=0;w<6;w++,printf("\n"))
for(m=0;m<4;m++,printf(" "))
for(d=0;d<7;d++)
if(day[s*4+m][w][d]>0)
printf("%2d",day[s*4+m][w][d]);
else
printf(" ");
}
return 0;
}

439 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:11:44 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
文字頻度と文字の連接頻度をカウントするプログラムを作成せよ。
尚、入力ファイルにhamlet3-1をWebからダウンロードして使い、tsv形式で結果を出力せよ。($./a.out hamlet3-1.txt > hamlet.tsv としてプログラムを実行)
‐処理
・入力ファイルを「読み込みモード」でオープンする
・ファイルの銭湯から1文字ずつ読み込みながら小文字にそろえて、'a'〜'z'の範囲にある場合は以下の処理を行う。
@'a'〜'z'の各文字g亜出現する頻度を計数する。
A連続する2文字の連接頻度をa-a,a-b,...z-zまで計数する。
途中にスペース、改行などアルファベットが入った場合は連接していないとする。
・計数結果を標準出力に出力
hamlet3-1
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6095.txt
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2008/02/27 23;59迄
[5] その他の制限:特にありません。
よろしくお願いします。

440 名前:デフォルトの名無しさん [2008/02/27(水) 00:17:52 ]
[1] 授業単元:プログラミング演習
[2] 問題文:
空気中でつるされている銅球の温度変化は以下の式で求まる。

Cp・ρ((πd^3)/6)dT/dt=-πd^2((λ/d)Nu)(T-Tair)

周辺空気の温度Tair=300K、流速3m/sのときの銅球の温度変化を計算しなさい。
なお、t=0sで銅球の初期温度はT0=700K、銅球の温度分布は無視し、各物性値は500Kで計算のこと。
(Cp=1.03kJ/kgK、ρ=8813kg/m^3、λ=39.71×10^3W/mK、Nu=11.04)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C++
[4] 期限: 2008年2月27日15:00
[5] その他の制限:使用したアルゴリズムは全て関数化する。
ルンゲクッタ法を使用

どうしてもわからないのですみませんがお願いします。


441 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:26:00 ]
>>440
微分方程式を解くのか?

442 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:32:01 ]
>>441
そうなんだと思います。

443 名前:デフォルトの名無しさん [2008/02/27(水) 01:23:12 ]
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows
 [3.2]コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: 2008年2月27日 12:00

2つの文字列A,Bに入力し、、
それぞれの文字列の先頭から順に一文字づつ抜き出し、
交互に出力するプログラムを作成しなさい。
Str関数を使用しない
例:
文字列Aにabcd
文字列Bに123456
と入力すると
出力結果 a1b2c3d456
が出力されるようにする。

よろしくおねがいします

444 名前:デフォルトの名無しさん [2008/02/27(水) 01:29:42 ]
>>439
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6096.txt

445 名前:デフォルトの名無しさん [2008/02/27(水) 01:31:44 ]
>>444は間違い。

446 名前:デフォルトの名無しさん [2008/02/27(水) 01:38:15 ]
>>439
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6097.txt

こっちが正しい。



447 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 01:44:13 ]
>>443
#include <stdio.h>

int main(void)
{
char bufA[32], bufB[32];
int i=0;

printf("文字列Aの入力:");
fgets(bufA, sizeof(bufA), stdin);
printf("文字列Bの入力:");
fgets(bufB, sizeof(bufB), stdin);
while(bufA[i] != '\n' && bufB[i] != '\n')
{
putchar(bufA[i]);
putchar(bufB[i]);
i++;
}
if(bufA[i] != '\n') puts(bufA+i);
if(bufB[i] != '\n') puts(bufB+i);
return 0;
}

448 名前:デフォルトの名無しさん [2008/02/27(水) 01:46:34 ]
Str関数ってなんだろう。Str関数を作れって意味ではなさそうだし。
str〜関数を使えってことかな?

449 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 02:15:44 ]
>>439
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6098.c
>>444-446
連接の解釈が違うきがする

450 名前:デフォルトの名無しさん [2008/02/27(水) 02:22:55 ]
>>449
ああああああ!!!
そうか、そういうことか。

451 名前:443 [2008/02/27(水) 02:27:24 ]
>>447
すみません、書き忘れてましたorz
配列でなくポインタででした・・
>>448
strのとこはstrcpyとか使わないでということです。


452 名前:!= 447 [2008/02/27(水) 02:48:15 ]
>>451
bufA[i]←こういうのがあってはいけないってことかな?
ならば、

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char *bufA, *bufB;
int i=0;

bufA=malloc(32);
bufB=malloc(32);
printf("文字列Aの入力:");
fgets(bufA, 32, stdin);
printf("文字列Bの入力:");
fgets(bufB, 32, stdin);
while(*(bufA+i) != '\n' && *(bufB+i) != '\n')
{
putchar(*(bufA+i));
putchar(*(bufB+i));
i++;
}
if(*(bufA+i) != '\n') puts(bufA+i);
if(*(bufB+i) != '\n') puts(bufB+i);
free(bufA);
free(bufB);
return 0;
}

453 名前:440 [2008/02/27(水) 04:50:45 ]
微分方程式は手計算で解いてみたんですがソースを作ってみても解が出てきません…
どうすればいいかもまったくわからないです…
どのような解法でもいいのでどなたか本当にお願いします。

454 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 10:02:02 ]
>>440
この温度変化の微分方程式の本質は

  dT(t)/dt = a * T(t) + b

という形になるはず。
この解は、微分しても同じ形の関数T(t)が出てくるので、

  T(t) = c * e^t

のように、指数関数になる、っていうのまではいいのか?

455 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 10:15:33 ]
>>454
それはよくないんじゃないか?

456 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 10:18:02 ]
>>453 ルンゲクッタ法を調べる



457 名前:440 [2008/02/27(水) 10:58:22 ]
>>454
そこまではわかったんですが…どのようにソースを作ればいいのかがわからないです。
ルンゲクッタ法を用いてやってみているんですが解が求まりません…

458 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 11:01:17 ]
>>446,449
ありがとうございます!

459 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 11:02:55 ]
>>457
ある程度できてるならソース張って添削してもらった方が早いと思うぞ。

460 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 11:45:16 ]
>>440
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6100.cpp

461 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 11:47:16 ]
>>454
T(t) = c e^t だったら温度が指数関数的に吹っ飛ぶことになるが

462 名前:440 [2008/02/27(水) 12:43:05 ]
以下が自分で作成したソースです。
曖昧なところが多々あってすいません。

double Onndo(double t0, double T0, double h,double k)
{
int i;
int x,y,k1,k2,k3,k4,h2;
double K ; /* 解法で得られた値を格納する変数 */
x=t0;y=T0;
h2=h/2.;
for(i=0;i<=y;i++){
k1=f(x,y,k);
k2=f(x+h2,y+h2*k1,k);
k3=f(x+h2,y+h2*k2,k);
k4=f(x+h,y+h*k3,k);
x=t0+(double)i*h;
y+=(k1+2.*k2+2.*k3+k4)*h/6.;
}
K=x;

return K;
}

463 名前:440 [2008/02/27(水) 12:44:34 ]
>>462

*---- 関数f(x,y)の設定 ----*/
double f(double x, double y,double k)
{
double f;
f=k*(y-300)*x;
return f;
}

/*----- 解の設定 -----*/
double Ans_f(double y,double x,double k)
{
return exp(-k*x);
}

k=(-6*ramu*Nu)/(Cp*ro*d*d);として計算しています。


464 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 14:31:19 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6101.txt
[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まで] または [無期限] のいずれか) 28日24:00まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
まだ講義ではそこまで深くプログラミングを学んでいないため、if文for文など簡単な文を多めに使う感じにしてください。
プログラムでなく考察を要求してるところを横棒で区切りました。
そちらの方にも軽くヒントなどいただきたいです。

465 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 15:53:39 ]
>>440

Cp……銅の比熱(500K)
ρ……銅の密度(500K)
d……???
λ……熱伝達係数
Nu……ヌッセルト数


流速3m/s はどこで使うの?
d は何?
πd^2((λ/d)Nu) の部分は πdλNu と約分できそうだけど、ホントにこのままでいいの?
それともd^2ってのは二階微分を表してるの?

466 名前:465 mailto:sage [2008/02/27(水) 16:39:07 ]
>>440
そもそも、その銅球の半径は?
それがd?



467 名前:デフォルトの名無しさん [2008/02/27(水) 22:56:46 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
     コマンド ライン引数に指定されたファイルすべてに対して、 改行文字以外の各行を、
逆さまにして表示するプログラムを書いてください。
なお、対象のファイルには英数字などの半角文字のデータのみが入っているものとし、
漢字などの全角文字は含まれていないものとします。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限: 2008年2月28日 11:00
[5] その他の制限:
     1.文字列の最後の文字から先頭に向かって、順に 1 文字ずつ表示
(ただし、文字列の最後の文字が改行文字の場合、その次から始める)
2. 1 で改行文字があったならば、改行文字を表示

だれかよろしくお願いします

468 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:26:20 ]
// >>467
#include <stdio.h>
#include <string.h>

static void flip(char * str)
{
char * tail = strchr(str, '\n');
if (tail == NULL) tail = strchr(str, '\0');
for (--tail; str < tail; ++str, --tail) {
char foo = * str;
* str = * tail;
* tail = foo;
}
}
static void flipCat(const char * fileName)
{
FILE * fp = fopen(fileName, "r");
char buf[1000];
while (fgets(buf, sizeof(buf), fp) != NULL) {
flip(buf);
fputs(buf, stdout);
}
fclose(fp);
}
int main(int argc, char ** argv)
{
for (int ic = 1; ic < argc; ++ic) {
flipCat(argv[ic]);
}
return 0;
}

469 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:43:38 ]
>>464
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6103.txt

こんな感じかな?
再帰関数を使っているのであんまりサイズが大きい配列だとプログラムが異常終了するかも
あと時間の計測方法は知らん

適当にmain関数を使っていじってみて

470 名前:デフォルトの名無しさん [2008/02/28(木) 07:54:50 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):以下の条件を満たしロトのプログラムを作成しなさい。
1 1〜42の中から6つの数字と1つのボーナス数字を選ぶことができます。ただし同じ数字を選ぶことはできません。
2 7つの数字は1次元配列の中になければなりません。
3 1つ1つの問題に対して関数定義を作り1つのプログラムで完成させなさい(関数を使う)
4 すべての関数はポインタを使いなさい。

問1 6つの数字と1つのボーナス数字を選ぶプログラム(エラー表示を含む)
問2 選らんだ数字とボーナス数字を1次元配列で表示しなさい
問3 選んだ数字とボーナス数字を小さい順に並べなさい
問4 ランダムに抽選されるプログラムを作り選んだ数字と比較し、以下の中の1つを表示させなさい

Match 6 Jackpot
Match 5 + Bonus Almost - just 1 away
Match 5 Holidays paid for
Match 4 + Bonus Night out
Match 4 Full petrol tank
Match 3 + Bonus Grub at local takeaway
問5 何回数字を選んだか表示しなさい (例)1はx回選ばれました
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C言語
[4] 期限:2008年3月3日まで
[5] その他の制限:ありません

丸投げです。どなたかよろしくおねがいします。



471 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 09:24:35 ]
>>470 久々に書くと酷いな
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6104.txt

472 名前:470 [2008/02/28(木) 09:35:36 ]
>>470 ほんとうにありがとうございます。
質問なんですが問4のランダム抽選はどのように表示されますか?

473 名前:470 [2008/02/28(木) 09:56:40 ]
↑アンカーミスです。。
>>471 ほんとうにありがとうございます。 

474 名前:デフォルトの名無しさん [2008/02/28(木) 10:20:39 ]
>>468 ありがとうございます。さっそくやってみたのですが、
test2.c(26) : error C2143: 構文エラー : ';' が '型' の前にありません。
test2.c(26) : error C2143: 構文エラー : ';' が '型' の前にありません。
test2.c(26) : error C2143: 構文エラー : ')' が '型' の前にありません。
test2.c(26) : error C2143: 構文エラー : ';' が '型' の前にありません。
test2.c(26) : error C2065: 'ic' : 定義されていない識別子です。
test2.c(26) : warning C4552: '<' : 演算子にプログラム上の作用がありません。作用
を伴う演算子を使用してください
test2.c(26) : error C2059: 構文エラー : ')'
test2.c(26) : error C2065: 'ic' : 定義されていない識別子です。
test2.c(26) : error C2143: 構文エラー : ';' が '{' の前にありません。
test2.c(27) : error C2065: 'ic' : 定義されていない識別子です。
と表示されるのですが…

475 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 10:47:43 ]
>>474
int ic;
for (ic = 1; ic < argc; ++ic) {

に変えたら?

476 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 13:38:15 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):キーボードから整数の入力を4回繰り返し,それらの値を2次元配列 A の各要素に順に代入し,その行列のそれぞれの要素と行列式を表示するプログラムを作成せよ.
結果例
1行1列の要素? 6
1行2列の要素? 5
2行1列の要素? 4
2行2列の要素? 3
行列A =
6 5
4 3
行列式 = 2

[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C++
[4] 期限: 本日夕方6時まで

もしよろしければどなたかお願いします。



477 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 13:50:12 ]
>>476
#include <stdio.h>

int main(void)
{
int a[2][2],i,j;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("%d行%d列の要素? ",i+1,j+1);
scanf("%d",&a[i][j]);
}
}
printf("行列A =\n%d %d\n%d %d\n",a[0][0],a[0][1],a[1][0],a[1][1]);
printf("行列式 = %d",a[0][0]*a[1][1]-a[0][1]*a[1][0]);
return 0;
}

478 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 14:10:59 ]
>>477
早すぎるお仕事、ありがとうございました

479 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 21:18:18 ]
宿題マダー?

480 名前:デフォルトの名無しさん [2008/02/28(木) 21:29:27 ]
では300Mのテキストファイルを速くブロックソートするプログラム作ってくれよ
昨日から作ってるけど速くならない

481 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:31:48 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6106.txt
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2008年3月1日
[5] その他の制限:

482 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:56:15 ]
>>480
どんな環境でどんなデータに対してどれだけ時間がかかるのが遅いって言うんだ?
基準をplz

483 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 01:06:59 ]
>>481
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#define BSIZE 128
int main(int argc, char **argv){
int rfd, rdnum
char buf[BSIZE];
if ((rfd = open(argv[1], O_RDONLY)) == -1) {
perror(argv[1]);exit(1);
} else {
printf("ファイルのオープンに成功しました\n");
}
while(1){
if ((rdnum=read(rfd,buf,BSIZE))<1) break;
printf(" %d\n",rdnum);
}
close(rfd);
return 0;
}


484 名前:デフォルトの名無しさん [2008/02/29(金) 01:11:21 ]
>>482
全文字列を展開してソートした場合

#include <iostream>
#include <string>
#include <set>
#include <time.h>
using namespace std;

class gou{
public: string str; int num;
gou(string a, int b){str=a; num=b;}
bool operator<(const gou& a)const{return str<a.str;}};

main(){
int sz=20000,n;
string a(sz,'\0');
for(n=0;n<sz;n++)a[n]=rand()&255;

multiset<gou> s;
int cl=clock();
for(n=0;n<sz;n++){ s.insert(gou(a,n)); a=a.substr(1)+a[0];}
cl=clock()-cl; cout<<"20kのブロックーソート "<<(cl+0.0)/1000<<"sec \n";
}

485 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 01:15:30 ]
>>483
トン

486 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 02:33:11 ]

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
 1) 3つの「点」からなる構造体「三角形」を作成しなさい。1つの「三角形」を構成する3つの頂「点」の座標を読み込み、三角形の重心を求めなさい。
2) 「三角形」の重心を計算する関数を作成しなさい。この関数を用いて問題1を行いなさい。
3) 2つの「三角形」の「頂点」の座標を読み込み、どちらの「三角形」の中心点が原点に近いか求めなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland C++Compiler Version 2.31
 [3.3] 言語:C++
[4] 期限: 2008年2/29日中
[5] その他の制限: なし
  切羽詰って依頼します。よろしくお願いします。






487 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 03:54:35 ]
>>486
3)は、「中心点が原点に近いか」じゃなくて「重心が原点に近いか」じゃないの?

488 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 07:58:42 ]
重心の求め方がわからない?
各座標のx,yをそれぞれ足して3で割るだけじゃん。

489 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:57:25 ]
>>486
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6107.txt

490 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 17:06:38 ]
>>484 多少は早いんじゃないかと思う。 20kで動かせないからわからないけど
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/time.h>
#include<math.h>
typedef unsigned char byte_t;
int srcsize;
int comp(const void *p1, const void *p2){ return memcmp(*(byte_t**)p1, *(byte_t**)p2, srcsize); }
int main(void){
int n;
byte_t *src, *blockarea, *tmp, **blocklst;
struct timeval stv={0}, etv={0};
srcsize=20000;
src = (byte_t *)calloc(sizeof(byte_t),srcsize);
blockarea = (byte_t *)calloc(sizeof(byte_t),(srcsize*srcsize));
blocklst = (byte_t **)calloc(sizeof(byte_t*),srcsize);
if(src == NULL || blockarea == NULL || blocklst == NULL){ return 1; }
for(n=0;n<srcsize;n++)src[n]=rand()&255;
gettimeofday(&stv, NULL);
memcpy(blockarea, src, srcsize);
blocklst[0] = blockarea;
for(n=1,tmp=blockarea+srcsize; n<srcsize; n++, tmp+=srcsize){
memcpy(tmp, src+n, srcsize-n);
memcpy(tmp+srcsize-n, src, n);
blocklst[n] = tmp;
}
qsort(blocklst, srcsize, sizeof(byte_t*), comp);
gettimeofday(&etv, NULL);
fprintf(stderr, "time %g sec\n", (etv.tv_sec-stv.tv_sec)+abs(etv.tv_usec-stv.tv_usec)/1000000.0);
return 0; }

491 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 17:30:14 ]
>>490
あっ、インデックス保持してやないや
メモリの解放もわすれてるし・・・
どうも、ボケてるな

492 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 18:18:41 ]
486です。レス遅くなってしまったがありがとうございました。

493 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:33:08 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
<四則演算機の作成>
テキストファイルから数式を読み出し、計算結果を別ファイル名で出力する。
数式には、+−*/()を含む。計算結果は整数とし、小数点以下は切り捨てる。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 2008年3月3日10:00まで
[5] その他の制限:逆ポーランド記法に並び替えて計算するという手順で
プログラムを作成しなさいとの説明がありました。逆ポーランド記法に
並び替えるプログラムで詰まってしまい先に進めらなくなってしまいました。
丸投げなのですがよろしくおねがいします。

494 名前:デフォルトの名無しさん [2008/03/02(日) 16:00:36 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
<copying-GCをC言語で作成 >
授業で行ったcopying-GCをC言語でせよ。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2008年3月5日00:00まで
[5] その他の制限:なし
C言語が大の苦手で、今遅れを取り戻そうとしているのですが。
期限が迫り、自分ではやってみるもののまったくわからないのでお願いします。

495 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 16:09:41 ]
これはひどいwwwww

496 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 16:17:11 ]
おい、だれかエスパーを呼んでくれ



497 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 16:36:47 ]
ぎゃぼー俺には解けそうにない

498 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:34:48 ]
この中に誰か授業に行った奴はいないのか!

499 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 22:22:58 ]
>>494
#include "copying-GC.h"
#include <stdio.h>

int main(void) {
char s1[]="copying-";
char s2[]="GC";
printf("%s\n", copygin-GC(s1, s2));

return 0;
}


500 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:03:31 ]
個人で作成代行してくれるところってある?
雑誌の後ろらへんとか見てみたんだけどなかった、、、かといって会社に頼むとめちゃくちゃ高いし...

501 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:11:24 ]
それが宿題ならここで丸投げすればいい。
そうでないならそもそもスレ違い。

502 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:23:03 ]
宿題だが、難しいから探してる
スレ違いということなので、他で探してくる...orz

503 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:53:26 ]
いや、宿題ならとりあえずテンプレに沿って書いてみれば?
専門知識が必要だと厳しいかも知れんが、参考になりそうなサイトでの添付してくれれば
やさしいお兄さんが答えてくれる可能性はグンと上がると思うよ?

504 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:55:16 ]
>>502
前方後円墳の容積を求める宿題なら。。

505 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 08:26:08 ]
>>493
途中までです。仕事から帰ったら完成させます。すんません。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6112.txt

506 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 09:58:24 ]
>>493
泥臭い
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6113.txt



507 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:16:16 ]
>>484
C言語で書いてみたんだが、まだ必要だったらレスplz

参考までに速度比較(速度調べるために遅いマシンで測定した)
>>484 のコードで 20000 の時 8.96 sec
書いてみたコード 20000 の時 0.11 sec
書いてみたコード 200000 の時 1.41 sec

508 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:19:39 ]
>505,506
493です、ありがとうございました。
直前で見ることができなかったのですが、
なんとか明日まで延ばしてもらえたので
ありがたくいただきます。

509 名前:デフォルトの名無しさん mailto:rinji_you@hotmail.co.jp [2008/03/03(月) 19:53:44 ]
>>504-504
ありがとう
でも前ちょっと聞いたんだけどスルーされちゃったから(キャプチャ関係)

ちょっと切羽詰ってて、やらなきゃいけないので
当然謝礼はちゃんと出しますのでやって頂ける方はメールください(捨てアドでいいので)
スレ違いすぎるのでとりあえずこれくらいで書き込みはやめます
よろしくお願いします

510 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 20:36:52 ]
>>493
もう書いてる人いるけどせっかくだから張ってみる。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6118.cpp

511 名前:デフォルトの名無しさん mailto:age [2008/03/03(月) 20:58:44 ]
素数を求めるC言語プログラミングを教えてください
条件が有りまして
for文のネストもしくはwhile文のネストを使ってなおかつgoto文を使って下さい
よろしくお願いします。

512 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 21:01:18 ]
>>511
>>1 を読んで書き直すか下のURLクリック
ttp://pc11.2ch.net/test/read.cgi/tech/1203343907/394


513 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:08:59 ]
「goto使え」って指定は初めて見たなw

514 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:33:35 ]
map<int, map<int, int>> hogehoge;
 ↑外側 ↑内側

これの内側のmapにデータがある時に外側のmapをclearした場合、内側のmapに格納してあるデータは自動的に解放されるのでしょうか?

515 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:36:46 ]
>>514
解放されます
というか、特定の型の場合だけ残すほうが難しいよ

516 名前:デフォルトの名無しさん [2008/03/03(月) 22:45:31 ]
>>515
ありがとうございます。
感謝です。
いつもわざわざ内側をclearしてから外側をclearしていました。><



517 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:07:59 ]
>>510
おお、さらに書いていただけたとは・・。
ここまで短くなるものなのですね。自分で途中まで書いてたものが
えらく長かったので助かります。505-506の方のと両方参考にして
提出後自分で練り直してみたいとおもいます。

ありがとうございました。

518 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 00:41:18 ]
>>493
俺も作ったから貼ってみる
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6119.c

519 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 02:05:34 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):()
for文を使用して、15パズルを作成せよ。
出来るなら経過時間も表示させること。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C++
[4] 期限: 2008年3月29日まで
[5] その他の制限:

学校の課題です。出来るところまでやってみたものをろだにあげてあります。
開始時にランダムにピースを配置するものと、正解判定、経過時間の表示が手付かずの状態です。
出来ればあれ(ろだ、6120.txt)に手を加える形で作って頂ければ助かります。

520 名前:519 mailto:sage [2008/03/04(火) 02:08:50 ]
ろだへのアドレスを貼り忘れました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6120.txt
です。

521 名前:505 mailto:sage [2008/03/04(火) 02:19:22 ]
>>493
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4)です。
すでに他の方のすばらしいものがあり、私のもののメリットは皆無です。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6121.txt

522 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 02:20:54 ]
>>519
まずは、パズル.bmpと、空きに、指定する、数字と、完成形を、示して、ください

523 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 03:24:29 ]
>>522
大変もうしわけありませんでした。
パズル.bmpはこちら(ttp://neko-loader.net/pict/src/neko18219.bmp)です。アップローダー(ねころだ)ですがご容赦ください。

完成形は、どう言えば良いんでしょうか。
「実行したときには、すでに数字パネルがバラバラに配置されている」「それをパズル.bmpのように元通りに直したら完成と表示される」
といった形です。
最初に表示される画像は完成したパズルの形だけれども、その後バラバラに配置されて……といった流れはなくとも大丈夫のようです。
15パズルとしては、Wikiペディア(ttp://ja.wikipedia.org/wiki/15%E3%83%91%E3%82%BA%E3%83%AB)に書いてあるものと同じスタンダードなものです。
メイン関数の部分にオセロゲーム、と書いてありますが、そこは消し忘れですので気になさらないでください。

本当に申し訳ないのですが、「空きに指定する数字」というのがよくわからず……。
こちらの知識不足で、ご迷惑をおかけしますが、どういったことでしょうか。

524 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 08:00:38 ]
>>523
なにが判らないのか判らない。15パズルが、ピースを一つずつずらしていくパズルだと言うことは理解できているの?
先ずはWeb上にある15パズルを探してきて自分で動かしてみたら?

525 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 12:51:42 ]
>>524
一応、そのあたりのことは理解しているつもりなのですが……。

現状(6120.txt)では、キーボードの上下左右を押して、ピースをずらす、という段階までは作れたつもりなんですが
「ピースを順番どおりにきちんと並びかえたときに、どうやってそれを判定するのか」
「最初にどうやってピースがバラバラに配置された状態にすればいいのか」
の二つがわからなかったんです。

526 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 13:14:32 ]
>>525
きちんと並んだかどうかは、例えば1から15までのピースに1から15までの番号を振りブランクに0を振ったとして、
それらが1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0になったかどうかで判断すればいい。
初期位置は、解けないパズルになる可能性が合ってもいいなら、1から15までとブランクをシャッフルして配置すれば宜しい。
解けないパズルになってはいけないのなら、揃った状態からプログラム的にランダムにピースを操作するしかない。



527 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 13:37:12 ]
>>526
> 揃った状態からプログラム的にランダムにピースを操作するしかない。

本当?

528 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 13:38:43 ]
パリティを考慮して配置すればOK。でもめんどいw

529 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 15:35:20 ]
>>527の言うとおりに、揃った状態から盤面をランダムにする方がいいと思う


530 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 16:04:17 ]
>>526
if(masu[1][0]==1)&&(masu[2][0]==2)……という風にやっていけば大丈夫でしょうか。
ひとまずやってみます。アドバイス本当にありがとうございます。

ピース配置のほうも、助かりました。>>529さんも、ありがとうございます。
揃った状態から盤面をランダムにする、という方法でひとまずやってみたいと思うのですが……。
randを使用すれば良いんでしょうか。

531 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 18:42:17 ]
>>528
パリティが奇だったら最後の2ピースひっくり返すだけ。面倒でもないよね。

532 名前:528 mailto:sage [2008/03/04(火) 19:35:34 ]
私が確認するのが面倒なの!w

533 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 19:39:34 ]
>>530
15パズルなら、randで4まで出るようにして、それを空白のマスで行う、とか

1……空白マスの上を動かす
2……右を
3……下を
4……左を

ってな具合に
角と辺では別処理

534 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 01:05:26 ]
>>533
ありがとうございます。自分では考えもつきませんでした……。
戴いた助言どおりに進めてみることにします。

535 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 04:56:30 ]
>>519
簡単に作ってみた。C++詳しくないんで中身はほとんどCだけど。
元のソースはよくわからんかったので全く利用してませんが悪しからず。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6123.cpp


536 名前:535 mailto:sage [2008/03/05(水) 05:45:15 ]
malloc()のとこ、型変えたのに直し忘れてた。
sizeof(unsigned char) ではなく sizeof(unsigned int) です。



537 名前:535 mailto:sage [2008/03/05(水) 06:59:44 ]
確認不足で申し訳ない。見直したら不具合が残ってたので訂正。
moveTest()のDIR_NとDIR_Sは
case DIR_N: return (y_size > 1 && i >= x_size);
case DIR_S: return (x_size == 1) ? (y_size > 1 && i < y_size-1) : (y_size > 1 && i < (x_size-1) * y_size);
にしといて下さい。
あとshuffle()は最初のほうに if(x_size == 1 && y_size == 1) return; を加えて下さい。


538 名前:519 mailto:sage [2008/03/05(水) 12:42:03 ]
>>537
本当にありがとうございます。助かりました。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<299KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef