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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 02:13:06 ]
あなたが解けない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++の宿題片付けます 122代目(実質123代目)
pc11.2ch.net/test/read.cgi/tech/1232029287/

237 名前:236 mailto:sage [2009/03/14(土) 21:28:40 ]
おーう、中のPrintTreeもPrintTreeRevだ
逝ってくる

238 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:33:53 ]
>>227
微妙に質問が質問として成立してないんじゃね?
OS自体がプログラムだから、プログラムとして違いがあるし、
OSの機能を使うプログラムの場合も、OSが違うからプログラムとして違いがある。

>>234
いい感じ
でも、"%98s"じゃなく、"%98[^\n]"じゃないとダメぽ


239 名前:234 mailto:sage [2009/03/14(土) 21:44:06 ]
>>238
すまん。なぜダメなのか教えてくれないか。
何が入力されたときにまずい?

240 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:48:53 ]
>>239
すんません。
勘違いしてました。
scanf一回で、式を全部持ってくるのかと思ってました。。。

241 名前:234 mailto:sage [2009/03/14(土) 21:51:32 ]
>>240おk。

242 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 22:12:01 ]
>>237
出来ました!ありがとうございます!

243 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 22:54:57 ]
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8976.txt
[3] 環境
 [3.1] OS:ウィンドウズvista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: [2009年3月15日]
[5] その他の制限:なし

お願いします

244 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 00:23:05 ]
>>243
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8977.txt

245 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 00:37:13 ]
あるある



246 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:19:15 ]
osの違いでC言語に違いが出てくることってあるんですか?

247 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:19:53 ]
>>244
ありがとうございます

248 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:49:26 ]
[1] 授業単元: データ構造アルゴリズム
[2] 問題文 スタックを利用した逆ポーランド電卓を作成しなさい。ただし、演算は四則演算のみとし、数値と数値、数値と演算子の間は半角スペースで区切って入力することとする。
逆ポーランド電卓
逆ポーランド記法の数式を入力してリターンキーを押すと答えを表示してくれるもの。スタックを使用して以下のように計算する。
1.数値なら、そのままスタックにつむ
2.演算子なら、2つの数をスタックからおろして演算を行い、その結果を再びスタックにつむ。
※逆ポーランド記法とは演算子を後ろに置く記法。例えば1+2は12+に、(1+2)*3は12+3*になる。逆ポーランド記法は後置法ともよばれる。
[3] 環境
 [3.1] OS: (unix)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: [3/16]
[5] その他の制限: なし
よろしくお願いします。

249 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 02:08:17 ]
>>248

>>220>>234を見ろ。
なんというか、まあ、お前らのところ本当にどうしようもないのしかいないんだな

250 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 02:18:35 ]
>>249 問題が同じでも細かいところが違うんですよ。


251 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 02:24:17 ]
確かにOSが違うな

252 名前:249 mailto:sage [2009/03/15(日) 02:51:34 ]
>>250
すまん、その細かいところってどこだ?

>>251
>>222見る限りOSも同じだが。


253 名前:デフォルトの名無しさん [2009/03/15(日) 03:22:19 ]
すみません、C初心者で、今課題をやってるのですが、入門書見ながらでもさっぱりです。
よろしくおねがいします。。

↓↓↓↓↓
以下のプログラムは、入力された10個の数値を引き算し、その結果を表示するプログラムです。
9〜11行目を別の関数(関数名はFuncDev)とし、修正しなさい。ただし、グローバル変数は使わないこと。
またFuncDev内のローカル変数名は任意とします
FuncDev関数は以下の定義とします
int FuncDec(void);
FuncDev関数の戻り値は、画面入力されたint型データとします。

1:#include<stdio.h>
2:void main(void);
3:void main(void)
4:{
5: int n1 n2;
6; int nt;
7: nt=0;
8: for(n1=0;n1<10;n1++){
9: printf("0-9の数値を入力:");
10: scanf(" %d",&n2);
11: nt-=n2;
12: }
13: printf("結果は%dです",nt);
14:}

254 名前:>>253 mailto:sage [2009/03/15(日) 03:34:52 ]
#include <stdio.h>
int FuncDev(void);
int main(void)
{
int nt, n1;
nt = 10000;
for(n1 = 0; n1<10; n1++){
nt -= FuncDev();
}
printf("結果は%dです", nt);
}
int FuncDev(void)
{
int n2;
scanf(" %d", &n2);
return n2;
}

255 名前:デフォルトの名無しさん [2009/03/15(日) 03:41:45 ]
>>254
すばやいご回答ありがとうございました。
私は問題の意味を勘違いしていたみたいでした。
自分一人だったら白紙で出すところでした。

本当にありがとうございました




256 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 03:52:02 ]
OSがunixって幅が広すぎるよな。

257 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 04:01:21 ]
[1] 授業単元: データ構造アルゴリズム
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8979.txt
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン: BCC Borland C++ 5.5.1
 [3.3] 言語: C
[4] 期限: ([2009年3月15日])
[5] その他の制限:なし

258 名前:>>253 [2009/03/15(日) 04:18:12 ]
>>254さま
すみません、
今読んでいて疑問に思ったのですが、
6行目の
nt=10000;
とはどういう意味なのでしょう?
簡単に解説をしてくださると助かります

259 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 04:50:50 ]
>>252 問題はいっしょだが条件が追加されてる。

260 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 05:09:36 ]
>>259
どんな条件?

逆ポーランド電卓の説明が追加されているだけにしか見えんが?

261 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 09:48:42 ]
>>260
ようわからんが実行結果がちがったんじゃねーの?たぶん同じやつが書き込んでるとおもわれる。

262 名前:>>253 mailto:sage [2009/03/15(日) 09:58:05 ]
ntは引かれる数。10000は一万。

263 名前:デフォルトの名無しさん [2009/03/15(日) 13:42:22 ]
>>253
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include "windows.h"
using namespace std;

int FuncDec(){
int n2;
cout << "input 0-9" << endl;
cin >> n2;
return n2;
}

int main(void){
int n1;
int nt=0;
for(n1=0;n1<10;n1++){
nt-=FuncDec();
}
cout << "output " << nt;
Sleep(10000);
}

264 名前:デフォルトの名無しさん [2009/03/15(日) 13:45:44 ]
このスレ、己の描いた独自プログラムと簡単な問題文しか出さない人が多いけど
独自プログラムなんて出すよりも
詳しい問題文やどういったアルゴリズムにしようとしてるか描いてくるほうがありがたい
というのもプログラムなんざ千差万別だから、そんなもの提示されても
俺のプログラムと描き方の雰囲気が少しでも違ってたらいちいち面倒なことになる

265 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 14:12:06 ]
>>264
宿題スレに何を求めているの?



266 名前:デフォルトの名無しさん [2009/03/15(日) 15:55:22 ]
この世に存在するソフトウェアのソースが公開されているものなんて
ほんのごく一部だぞ?他人の猿真似でどうにかなるもんでもなかろう
定石なんて、書店に行けばいくらでも見つかるぞ

267 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:55:41 ]
osの違いでC言語に違いが出てくることってあるんですか?


268 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:56:24 ]
>>267
環境依存に関わるライブラリではあり得る。

269 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 16:16:48 ]
>>267
Cの規格上、差異を認めている部分(処理系定義)では起こりうる。
もちろんOSの値が以外の原因で起こることもあるけど。

型の大きさとか表現方法とか。

270 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 17:24:29 ]
>>264
所詮、ここはC系で一番バカな質問を受け付ける/受け流すためのハコだからな。
問題文の読み方も分からないって手合いが多数だし、「ここまで書きました」は大概読まないほうがいい。
動かないコードを見て、何のツモリか当て推量するのは不毛だしな。

・・・動いているコードでさえ、何のツモリ(仕様)かなんて、推量はあてにならないしな。


271 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 17:57:16 ]
>>248 parseあんま自信無いw
#include<stdio.h>
#include<ctype.h>
int s[99],p,a;
void push(int n){s[p++]=n;}
int pop(void){return s[--p];}
int main(){
 int c,t;
 for(;(c=getchar())!=EOF&&c!='\n';){
  if(isspace(c));
  else if(c=='+')t=pop(),push(pop()+t);
  else if(c=='-')t=pop(),push(pop()-t);
  else if(c=='*')t=pop(),push(pop()*t);
  else if(c=='/')t=pop(),push(pop()/t);
  else if(ungetc(c,stdin),scanf("%d",&t)==1)push(t);
  else return fprintf(stderr,"Parse error!");
 }
 printf("%d\n",pop());
}

272 名前:271 mailto:sage [2009/03/15(日) 18:00:01 ]
悪い。修正版。
#include<stdio.h>
#include<ctype.h>
int s[99],p;
void push(int n){s[p++]=n;}
int pop(void){return s[--p];}
int main(){
 int c,t;
 for(;(c=getchar())!=EOF&&c!='\n';)
  if(isspace(c));
  else if(c=='+')t=pop(),push(pop()+t);
  else if(c=='-')t=pop(),push(pop()-t);
  else if(c=='*')t=pop(),push(pop()*t);
  else if(c=='/')t=pop(),push(pop()/t);
  else if(ungetc(c,stdin),scanf("%d",&t)==1)push(t);
  else return fprintf(stderr,"Parse error!");
 printf("%d\n",pop());
}

273 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:03:04 ]
getchar()使うヤツって……

274 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:03:50 ]
いちいち言うくせに、指摘や適切なものを提示しないヤツって・・・口先だけのインポ野郎だなw

275 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:07:58 ]
>>272さんありがとうございます。




276 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:09:15 ]
こんなスレで偉そうにしているヤツって……

277 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:09:51 ]
>>273
普通につかうガナ

278 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:18:36 ]
>>270
初心者のコード見てこき下ろしたり、黒歴史を思い返したりするのもまた一興じゃないか。

279 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 20:03:56 ]
お願いします

[1] 授業単元: データ構造アルゴリズム
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8979.txt
こののプログラムのクイックソートを行っている関数quickを,非再帰的なアルゴリズムに書き換えてください.
[3] 環境
 [3.1] OS:Win
 [3.2] コンパイラ名とバージョン: BCC
 [3.3] 言語: C
[4] 期限: ([2009/3/15])
[5] その他の制限:なし

280 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 21:55:22 ]
非再帰って自前でスタック使ったら、再帰アルゴリズムを
言語の再帰使わずに実装しているだけの様な。

281 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 22:37:11 ]
クソ課題だなあ

282 名前:自分が解けもしないくせに口だけは大きい馬鹿 [2009/03/15(日) 22:40:26 ]
281 名前:デフォルトの名無しさん 投稿日:2009/03/15(日) 22:37:11
クソ課題だなあ

283 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 22:55:57 ]
分割統治法を非再帰でやらせるとか
クソ課題以外の何者でもないだろ

284 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 23:02:32 ]
こんな感じかな?
void quick(Data a[], int left, int right,
int Cmp(Data x, Data y, int order), int order){
int pl;
int pr;
Data x;
while(1)
{
pl =left;
pr =right;
x = a[(pl+pr)/2];
do {
while(Cmp(x, a[pl], order)) pl++;
while(Cmp(a[pr], x, order)) pr--;
if ( pl <= pr ){
swap(Data , a[pl], a[pr]);
pl++;
pr--;
}
} while(pl <= pr );
if (left < pr) {right = pr; continue;}
if (pl < right) {left = pl; continue;}
break;
}
}

285 名前:自分が解けもしないくせに口だけは大きい馬鹿 [2009/03/15(日) 23:14:59 ]
283 名前:デフォルトの名無しさん 投稿日:2009/03/15(日) 22:55:57
分割統治法を非再帰でやらせるとか
クソ課題以外の何者でもないだろ



286 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 23:15:35 ]
オレが解けないのは課題が悪いからだ!

287 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 23:18:06 ]
>>281>>283
スレ違い。公開オナヌーは他所でどぞ。

288 名前:デフォルトの名無しさん [2009/03/15(日) 23:26:07 ]
口先だけのヤツは、いつも自分がそれに対してどう思うか?
という主観しか述べず、問題があるなら問題点を指摘するなり
客観性のある見解を示さず、自分が言ったことを反対されると
ファビョるだけの井の中の蛙なんだなぁ

289 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 00:15:42 ]
>>284さんありがとうございますm(_;)m

290 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 00:51:08 ]
>>289
間違っる。
最初のleftとrightを記憶し、
左側を絞り込み、記憶しておいたleftとrightで右側を絞り込むように
2回に分けないといけないみたい。

291 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:04:18 ]
>>283
再帰を反復に変換するのは普通の課題だろ。

292 名前:デフォルトの名無しさん [2009/03/16(月) 01:15:13 ]
初心者です。
/*BMI.c*/

#include<stdio.h>

int main()
{
double a,b,c;
c=b/(a*a);

printf("あなたの身長(m)を入力してください。-----");
scanf("%f",&a);
printf("あなたの体重(kg)を入力してください。-----");
scanf("%f",&b);


printf("あなたのBMIは%fです。\n",c);

if(c >=25){

printf("あなたは肥満です。");
}

return 0;


これはあってますか?

293 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:19:08 ]
>>292
間違ってます。

294 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:25:59 ]
修正?
void quick(Data a[], int left, int right,
int Cmp(Data x, Data y, int order), int order){
int pl;int pr;Data x;int _right;
_right = right;
while(1)
{
pl = left;pr = right;x = a[(pl+pr)/2];
do {while(Cmp(x, a[pl], order)) pl++;while(Cmp(a[pr], x, order)) pr--;
if ( pl <= pr ){swap(Data , a[pl], a[pr]);pl++;pr--;}
} while(pl <= pr );
if (left < pr) {right = pr; continue;}
break;
}
left = 1;right = _right;
while(1)
{
pl = left;pr = right;x = a[(pl+pr)/2];
do {while(Cmp(x, a[pl], order)) pl++;while(Cmp(a[pr], x, order)) pr--;
if ( pl <= pr ){swap(Data , a[pl], a[pr]);pl++;pr--;}
} while(pl <= pr );
if (pl < right) {left = pl; continue;}
break;
}
}

295 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 02:16:47 ]
それじゃ無理だろ



296 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 03:09:37 ]
修正の修正?
void quick(Data a[], int left, int right,
int Cmp(Data x, Data y, int order), int order){
int pl;
int pr;
Data x;
int _right;
_right = right;
while(1)
{
pl = left;
pr = right;
x = a[(pl+pr)/2];
do {
while(Cmp(x, a[pl], order)) pl++;
while(Cmp(a[pr], x, order)) pr--;
if ( pl <= pr ){
swap(Data , a[pl], a[pr]);
pl++;
pr--;
}
} while(pl <= pr );
if (left < pr) {right = pr;continue;}
else
right = _right;
if (pl < right) {left = pl;continue;}
break;
}
}

297 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 04:16:12 ]
>>294
>>295
>>296
重ね重ねありがとうございます

298 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 04:28:20 ]
>>296
無駄が多い

299 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 04:55:23 ]
>>298
模範解答をお願いします。

300 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 05:27:00 ]
クイックソート 非再帰でググればいくらでも転がってるだろ

301 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 11:35:25 ]
>>292
a,bに値が格納される前にcを計算しているので間違い。

302 名前:デフォルトの名無しさん [2009/03/16(月) 12:03:26 ]
>>298
指摘するくらいなら、自分がそれに応じたコードを示せよ?
ここんとこ、口先だけの役立たずw

303 名前:デフォルトの名無しさん [2009/03/16(月) 16:54:19 ]
>>301
ありがとうございます。

304 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 17:16:54 ]
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):要素数10個の整列配列を用意します。
要素を入力し、クイックソートを用いて昇順にソートするプログラムを作成しなさい。
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: qsortを使わないでお願いします。


305 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 17:24:06 ]
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):qsort関数を用いてソートするプログラムを作成しなさい。身長の昇順、視力の降順など、複数の条件でソートすること。
※qsort関数
書式 void qsort(void*base,size_t nmemb,size_t size,int(*compar)(const void*,const void))
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限:



306 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 17:26:47 ]
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):文字列から任意の文字を探索するプログラムを作成しなさい。
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: なし
よろしくおねがいします。

307 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 17:34:56 ]
>>304
>>219,>>225

308 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 17:41:24 ]
>>307
その問題はqsortを使っているので…

309 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:01:55 ]
>>306
#include <stdio.h>
#define BUFSIZE 108
char *mstrchr(const char *src, char ch)
{
for(;*src;++src) if(*src==ch) return (char*)src;
return 0;
}
int main()
{
char buf[BUFSIZE], ch, *p;
int c = '0';
printf("文字列:", buf);
fgets(buf, BUFSIZE, stdin);
/*if(!mstrchr(buf, '\n')) while(c!='\n'&&c!=EOF) c = getchar();
if(c==EOF) return 1;*/
printf("文字:", buf); ch = getchar(); p = mstrchr(buf, ch);
if(p) printf("%d文字目\n", p-buf+1);
else printf("なかった\n");
return 0;
}

310 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:25:04 ]
>>309さんありがとうございます。


311 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:26:40 ]
>>304
#include <stdio.h>
#define N 10
void mqsort(int x[], int left, int right){
int i=left,j=right,p=x[(i+j)/2];
while(1){
while(x[i]<p) i++;
while(p<x[j]) j--;
if(i>=j) break;
{int tmp = x[i]; x[i] = x[j]; x[j] = tmp;}
i++;j--;
}
if(left<i-1) mqsort(x, left, i-1);
if(j+1<right) mqsort(x, j+1, right);
}
int main(){
int a[N],i;
for(i=0;i<N;++i)scanf("%d",a+i);
mqsort(a,0,N-1);
for(i=0;i<N;++i)printf("%d ",a[i]);
return 0;
}

312 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:29:24 ]
>>309
strchr() に準じてだろうけど
const char* で受けた一部を char* で戻すのって微妙に気持ち悪いよね

313 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:34:35 ]
>>311
dクスです。


314 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:38:22 ]
>>308
>>279


315 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:56:12 ]
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク): "string"の先頭の三文字を入力した文字の三文字と比較して、
一致すれば0を一致しなければ1を出力するプログラムを作成しなさい。また、"XXXX"を入力すると終了するようにしなさい。

[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: なし
よろしくおねがいします



316 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 19:04:01 ]
[1] 授業単元:データ構造アルゴリズム
[2] 問題文 ある文の中に指定した語が見つかるとその場所を表示するプログラムをBM法を用いて作成しなさい。
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: なし
おねがいします

317 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 19:13:43 ]
どんだけ宿題溜め込んでるんだよw

318 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 19:45:41 ]
>>315
#include <stdio.h>
#include <string.h>
int main(){char s[]="string",b[5];return fgets(b,5,stdin)&&strcmp(b,"XXXX")&&printf("%d",strncmp(b,s,3)?1:0)>=0;}

319 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 19:54:58 ]
>>318
短いっすね。ありがとうございます。


320 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 20:01:32 ]
>>318
これで出したらやり直しくらいそうだがな

321 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 20:16:21 ]
>>318
教員もこんな簡単な問題に対して,こんな大人げない解答出されたら疑問に思うわなw

322 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 20:54:37 ]
>>318
お前のような漢になりたい

323 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 21:17:48 ]
>>320-322
むしゃくしゃしてやった。反省はしていない。

>>316
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8981.txt

324 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 21:44:34 ]
>>323
これは信用していいんですよね?

325 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 21:47:51 ]
>>311
だからqsortは使っちゃだめ!



326 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:05:18 ]
>>315 ./a <ソース.c
#include <stdio.h>
int main()
{
  char s[] = "string", b[1024]; /*
string */
  do {
    if(!gets(b)) return 1;
    printf("%d\n", strncmp(b,s,3) ? 1:0);
  } while(strcmp(b, "XXXX"));
  return 0;
}

327 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:19:52 ]
>>326
./a<ソース.cが意味不明なんですけど


328 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:26:25 ]
>>326
>>318の後にこれを貼る勇気に乾杯
とりあえずgetsはやめろ

329 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:36:55 ]
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):要素数10個の整数配列を用意します。要素を入力し、シェルソートを用いて昇順にソートするプログラムを作成しなさい。
今回は、比較幅を1,2,4,8…のような2のべき乗とする。
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: なし
よろしくおねがいします

330 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:42:12 ]
2021年か、結構先だな

331 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 23:11:38 ]
>>315 ./a <ソース gets使ってしまった。
#include <stdio.h>
int main()
{
  char s[] = "string", b[1024]; /*
string */
  do {
    if(!fgets(b,1024,stdin)) return 1;
    printf("%d\n", strncmp(b,s,3) ? 1:0);
  } while(strcmp(b, "XXXX\n"));
  return 0;
}

332 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:07:12 ]
>>329
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8982.txt

333 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:10:26 ]
>>329
比較幅って言葉の意味がわかんね。

334 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:17:02 ]
>>332さんありがとうございます。


335 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:54:07 ]
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):qsort関数を用いてソートするプログラムを作成しなさい。身長の昇順、視力の降順など、複数の条件でソートすること。
※qsort関数
書式 void qsort(void*base,size_t nmemb,size_t size,int(*compar)(const void*,const void))
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([09年3月17日まで] )
[5] その他の制限:




336 名前:335 mailto:sage [2009/03/17(火) 00:58:08 ]
お願いします。この問題とかないと単位がやばいです。

337 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 01:01:11 ]
>>335
入力の形式が分からん。勝手に決めていいのか?

338 名前:335 mailto:sage [2009/03/17(火) 01:05:26 ]
いいです。レスください!

339 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 01:32:54 ]
>>335
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8983.txt

340 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 01:44:02 ]
>>339
修正
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8985.txt

341 名前:335 mailto:sage [2009/03/17(火) 06:18:57 ]
>>340ありがとうございます。


342 名前:335 mailto:sage [2009/03/17(火) 07:09:00 ]
すいません!ヘッダとしてが必要という条件が出ているのを忘れてました。どなたか
<stdlib.h>を使った>>335をレスお願いします!

343 名前:335 mailto:sage [2009/03/17(火) 07:10:59 ]
すいません訂正ですヘッダとして<stdlib.h>が必要という条件が出ているのを忘れてました。どなたか
<stdlib.h>を使った>>335をレスお願いします!


344 名前:335 mailto:sage [2009/03/17(火) 07:16:32 ]
>>340さんせっかくレスくれたのに申し訳ありません。

345 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 07:39:30 ]
>>1
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。



346 名前:335 mailto:sage [2009/03/17(火) 07:45:25 ]
そこをなんとか!せっぱつまってるんです。

347 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 07:48:51 ]
340の
void qsort(void*base,size_t nmemb,size_t size,int(*compar)(const void*,const void*));
の代わりに
#include <stdlib.h>
にすりゃいいだけだろw

348 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 07:51:12 ]
>>346
qsort()のプロトタイプ宣言を#include<stdlib.h>に置き換える

349 名前:335 mailto:sage [2009/03/17(火) 08:00:10 ]
>>347さん>>348さんありがとうございます。


350 名前:デフォルトの名無しさん [2009/03/17(火) 12:41:52 ]
論より証拠、言葉よりソースコード、日本語よりプログラム言語
分かったか?最近、口先だけの、新入りは?

351 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:02:20 ]
>>350
ソースでくれ

352 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:27:20 ]
>>351
ttp://www.bulldog.co.jp/products/home/

353 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:28:06 ]
いまどきそれかよw

354 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:34:08 ]
>>353
ttp://www.otafuku.co.jp/

355 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:48:04 ]
腹減るじゃんか。



356 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 15:06:26 ]
やっぱり今時はおたふくだよねー

357 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 16:46:44 ]
よろしくお願いします。
[1] 授業単元: プログラミング実習
[2] 問題文 キーボードから名前と年齢を入力し、入力した順序につながったリストを作成して、それを利用して表示するプログラムを作成しなさい。
(実行例)
>%a.out
Please,write down your name >taro
How old are you? >27
Continue?yes(1)or no(0)>1
Please,write down your name >hanako
How old are you? >27
Continue?yes(1)or no(0)>0

taro /27
hanako /27
>%

[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([09年3月17日まで] )
[5] その他の制限: (なし)


358 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 17:31:22 ]
このプログラム./a.outしても%がでてしまうのですがどこを直せばいいですか?
ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8981.txt

359 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 17:45:20 ]
>>357張り付いてリロードリロード大変でしょ?
ネタ投下したらしばらく
本読むなりバイトするなり有意義に時間使いなよ

360 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 17:50:20 ]
 323 :デフォルトの名無しさん :2009/03/16(月) 21:17:48
 >>320-322
 むしゃくしゃしてやった。反省はしていない。

 >>316
 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8981.txt
./a std <8981.c     <-- これでOK

361 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 17:53:11 ]
>>360
いやそれじゃだめなんすよ…

362 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 18:06:35 ]
ttp://tokyo-ct.net/usr/kosaka/for_students/jissen1/akiyojissen1/kougi17.html
BM法

363 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 18:10:50 ]
>>362 嫌そうじゃないだろう。
(実行例)
% ./a.out <8981.c
入力した文字列は:#include <stdio.h>
検索する文字列を入力してください:std
10 文字目で一致しました。(一致する文字列が見つかりませんでした。)
% でOK?

364 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 18:15:51 ]
>>357
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8986.c

365 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 18:17:52 ]
え?./a.out<8981.cって入力するんですか?




366 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 18:19:49 ]
>>364さん。ありがとうございます。

367 名前:360 mailto:sage [2009/03/17(火) 18:22:37 ]
>>361 以下のように入力すると答えが出る。
% ./a.ou std <8981.c
10
%

368 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 18:34:47 ]
>>357 364に先越されたorz...
#include<stdlib.h>
#include<stdio.h>
typedef struct P{struct P*x;char n[64];int a;}P;
P h,*c=&h;int q;
int main(){
 for(;
  c->x=malloc(sizeof(*c)),c=c->x,c->x=0,
  printf("Please,write down your name >"),scanf("%63s",&c->n),
  printf("How old are you? >"),scanf("%d",&c->a),
  printf("Continue?yes(1)or no(0)>"),scanf("%d",&q),q;
 );
 for(c=&h;c=c->x;printf("%s /%d\n",c->n,c->a));
}


369 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 18:38:53 ]
>>368さんありがとうございます。


370 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 18:39:00 ]
くせぇくせぇ、後だし麻呂の臭いがぷんぷんすんぜ

371 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 18:40:48 ]
こりゃ〜生粋のクソースだ、クソースを消毒だ〜

372 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 19:31:03 ]
>>357 オリジナルは>>368さんのソース。
#include<stdio.h>
typedef struct P {
  struct P *x;
  char name[64];
  int age;
} Q ;

int main(){
  Q h, *c = &h;
  int qa;
  char dmy[2];

  do {
    c->x = malloc(sizeof(*c));
    c = c->x;
    c->x = 0;
    printf("Please,write down your name >"), fgets(c->name, 64, stdin);
    c->name[strlen(c->name)-1] = '\0';
    printf("How old are you? >"), scanf("%d", &c->age);
    printf("Continue?yes(1)or no(0)>"), scanf("%d%c", &qa, dmy);
  } while (qa);
  for( c = &h; c = c->x; )
    printf("\n%s /%d", c->name, c->age);
}

373 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:19:37 ]
ネタ切れー?

374 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:35:51 ]
mallocしたあとfreeしなくていいのか?

375 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:37:47 ]
課題だから書かないとダメってぐらいのレベルじゃね?



376 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:39:26 ]
いまどきのハードウェアでfreeしなくちゃならんヤツなんて皆無だろ
freeとか気取ってやってるソース見たらデスクトップ破りたくなる

377 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:41:12 ]
>>376
好きなだけ破ってろよマヌケ

378 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:04:22 ]
>>377


379 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:50:49 ]
>>357 >>374free追加したぞ。>>376のデスクトップ破れ。
#include<stdlib.h>
#include<stdio.h>
struct P{struct P*x;char n[64];int a;}h,*c=&h,t;
int main(){
 for(;
  (c=c->x=malloc(sizeof(*c)))->x=0,
  printf("Please,write down your name >"),scanf("%63s",&c->n),
  printf("How old are you? >"),scanf("%d%*c",&c->a),
  printf("Continue?yes(1)or no(0)>"),getchar()-'0';
 );
 for(c=&h;c=c->x;t=*c,free(c),c=&t)printf("%s /%d\n",c->n,c->a);
}

380 名前:今年度最高峰のレス [2009/03/18(水) 03:28:13 ]
>>376 >>376 >>376 >>376 >>376 >>376 >>376 >>376

>>376 >>376 >>376 >>376 >>376 >>376 >>376 >>376


381 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 12:35:35 ]
ハードがどうとか言う前に、例えmainの最後だろうと、メモリの動的確保をしたら
それに対してfreeはセットで使うのが望ましいのだが

382 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 12:49:28 ]
struct P tいらんかった。
 for(;c=h.x;h=*c,free(c))printf("%s /%d\n",c->n,c->a);

383 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 12:58:14 ]
たまに、プログラムが異常終了して、跡が残ることはある。
自分は大学で、ネットワーク関連の管理に携わったことがあるが、
ユーザがログオフしても、まだログインしたまま残ることもあった。
そう、コンピュータやプログラムには完璧なんて無いんだよ。
だから、こうやって今も、昔から色々と改善がされているんだろ?
その改善の経緯をもとに、こういったものも作られていくんだよ。
ただ単に、電子計算機に数値を与えて、処理をすれば良いわけじゃない、
システムを運営するのは。

384 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 13:01:14 ]
どこを縦読み?

385 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 13:06:27 ]
ネットゲームでクライアントを終了してもキャラがサーバーに残って
再ログインしようとしても入れませんでしたw



386 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 13:19:57 ]
大学でUNIXを使っていたが、まぁそれは管理者が今も普通に使っている
OSの基本。学生がワークステーションからログインして、終了するときに
ログオフの手続きをせずに、接続、作業で使っているプログラムを
Windowsのウィンドウの右上にあるクローズボックスで閉じてしまう人もいる。
それ以前に、コンピュータの電源スイッチを押して起動は出来るのだが
終了する際に、OSの終了手続きを取らずに電源を切ってしまった人もいた。
それにおけるトラブルも体験したさ。そういった、管理者側の立場になれば、
エンドユーザの身勝手さや、それを阻止する手立てや仕組みを作るのも、
プログラマーには必要なのさ、ワトソン君。

387 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 13:51:52 ]
また、OSも完璧ではない。プログラムを作った側の措置が不十分だったのか、
あるいはハードウェアに問題があったのか?それに応じてデバッグされることもある。
ただ、それも本当は、プログラマーの思い違いにより、作り直せば解決するものもあるが、
巨大なプロジェクトでいくら個別にモジュールを改良できるとしても、根幹、組み合わせ方に
問題があれば、やり直すしかない。ただ、この世には既にある定石、常套手段を用いてやれば
特に余計なことをしなければ、問題は起きないもんだよ。
しかし、人間の行動までは、正直、予期できない。今もなお、過去から続く争い。
裁判、解決のための判例作り。そして、判例に基づいて、今後は処理される人間同士の
トラブル。PCのトラブルなんて、電子計算機をちょちょいと弄れば済むことが多く、
楽なものですね、ポワロ殿。

388 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 14:02:47 ]
>>386,387___
  / || ̄ ̄||   ∧∧
  |  ||__||  (   )
  | ̄ ̄\三⊂/ ̄ ̄ ̄/
  |    | ( ./     /

   ___    ゴキッ
  / || ̄ ̄|| <⌒ヽ ))
  |  ||__|| <  丿
  | ̄ ̄\三⊂/ ̄ ̄ ̄/
  |    | ( ./     /

   ___
  / || ̄ ̄||   ∧∧
  |  ||__||  (   )
  | ̄ ̄\三⊂/ ̄ ̄ ̄/
  |    | ( ./     /

   ___
  / || ̄ ̄||
  |  ||__||        ミ ゴトッ
  | ̄ ̄\三⊂/ ̄ ̄ ̄/ミ ,'⌒>
  |    | ( ./     /  l、_>

389 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 14:17:40 ]
それで、結局、例え初歩的だろうとプログラムを作る以上は、何かしら
そういったシステムに関わる部分の知識も必要になるわけだろ?
第一、APIを使っているだけでも、既に出来上がったその仕組みを知ることになるし。
麻ー呂っくの後に、振りーを忘れないで賜う。

390 名前:372 mailto:sage [2009/03/18(水) 15:41:13 ]
実体のコピーを省く。
P *t;
for( c=h.x; c!=0; c=t) printf("\n%s /%d", c->n, c->a), free((t=c->x,c));

391 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 15:49:31 ]
病気が進行してるw

392 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 17:02:20 ]
聞き方が悪いかもしれませんが

hairetsu[0] = 10
hairetsu[1] = 5
hairetsu[2] = 13
...
というようなものにたいして
rank[0] = 1
rank[1] = 0
rank[2] = 2
...
というような感じにしてくれる関数はありますか?

それとも,自分で作らないとないですか?

393 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 17:11:30 ]
>>392
無いです
multimap もしくは map
にいれてイテレータで取り出せばおk


394 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 17:14:41 ]
何がしたいのか訳わからん。エスパー検定?

rankと聞くと行列の階数を思い出す。
なんか、肝心な所を省略してません?

395 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 17:15:50 ]
hairetsuのそれぞれの要素の大小関係をrankに0から入れていると?
並び替えの応用でやってみ。



396 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 17:25:42 ]
>>392
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int hairetsu[10], rank[10], i, j, temp;

srand(time(NULL));
for(i=0; i<10; i++) rank[i] = i, hairetsu[i] = rand() % 100;

for(i=0; i<10; i++) {
for(j=9; j>i; j--) {
if(hairetsu[rank[j]] < hairetsu[rank[j-1]]) {
temp = rank[j];
rank[j] = rank[j-1];
rank[j-1] = temp;
} } }

for(i=0; i<10; i++) printf("hairetsu[%d] = %2d, rank[%d] = %d\n", i, hairetsu[i], i, rank[i]);

return 0;
}

こんな感じにrankの方をソートしても可

397 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 17:42:36 ]
>>325

398 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 17:59:18 ]
>>397
どした?

399 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 19:15:15 ]
>>398 やらないか?

400 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 19:19:17 ]
>>396 ん?んんんっ?

401 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 21:04:01 ]
struct{int hairetu; int rank;} data[10];
rankには0を初期値として入れておいて、dataをhairetuでソートして、
次にrankに0〜9をセットして、もう一度、dataをrankでソート。
これは、「バブルソート」という名前。
#include <stdlib.h>
#include <time.h>

int main(void)
{
  int hairetsu[10], rank[10], i, j, temp;

  srand(time(NULL));
  for(i=0; i<10; i++)
    rank[i] = i, hairetsu[i] = rand() % 100;

  for(i=0; i<9; i++) {
    for(j=9; j>i; j--) {
      if(hairetsu[j] < hairetsu[j-1]) {
        temp = rank[j], rank[j] = rank[j-1], rank[j-1] = temp;
        temp = hairetsu[j], hairetsu[j] = hairetsu[j-1], hairetsu[j-1] = temp;
  } } }

  for(i=0; i<10; i++)
    printf("hairetsu[%d] = %2d, rank[%d] = %d\n", rank[i], hairetsu[i], rank[i], i);

  return 0;
}

402 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 21:18:19 ]
stdio.h
同じ値でもrankの中の値が違う

403 名前:392 mailto:sage [2009/03/18(水) 23:24:12 ]
適当な聞き方をしてしまってすみません。

ただ配列の値がでかい順や小さい順で順位をつけられないかなと思ったので。

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

404 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 23:37:12 ]
[1] 授業単元:プログラミング実習
[2] 問題 ガウス・ジョルダン法+ピボット選択法を用いて以下の連立1次方程式を解くプログラムを作成しなさい。
2x+3y+z=4
4x+y−3z=-2
−x+2y+2z=2

[3] 環境
 [3.1] OS: (UNIX)
 [3.2] : (gcc)
 [3.3] 言語: (C)
[4] 期限: ([09年3月19日12:00まで] )
[5] その他の制限: (なし)
よろしくおねがいします。



405 名前:デフォルトの名無しさん [2009/03/18(水) 23:50:24 ]
[1] 授業単元: アルゴリズム
[2] 問題文:ハッシュ探索(チェイン法)のプログラムを作成しなさい。
1・データファイル「j2」を読み込みなさい。
      2・任意の語彙がいくつ使われているか調べなさい。
      3.データの追加、削除、表示ができるようにしなさい。
      データはyahooのtopページをテキスト化したものとする。
      検索文字列:任意の文字(列)、(例として「配信」など)の使用回数を
      調べなさい。
      画面の表示例は、
      1:表示 2:検索(任意の文字検索&任意の文字の個数) 3:追加 4:削除 5:終了
   
      以上のことをふまえたプログラムをサンプルを変更して作りなさい。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 3月19日夕方まで
[5] その他の制限: ライブラリ関数はサンプル以外使用しない。



406 名前:デフォルトの名無しさん [2009/03/18(水) 23:51:43 ]
>>405
サンプルはこれです。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8989.txt

407 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 23:58:15 ]
よろしくお願いします。
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):タグ名をpricetype,メンバ名をteika,waribikiとする構造体kakakuとタグ名goodstype,
メンバ名をname[30],kakaku(←構造体)とする要素数10個の構造体配列goodsを作成し、商品名と定価を入力すると商品名、
定価、割り引き価格の一覧が表示されるプログラムを作成しなさい。」ただし、割引価格は、定価が1000円以上の場合は
定価の2割引、それ以外は1割引とする。また、表示するときはポインタを使用すること。
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)


408 名前:407 mailto:sage [2009/03/19(木) 00:04:18 ]
すいません環境等書き忘れていましたosはUNIX、コンパイラはgcc期限無期限その他制限なしでお願いします。

409 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 00:56:43 ]
>>399何を?

410 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 01:56:56 ]
>>392 >>396への追加。
#include <stdio.h>
#include <time.h>
int main(void)
{
  int hairetsu[10], rank[10], index[10], i, j, temp;
  srand(time(NULL));
  for(i=0; i<10; i++)
    rank[i] = i, hairetsu[i] = rand() % 100;

  for(i=0; i<9; i++) {
    for(j=9; j>i; j--) {
      if(hairetsu[rank[j]] < hairetsu[rank[j-1]]) {
        temp = rank[j];
        rank[j] = rank[j-1];
        rank[j-1] = temp;
  } } }
  for(i=0; i<10; i++) {
    printf("hairetsu[%d] = %2d, index[%d] = %d\n", i, hairetsu[i], i, rank[i]);
    index[i] = i;
  }

  for(i=0; i<9; i++) {
    for(j=9; j>i; j--) {
      if(rank[index[j]] < rank[index[j-1]]) {
        temp = index[j];
        index[j] = index[j-1];
        index[j-1] = temp;
  } } }
  for(i=0; i<10; i++) printf("rank[%d] = %d\n", i, index[i]);
  return 0;
}

411 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 04:17:31 ]
>>410
人のコードに無駄なもの付け足すなw

for(i=0; i<10; i++) index[rank[i]] = i;

で十分だろうが

412 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 07:01:36 ]
ありがとうございます。それで、2回もソートする必要ないですね。
やってみます。

413 名前:407 mailto:sage [2009/03/19(木) 07:59:06 ]
すみません言語c言語で期限は今日のお昼までにお願いします!

414 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 08:42:42 ]
>>407
#include<stdio.h>
#include<string.h>
#include<math.h>
typedef struct pricetype{int teika, waribiki;}kakaku;
typedef struct goodstype{char name[30];kakaku kakaku;}goods;
int get_waribiki(int price){
return (price>=1000)?round(price*0.8):round(price*0.9);
}
void print_goods(goods *p){
printf("name:%s teika:%d waribiki:%d\n", p->name, p->kakaku.teika, p->kakaku.waribiki);
}
int main(void){
goods goods[10];
int i, price, goods_num;
char buf[30], *p;
for(i=0;i<10;i++){
printf("Input name : ");
if(fgets(buf, sizeof(buf), stdin)==NULL) break;
if((p=strchr(buf, '\n'))) *p='\0';
strcpy(goods[i].name, buf);
input_price:
printf("Input price : ");
if(fgets(buf, sizeof(buf), stdin)==NULL) break;
if(sscanf(buf, "%d", &price)!=1) goto input_price;
goods[i].kakaku.teika=price;
goods[i].kakaku.waribiki=get_waribiki(price);
}
goods_num=i;
for(i=0;i<goods_num;i++) print_goods(goods+i);
return 0;
}

415 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 09:21:23 ]
#include <stdio.h>
#define N 10
struct goodstype {
  char name[30]; /* 商品名 */
  struct pricetype {
    int teika; /* 定価 */
    int waribiki; /* 割り引き価格 */
  } kakaku;
} goods[N];
int main(void)
{
  int i, num;
  struct goodstype *work;
  for(i=0; i<N; i++) {
    work = &goods[i];
    printf("商品名[%d/%d]?",i+1,N); fgets(work->name, 30, stdin);
    work->name[strlen(work->name)-1] = '\0';
    do {
      printf("定価[%d/%d]?",i+1,N); num = scanf("%d", &work->kakaku.teika); getchar();
    } while(num == 0);
    if(work->kakaku.teika >= 1000)
      work->kakaku.waribiki = work->kakaku.teika * (1-0.2);
    else
      work->kakaku.waribiki = work->kakaku.teika * (1-0.1);
  }
  printf("商品名,定価,割り引き価格\n");
  for(i=0; i<N; i++) {
    work = &goods[i];
    printf("\"%s\",%d,%d\n",work->name, work->kakaku.teika, work->kakaku.waribiki);
  }
  return 0;
} >>407



416 名前:407 mailto:sage [2009/03/19(木) 16:23:45 ]
>>415さんありがとうございます

417 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 01:16:32 ]
>>405
こうか?
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8991.txt

サンプルにファイルを読む関数がないんだが、「読み込みなさい」とか「調べなさい」は手作業?
探索や削除が間違っとる気がして変えたが、間違ってなかったらマクロを両方とも100に戻しといてくれ。

418 名前:417 mailto:sage [2009/03/20(金) 01:48:36 ]
ごめん。寝付けん暇つぶしでやっとったら、期限見落としとったorz

419 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 17:59:26 ]
ネタ投下キボン

420 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 19:57:17 ]
問題出す方も大変だ。
[1] 授業単元:
[2] 問題文(含コード&リンク): pc11.2ch.net/test/read.cgi/tech/1232627790/211

【 課題 】
課題1.
以下のような賭をすることを考えます.
  1. 開始時の所持金をA円とします.
  2. 目標とする金額をB円とします.
  3. さいころを投げて偶数の場合は1円を獲得,奇数の場合は1円を失います.
  4. 所持金が目標額のB円に到達すれば賭は終了,また所持金が0になった場合は破産で終了とします.
数学的な考察をすると,この賭の期待値はA円となります.つまり,何回もこの賭を続けていると,成功したり破産したりしますが,平均すると元の所持金しか得られないということです.
また,勝ち負けまでに投げるさいころの回数の平均は,(B-A)×Aとなります.
たとえば,開始時の所持金をA=8円,目標額をB=10円とすると,勝つ確率は8割,1ゲームあたり平均すると(10-8)×8=16回,さいころを投げることになります.
このことは,賭をしても儲からない,ことを意味していますね.
このことを確かめるプログラムを作成しなさい.

421 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:02:31 ]
入力した文字に対応するモールス信号を出力するプログラム、お願いします

422 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:12:20 ]
>>1

423 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:14:19 ]
>>421テンプレ嫁

424 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:17:15 ]
読んだけど課題じゃないし書くのめんどくさい

頼んだぜ

425 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 23:06:55 ]
>>424
・・・−−−・・・



426 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:39:28 ]
>このことは,賭をしても儲からない,ことを意味していますね.
ダウト。一部の人間が損をし(破産し)、一部の人間が儲かることを意味している。

427 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:46:19 ]
分散と試行回数による

428 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:51:43 ]
問題の問題点を指摘するルートに入ってるw

>問題出す方も大変だ。
本人も問題を出すつもりだったのだから,本望かw

429 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:54:33 ]
>また,勝ち負けまでに投げるさいころの回数の平均は,(B-A)×Aとなります.
マジで?

430 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 02:21:08 ]
[1] 授業単元:C言語
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
[3] 環境
 [3.1]OS:Win
 [3.2] VC 6.0
 [3.3]言語:C
[4]期限:3月24日
[5]その他の制限:main関数以外に自作の関数を利用する

どなたかよろしくお願いします。


431 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 02:39:02 ]
>>430
最高に間抜けだな

432 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 02:41:04 ]
前スレにあった気がする

433 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 02:42:14 ]
スレと時刻的に8992だろ?

434 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 02:57:50 ]
>>430
8992で合ってんなら
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8993.txt

435 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 03:38:25 ]
>>420
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int i, j, targetMoney, startMoney, currentMoney;
int totalGame = 10000, totalDice = 0, totalWin = 0;

srand(time(NULL));

printf("所持金を入力してください:");
scanf("%d", &startMoney);
printf("目標額を入力してください:");
scanf("%d", &targetMoney);

for(i=0; i<totalGame; i++) {
for(j=1, currentMoney = startMoney; ; j++) {
if((int)(rand() / (RAND_MAX + 1.0) * 6) & 1 ) currentMoney++;
else currentMoney--;
if(currentMoney == targetMoney) { totalWin++; break; }
if(currentMoney == 0) break;
}
totalDice += j;
}

printf("勝率%.2f%% 平均回数%.2f\n", 100.0 * totalWin / totalGame, (double)totalDice / totalGame);

return 0;
}



436 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:08:02 ]
>>434
すみません、8992です
ありがとうございました

437 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 02:29:33 ]
[1] 授業単元:基礎演習
[2] 問題文:ttp://www.pref.fukushima.jp/pc-concours/2009/03/pdf/2008honsen.pdf
10ページ目の6問目です
[3] 環境
 [3.1] OS:Win
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C

考えれば考えるほどわからなくなっていましました…
良ければよろしくお願いします。

438 名前:437 mailto:sage [2009/03/22(日) 02:38:00 ]
437です。

[4]期限:4月1日12:00
[5]その他制限:特になし

改めてお願いします。

439 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 02:56:56 ]
>>437
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8994.c

440 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 02:58:58 ]
あ、printfに\n入れるの忘れてた

441 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 03:05:55 ]
>>437
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n, *data, key, begin, end, mid, i;

    while(1){
        scanf("%d", &n);
        if(n <= 0) break;
        data = (int *)malloc(sizeof(int) * n);
        for(i = 0; i < n; i++) scanf("%d", &(data[i]));
        scanf("%d", &key);
        begin = 0; end = n - 1;
        for(i = 0; begin <= end; i++){
            mid = (begin + end) / 2;
            if(data[mid] == key){
                i++;
                break;
            }
            if(data[mid] < key) begin = mid + 1;
            else end = mid - 1;
        }
        printf("%d\n", i);
        free(data);
    }
    return 0;
}

442 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 03:06:27 ]
速いなorz

443 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 03:11:59 ]
i++を二箇所に書くくらいならi=1からはじめればいいのに。

444 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 03:23:14 ]
begin > endで抜けることを考えてi++2つとしたが、非常に頭悪いことをしてる気がする。

445 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 03:53:53 ]
こんなプログラムメンテしたくない。というか、プログラミングのセンスないね、チミ。



446 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 03:54:54 ]
>>445
先生のセンスをこのスレの奴らに見せ付けてやってください!

447 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 09:22:37 ]
>>445
うん、ないよ。でも、趣味でしかないし、1人でのんびりやれればいいから
下手の横好きでもいいかなー。

448 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:03:53 ]
>>445
メンテじゃなくて、先輩社員が作ったプログラムを触る仕事しかさせてもらえないんだろ?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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